1# shellcheck shell=bash 2 3set -eu 4 5# NOTE: If neither expectedArray nor expectedMap are declared, the test is meaningless. 6# This precondition is checked in the Nix expression through an assert. 7 8preScript() { 9 if isDeclaredArray valuesArray; then 10 # shellcheck disable=SC2154 11 nixLog "using valuesArray: $(declare -p valuesArray)" 12 fi 13 14 if isDeclaredMap valuesMap; then 15 # shellcheck disable=SC2154 16 nixLog "using valuesMap: $(declare -p valuesMap)" 17 fi 18 19 if isDeclaredArray expectedArray; then 20 # shellcheck disable=SC2154 21 nixLog "using expectedArray: $(declare -p expectedArray)" 22 declare -ag actualArray=() 23 fi 24 25 if isDeclaredMap expectedMap; then 26 # shellcheck disable=SC2154 27 nixLog "using expectedMap: $(declare -p expectedMap)" 28 declare -Ag actualMap=() 29 fi 30 31 return 0 32} 33 34scriptPhase() { 35 runHook preScript 36 37 runHook script 38 39 runHook postScript 40} 41 42postScript() { 43 if isDeclaredArray expectedArray; then 44 nixLog "using actualArray: $(declare -p actualArray)" 45 nixLog "comparing actualArray against expectedArray" 46 assertEqualArray expectedArray actualArray 47 nixLog "actualArray matches expectedArray" 48 fi 49 50 if isDeclaredMap expectedMap; then 51 nixLog "using actualMap: $(declare -p actualMap)" 52 nixLog "comparing actualMap against expectedMap" 53 assertEqualMap expectedMap actualMap 54 nixLog "actualMap matches expectedMap" 55 fi 56 57 return 0 58} 59 60runHook scriptPhase 61touch "${out:?}"