feat(builder): append YYYYMMDD to test versions
This commit is contained in:
@@ -14,6 +14,10 @@ VERSION_SH = SCRIPTS / "version.sh"
|
||||
PUBLISH_DOCKER = SCRIPTS / "publish_docker.sh"
|
||||
VERSION_MK = SCRIPTS / "version.mk"
|
||||
|
||||
# Frozen build date so test versions are deterministic.
|
||||
SOURCE_DATE_EPOCH = "1704067200" # 2024-01-01T00:00:00Z
|
||||
BUILD_DATE = "20240101"
|
||||
|
||||
|
||||
def git(cwd: Path, *args: str, env: dict[str, str] | None = None) -> str:
|
||||
merged = os.environ.copy()
|
||||
@@ -48,6 +52,7 @@ def sha7(cwd: Path) -> str:
|
||||
|
||||
def version_sh(*args: str, cwd: Path, env: dict[str, str] | None = None) -> subprocess.CompletedProcess[str]:
|
||||
merged = os.environ.copy()
|
||||
merged["SOURCE_DATE_EPOCH"] = SOURCE_DATE_EPOCH
|
||||
if env:
|
||||
merged.update(env)
|
||||
return subprocess.run(
|
||||
@@ -113,12 +118,12 @@ class BuilderVersionTests(unittest.TestCase):
|
||||
self.assertEqual(result.returncode, 0, result.stderr)
|
||||
self.assertEqual(
|
||||
result.stdout.strip(),
|
||||
f"1.4.2~feat-login-v2.2+g{feature_sha}",
|
||||
f"1.4.2~{BUILD_DATE}.feat-login-v2.2+g{feature_sha}",
|
||||
)
|
||||
docker = version_sh("--docker", cwd=repo)
|
||||
self.assertEqual(
|
||||
docker.stdout.strip(),
|
||||
f"1.4.2-feat-login-v2.2.g{feature_sha}",
|
||||
f"1.4.2-{BUILD_DATE}.feat-login-v2.2.g{feature_sha}",
|
||||
)
|
||||
|
||||
def test_ignores_prerelease_and_app_tags(self) -> None:
|
||||
@@ -136,7 +141,7 @@ class BuilderVersionTests(unittest.TestCase):
|
||||
sha = sha7(repo)
|
||||
result = version_sh(cwd=repo)
|
||||
self.assertEqual(result.returncode, 0, result.stderr)
|
||||
self.assertEqual(result.stdout.strip(), f"1.0.0~main.1+g{sha}")
|
||||
self.assertEqual(result.stdout.strip(), f"1.0.0~{BUILD_DATE}.main.1+g{sha}")
|
||||
|
||||
def test_no_stable_tag(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as temp:
|
||||
@@ -148,7 +153,7 @@ class BuilderVersionTests(unittest.TestCase):
|
||||
sha = sha7(repo)
|
||||
result = version_sh(cwd=repo)
|
||||
self.assertEqual(result.returncode, 0, result.stderr)
|
||||
self.assertEqual(result.stdout.strip(), f"0.0.0~main+g{sha}")
|
||||
self.assertEqual(result.stdout.strip(), f"0.0.0~{BUILD_DATE}.main+g{sha}")
|
||||
|
||||
def test_detached_uses_env_branch(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as temp:
|
||||
@@ -164,7 +169,34 @@ class BuilderVersionTests(unittest.TestCase):
|
||||
git(repo, "checkout", "--detach", "HEAD")
|
||||
result = version_sh(cwd=repo, env={"BUILD_BRANCH": "ci_job"})
|
||||
self.assertEqual(result.returncode, 0, result.stderr)
|
||||
self.assertEqual(result.stdout.strip(), f"0.1.0~ci-job.1+g{sha}")
|
||||
self.assertEqual(result.stdout.strip(), f"0.1.0~{BUILD_DATE}.ci-job.1+g{sha}")
|
||||
|
||||
def test_source_date_epoch_changes_test_date(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as temp:
|
||||
repo = Path(temp) / "repo"
|
||||
repo.mkdir()
|
||||
init_repo(repo)
|
||||
(repo / "a").write_text("1\n", encoding="utf-8")
|
||||
commit(repo, "init")
|
||||
git(repo, "tag", "v1.0.0")
|
||||
(repo / "b").write_text("2\n", encoding="utf-8")
|
||||
commit(repo, "next")
|
||||
sha = sha7(repo)
|
||||
later = version_sh(cwd=repo, env={"SOURCE_DATE_EPOCH": "1725148800"})
|
||||
self.assertEqual(later.returncode, 0, later.stderr)
|
||||
self.assertEqual(later.stdout.strip(), f"1.0.0~20240901.main.1+g{sha}")
|
||||
|
||||
def test_official_version_ignores_build_date(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as temp:
|
||||
repo = Path(temp) / "repo"
|
||||
repo.mkdir()
|
||||
init_repo(repo)
|
||||
(repo / "a").write_text("1\n", encoding="utf-8")
|
||||
commit(repo, "init")
|
||||
git(repo, "tag", "-a", "v1.4.2", "-m", "1.4.2")
|
||||
result = version_sh(cwd=repo, env={"SOURCE_DATE_EPOCH": "1725148800"})
|
||||
self.assertEqual(result.returncode, 0, result.stderr)
|
||||
self.assertEqual(result.stdout.strip(), "1.4.2")
|
||||
|
||||
def test_override_official_rejected_off_tag(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as temp:
|
||||
|
||||
Reference in New Issue
Block a user