spiegel-keyman/resources/build/test/trees/build.sh
Marc Durdin cd8121ef65 chore(common): builder scripts now use /resources/build/builder.inc.sh
Note: there is a bit of potential confusion about the difference between
/resources/builder.inc.sh (the full implementation for builder scripts),
and /resources/build/builder.inc.sh (the source script that builder
scripts should always use).

This allows us to make assumptions that will always be true for builder
scripts that may not be true for other scripts, such as setting base
folder.
2024-05-02 15:54:31 +07:00

83 lines
No EOL
2.1 KiB
Bash
Executable file

#!/usr/bin/env bash
## START STANDARD BUILD SCRIPT INCLUDE
# adjust relative paths as necessary
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../../resources/build/builder.inc.sh"
# END STANDARD BUILD SCRIPT INCLUDE
# Test builder_describe_outputs and dependencies
builder_describe "parent test module" \
:child1 \
:child2 \
:child3=child3_renamed/src \
clean \
configure \
build \
test \
install \
error
builder_parse "$@"
if builder_is_child_build; then
builder_die "FAIL: builder_is_child_build should be false but was $_builder_is_child for the parent script"
else
builder_echo "PASS: builder_is_child_build is false ($_builder_is_child) for the parent script"
fi
# All child actions will generate files which we need to verify for test
rm -f ./child?.* ./dep.clean ./dep.configure ./dep.build
function test_present() {
local target=$1
local action=$2
local CHECK="${COLOR_GREEN}${COLOR_RESET}" # ✔
local CROSS="${COLOR_RED}${COLOR_RESET}" # ❌
if builder_has_action $action:$target; then
if [ ! -f $target.$action ]; then
builder_die "$CROSS FAIL: ./$target.$action to be present"
else
echo -e "$CHECK PASS: ./$target.$action found as expected"
fi
fi
}
# We need to specify the order to run actions in the parent script
#
# This may looks as simple as:
#
# builder_run_child_actions clean configure build test install
#
builder_run_child_actions clean
test_present child1 clean
test_present child2 clean
test_present child3 clean
builder_run_child_actions configure
test_present child1 configure
test_present child2 configure
test_present child3 configure
# Test chaining commands in a single statement
builder_run_child_actions build test
test_present child1 build
test_present child2 build
test_present child3 build
test_present child1 test
test_present child2 test
test_present child3 test
# We are customising the order in which child scripts are installed, so 2 goes before 1
builder_run_child_actions install:child2
test_present child2 install
builder_run_child_actions install:child1
test_present child1 install
builder_run_child_actions error
echo Done