Make gate scripts handle table-form dependencies and fail closed
Implemented-By: Laguna S 2.1 (OpenCode)
This commit is contained in:
@@ -63,6 +63,15 @@ tree "$tmp/c-dev"; printf '\n[dev-dependencies]\nbrokerd.workspace = true\n' >>
|
||||
expect fail "role dev-depends on another role" check-crate-deps.sh "$tmp/c-dev"
|
||||
tree "$tmp/c-proto"; manifest "$tmp/c-proto/crates/proto" proto 'loopd.workspace = true'
|
||||
expect fail "proto depends on a role" check-crate-deps.sh "$tmp/c-proto"
|
||||
# A dependency can also be written as its own table: [dependencies.NAME]
|
||||
tree "$tmp/c-sect"; printf '\n[dependencies.brokerd]\npath = "../brokerd"\n' >> "$tmp/c-sect/crates/loopd/Cargo.toml"
|
||||
expect fail "role depends on another role, written as a table" check-crate-deps.sh "$tmp/c-sect"
|
||||
tree "$tmp/c-sectw"; printf '\n[dev-dependencies.brokerd]\nworkspace = true\n' >> "$tmp/c-sectw/crates/loopd/Cargo.toml"
|
||||
expect fail "role dev-depends on another role, written as a table" check-crate-deps.sh "$tmp/c-sectw"
|
||||
tree "$tmp/c-dot"; manifest "$tmp/c-dot/crates/loopd" loopd 'proto.workspace = true' 'brokerd.path = "../brokerd"'
|
||||
expect fail "role depends on another role, written with a dotted key" check-crate-deps.sh "$tmp/c-dot"
|
||||
tree "$tmp/c-sectok"; manifest "$tmp/c-sectok/crates/loopd" loopd; printf '\n[dependencies.proto]\nworkspace = true\n' >> "$tmp/c-sectok/crates/loopd/Cargo.toml"
|
||||
expect pass "role depends on proto, written as a table" check-crate-deps.sh "$tmp/c-sectok"
|
||||
|
||||
# check-dep-docs.sh
|
||||
tree "$tmp/d-ok"
|
||||
@@ -73,6 +82,18 @@ tree "$tmp/d-prose"; printf 'rand = "0.9"\n' >> "$tmp/d-prose/Cargo.toml"; print
|
||||
expect fail "a mention in prose is not a table row" check-dep-docs.sh "$tmp/d-prose"
|
||||
tree "$tmp/d-loose"; manifest "$tmp/d-loose/crates/loopd" loopd 'proto.workspace = true' 'rand = "0.9"'
|
||||
expect fail "crate declares a dependency outside the workspace table" check-dep-docs.sh "$tmp/d-loose"
|
||||
tree "$tmp/d-sect"; printf '\n[dependencies.rand]\nversion = "0.9"\n' >> "$tmp/d-sect/crates/loopd/Cargo.toml"
|
||||
expect fail "table-form dependency without workspace = true" check-dep-docs.sh "$tmp/d-sect"
|
||||
tree "$tmp/d-sectok"; printf '\n[dependencies.serde]\nworkspace = true\nfeatures = ["derive"]\n' >> "$tmp/d-sectok/crates/loopd/Cargo.toml"
|
||||
expect pass "table-form dependency with workspace = true" check-dep-docs.sh "$tmp/d-sectok"
|
||||
|
||||
# A check that cannot find what it checks must fail, not pass.
|
||||
mkdir -p "$tmp/empty"
|
||||
expect fail "check-lines without a crates directory" check-lines.sh "$tmp/empty"
|
||||
expect fail "check-crate-deps without a crates directory" check-crate-deps.sh "$tmp/empty"
|
||||
expect fail "check-dep-docs without a crates directory" check-dep-docs.sh "$tmp/empty"
|
||||
tree "$tmp/d-nodoc"; rm "$tmp/d-nodoc/docs/dependencies.md"
|
||||
expect fail "check-dep-docs without docs/dependencies.md" check-dep-docs.sh "$tmp/d-nodoc"
|
||||
|
||||
if [ "$fails" -ne 0 ]; then
|
||||
echo "test-gate-scripts: $fails failure(s)" >&2
|
||||
|
||||
Reference in New Issue
Block a user