zeek/auxil/package-manager/testing/tests/dependency-ordering
Patrick Kelley 8fd444092b initial
2025-05-07 15:35:15 -04:00

93 lines
2.5 KiB
Plaintext

# This test puts in place a dependecy tree, installs the tree's root package,
# and verifies that package builds and testing honors the dependency ordering:
# depended-upon packages need to be built and available prior to dependers.
# The package tree:
# foo ---> bar ----> grault
# \ /
# baz -> corge
#
# To verify the ordering we use package executables that dependers require both
# in test_command and build_command. This leverages the fact that executables
# transparently appear in a bin/ directory in the test staging area. foo's build
# & test call executables that bar and baz install; baz's build & test call
# corge's executable, bar and corge call grault's executable.
# We trigger package tests in the below, for which zkg internally looks
# for zeek-config. So require a Zeek install:
# @TEST-REQUIRES: type zeek-config
# @TEST-EXEC: BUILDLOG=$(pwd)/build.log bash %INPUT
# After testing, the packages get installed up the dependency chain, installing
# their executables into the bin folder at the test's toplevel. That directory
# isn't automatically in the path, so add it.
# @TEST-EXEC: PATH=$(pwd)/bin:$PATH zkg install foo
# Verify the order and number of times the packages got built.
# @TEST-EXEC: btest-diff build.log
add_executable() {
echo "echo from $1" >$1
chmod +x $1
git add $1
}
(
cd packages/foo
cat >>zkg.meta <<EOF
build_command = bar && baz && echo "building foo" >>$BUILDLOG
test_command = bar && baz
depends =
bar *
baz *
EOF
git commit -am 'foo: depend on bar and baz, add commands'
)
(
cd packages/bar
cat >>zkg.meta <<EOF
build_command = grault && echo "building bar" >>$BUILDLOG
test_command = grault
executables = bar
depends = grault *
EOF
add_executable bar
git commit -am 'bar: depend on grault, add executable and commands'
)
(
cd packages/baz
cat >>zkg.meta <<EOF
build_command = corge && echo "building baz" >>$BUILDLOG
test_command = corge
executables = baz
depends = corge *
EOF
add_executable baz
git commit -am 'baz: depend on corge, add executable and commands'
)
(
cd packages/corge
cat >>zkg.meta <<EOF
build_command = grault && echo "building corge" >>$BUILDLOG
test_command = grault
executables = corge
depends = grault *
EOF
add_executable corge
git commit -am 'corge: depend on grault, add executable and commands'
)
(
cd packages/grault
cat >>zkg.meta <<EOF
build_command = echo "building grault" >>$BUILDLOG
executables = grault
EOF
add_executable grault
git commit -am 'grault: add executable and build command'
)