62 lines
1.4 KiB
Bash
62 lines
1.4 KiB
Bash
# shellcheck shell=bash
|
|
|
|
set -eu
|
|
|
|
# NOTE: If neither expectedArray nor expectedMap are declared, the test is meaningless.
|
|
# This precondition is checked in the Nix expression through an assert.
|
|
|
|
preScript() {
|
|
if isDeclaredArray valuesArray; then
|
|
# shellcheck disable=SC2154
|
|
nixLog "using valuesArray: $(declare -p valuesArray)"
|
|
fi
|
|
|
|
if isDeclaredMap valuesMap; then
|
|
# shellcheck disable=SC2154
|
|
nixLog "using valuesMap: $(declare -p valuesMap)"
|
|
fi
|
|
|
|
if isDeclaredArray expectedArray; then
|
|
# shellcheck disable=SC2154
|
|
nixLog "using expectedArray: $(declare -p expectedArray)"
|
|
declare -ag actualArray=()
|
|
fi
|
|
|
|
if isDeclaredMap expectedMap; then
|
|
# shellcheck disable=SC2154
|
|
nixLog "using expectedMap: $(declare -p expectedMap)"
|
|
declare -Ag actualMap=()
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
scriptPhase() {
|
|
runHook preScript
|
|
|
|
runHook script
|
|
|
|
runHook postScript
|
|
}
|
|
|
|
postScript() {
|
|
if isDeclaredArray expectedArray; then
|
|
nixLog "using actualArray: $(declare -p actualArray)"
|
|
nixLog "comparing actualArray against expectedArray"
|
|
assertEqualArray expectedArray actualArray
|
|
nixLog "actualArray matches expectedArray"
|
|
fi
|
|
|
|
if isDeclaredMap expectedMap; then
|
|
nixLog "using actualMap: $(declare -p actualMap)"
|
|
nixLog "comparing actualMap against expectedMap"
|
|
assertEqualMap expectedMap actualMap
|
|
nixLog "actualMap matches expectedMap"
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
runHook scriptPhase
|
|
touch "${out:?}"
|