feat(artifacts): add immutable artifact store

This commit is contained in:
2026-08-25 18:06:33 +03:00
parent 182bde8ac0
commit 497e1b740f
13 changed files with 2198 additions and 3 deletions
+77
View File
@@ -183,6 +183,83 @@ class RustBoundaryCheckTests(unittest.TestCase):
self.assertEqual(violations[0].source, "crank-config")
self.assertEqual(violations[0].dependency, "crank-core")
def test_rejects_artifact_store_dependency_on_workspace_crates(self) -> None:
packages = [
package(
self.root,
"crank-artifacts",
"crates/crank-artifacts",
["crank-core"],
),
package(self.root, "crank-core", "crates/crank-core"),
]
violations = self.checker.find_violations(metadata(packages, self.root))
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].source, "crank-artifacts")
self.assertEqual(violations[0].dependency, "crank-core")
def test_allows_artifact_store_dev_dependency_on_workspace_crates(self) -> None:
artifacts = package(
self.root,
"crank-artifacts",
"crates/crank-artifacts",
)
artifacts["dependencies"] = [dependency("crank-test-support", "dev")]
packages = [
artifacts,
package(
self.root,
"crank-test-support",
"crates/crank-test-support",
),
]
violations = self.checker.find_violations(metadata(packages, self.root))
self.assertEqual(violations, [])
def test_rejects_artifact_store_build_dependency_on_workspace_crates(self) -> None:
artifacts = package(
self.root,
"crank-artifacts",
"crates/crank-artifacts",
)
artifacts["dependencies"] = [dependency("crank-core", "build")]
packages = [
artifacts,
package(self.root, "crank-core", "crates/crank-core"),
]
violations = self.checker.find_violations(metadata(packages, self.root))
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].source, "crank-artifacts")
self.assertEqual(violations[0].dependency, "crank-core")
def test_mixed_dependency_kinds_produce_one_production_violation(self) -> None:
artifacts = package(
self.root,
"crank-artifacts",
"crates/crank-artifacts",
)
artifacts["dependencies"] = [
dependency("crank-core", "dev"),
dependency("crank-core"),
dependency("crank-core", "build"),
]
packages = [
artifacts,
package(self.root, "crank-core", "crates/crank-core"),
]
violations = self.checker.find_violations(metadata(packages, self.root))
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].source, "crank-artifacts")
self.assertEqual(violations[0].dependency, "crank-core")
def test_rejects_domain_and_runtime_dependencies_on_observability(self) -> None:
for source in ("crank-core", "crank-registry", "crank-runtime"):
packages = [