"""Guard cache invalidation against stale documents and needless metadata rebuilds.""" from pathlib import Path import subprocess import tempfile import unittest from unittest.mock import patch import ci class FingerprintTests(unittest.TestCase): def test_build_inputs_invalidate_but_metadata_and_caches_do_not(self): with tempfile.TemporaryDirectory() as directory: root = Path(directory) subprocess.run(["git", "init", "-q", str(root)], check=True) (root / ".gitignore").write_text(".artifacts/\n**/.next/\n") doc = root / "content/docs/concept.md" doc.parent.mkdir(parents=True) doc.write_text("# Original\n") package = root / "package.json" package.write_text('{"private":true}\n') with patch.object(ci, "ROOT", root): original = ci.fingerprint() (root / "README.md").write_text("metadata only\n") cache = root / "apps/docs/.next/cache/state" cache.parent.mkdir(parents=True) cache.write_text("compiler cache\n") deploy = root / "scripts/deploy.py" deploy.parent.mkdir(parents=True) deploy.write_text("# deployment-only configuration\n") self.assertEqual(original, ci.fingerprint()) doc.write_text("# Updated\n") self.assertNotEqual(original, ci.fingerprint()) doc.write_text("# Original\n") package.write_text('{"private":true,"version":"2"}\n') self.assertNotEqual(original, ci.fingerprint()) package.write_text('{"private":true}\n') doc.rename(doc.with_name("renamed.md")) self.assertNotEqual(original, ci.fingerprint()) if __name__ == "__main__": unittest.main()