1 parent
47c3cd7f65
commit
cfc74d9db6
33 files changed
+850
-244
No files matched your search
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Static/offline release checks for RustBox 0.2.5.
|
||||
"""Static/offline release checks for RustBox 0.2.6.
|
||||
|
||||
These checks intentionally avoid pretending to replace `cargo test`: they validate
|
||||
configuration, SQL migrations, Docker examples, query-catalog parity and release
|
||||
@@ -49,26 +49,30 @@ def extract_section(text: str, begin: str, end: str) -> str:
|
||||
|
||||
# Release/toolchain metadata.
|
||||
cargo = tomllib.loads(read("Cargo.toml"))
|
||||
require(cargo["package"]["version"] == "0.2.5", "Cargo package version is 0.2.5")
|
||||
require(cargo["package"]["version"] == "0.2.6", "Cargo package version is 0.2.6")
|
||||
require(cargo["package"]["rust-version"] == "1.99.1", "Cargo rust-version is 1.99.1")
|
||||
toolchain = tomllib.loads(read("rust-toolchain.toml"))
|
||||
require(toolchain["toolchain"]["channel"] == "1.99.1", "rust-toolchain pins Rust 1.99.1")
|
||||
require(not (ROOT / "Cargo.lock").exists(), "stale Cargo.lock is not shipped")
|
||||
require("cargo generate-lockfile" in read("scripts/build-release.sh"), "release script regenerates Cargo.lock")
|
||||
require((ROOT / "Cargo.lock").is_file(), "Cargo.lock is retained for reproducible application builds")
|
||||
lock = tomllib.loads(read("Cargo.lock"))
|
||||
lock_rustbox = next((pkg for pkg in lock.get("package", []) if pkg.get("name") == "rustbox"), {})
|
||||
require(lock_rustbox.get("version") == "0.2.6", "Cargo.lock RustBox package version is 0.2.6")
|
||||
require("cargo generate-lockfile" in read("scripts/build-release.sh"), "release script generates Cargo.lock when missing")
|
||||
release_script = read("scripts/build-release.sh")
|
||||
require("cargo test --locked" in release_script, "release script requires the full Rust test suite")
|
||||
require("cargo clippy --locked --all-targets -- -D warnings" in release_script, "release script requires warning-free Clippy")
|
||||
require("cargo build --release --locked" in release_script, "release script requires a locked release build")
|
||||
release_script_flat = " ".join(release_script.replace("\\", " ").split())
|
||||
require("cargo test --locked" in release_script_flat, "release script requires the full Rust test suite")
|
||||
require("cargo clippy --locked --all-targets -- -D warnings" in release_script_flat, "release script requires warning-free Clippy")
|
||||
require("cargo build --release --locked" in release_script_flat, "release script requires a locked release build")
|
||||
package_script = read("scripts/package-release.sh")
|
||||
require("./scripts/build-release.sh" in package_script, "release packaging runs the full build gate before creating artifacts")
|
||||
require("make_zip.py" in package_script and "sha256sum" in package_script, "release packaging creates ZIP and SHA256 only after the build gate")
|
||||
require("cargo generate-lockfile" in read(".github/workflows/ci.yml"), "CI regenerates Cargo.lock before --locked checks")
|
||||
require("validate-release-static.py" in read("scripts/build-release.sh"), "release script runs offline/static release gate")
|
||||
require("validate-release-static.py" in read(".github/workflows/ci.yml"), "CI runs offline/static release gate")
|
||||
require(read("README.md").startswith("# RustBox 0.2.5"), "README identifies RustBox 0.2.5")
|
||||
require(read("RELEASE-MANIFEST.txt").startswith("RustBox 0.2.5"), "release manifest identifies RustBox 0.2.5")
|
||||
require(read("RELEASE-VALIDATION.txt").startswith("RustBox 0.2.5"), "release validation identifies RustBox 0.2.5")
|
||||
require(read("docs/IMPLEMENTATION_STATUS.md").startswith("# RustBox 0.2.5"), "implementation status identifies RustBox 0.2.5")
|
||||
require(read("README.md").startswith("# RustBox 0.2.6"), "README identifies RustBox 0.2.6")
|
||||
require(read("RELEASE-MANIFEST.txt").startswith("RustBox 0.2.6"), "release manifest identifies RustBox 0.2.6")
|
||||
require(read("RELEASE-VALIDATION.txt").startswith("RustBox 0.2.6"), "release validation identifies RustBox 0.2.6")
|
||||
require(read("docs/IMPLEMENTATION_STATUS.md").startswith("# RustBox 0.2.6"), "implementation status identifies RustBox 0.2.6")
|
||||
require((ROOT / "docs/STORAGE_SEARCH_OPERATIONS.md").is_file(), "storage/search operations guide exists")
|
||||
require('imap_host = ""' not in read("config.dev.toml"), "development config does not override IMAP host with an invalid empty value")
|
||||
require(not re.search(r"(?m)^IMAP_HOST=\s*$", read(".env.example")), "environment example does not set an invalid empty IMAP host")
|
||||
|
||||
Reference in new issue
Block a user