mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-07 09:25:33 +00:00
This sets us up to run all common/ and resources/ tests from a single script, common/build.sh. This test will be run on each platform for all changes made in common/ or resources/. Also renamed files and paths for consistency in resources/ and updated tests accordingly.
175 lines
No EOL
4.3 KiB
Bash
Executable file
175 lines
No EOL
4.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -eu
|
|
|
|
## START STANDARD BUILD SCRIPT INCLUDE
|
|
# adjust relative paths as necessary
|
|
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
|
|
. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
|
|
# END STANDARD BUILD SCRIPT INCLUDE
|
|
|
|
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
|
|
|
##############
|
|
|
|
CHECK="${COLOR_GREEN}✔${COLOR_RESET}" # ✔
|
|
CROSS="${COLOR_RED}❌${COLOR_RESET}" # ❌
|
|
|
|
builder_describe \
|
|
"Provides actions useful for build-utils.sh trap-functionality unit testing.\nOnly one action may be set at a time." \
|
|
"error" \
|
|
"error-in-function" \
|
|
"incomplete"
|
|
|
|
builder_parse "$@"
|
|
|
|
###
|
|
|
|
HR="------------------------------------------------"
|
|
|
|
active_test=
|
|
error-test-matcher() {
|
|
ERR_CODE=$?
|
|
ALL_PASS=true
|
|
|
|
echo "$HR"
|
|
|
|
if [[ $ERR_CODE != 0 ]]; then
|
|
printf "${CHECK} Error reported to calling script\n"
|
|
else
|
|
printf "${CROSS} Error not reported to calling script\n"
|
|
ALL_PASS=false
|
|
fi
|
|
|
|
# output_logs will be accessible here. The report makes the most intuitive sense
|
|
# when presented here.
|
|
|
|
# Verify output logs have the expected output message.
|
|
|
|
if [[ "${output_logs:-}" =~ "raise-build-error failed" ]]; then
|
|
printf "${CHECK} Expected build-failure report was emitted\n"
|
|
else
|
|
printf "${CROSS} Expected build-failure report was not emitted\n"
|
|
ALL_PASS=false
|
|
fi
|
|
|
|
# Let's not re-trap ourselves from the trap!
|
|
trap - err exit
|
|
|
|
if [[ $ALL_PASS == true ]]; then
|
|
builder_finish_action success $active_test
|
|
exit 0
|
|
else
|
|
builder_finish_action failure $active_test
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Note: if this test is run, no other ones after it may execute!
|
|
if builder_start_action error; then
|
|
# clear base traps
|
|
trap - err
|
|
trap - exit
|
|
|
|
active_test=error
|
|
|
|
echo "$HR"
|
|
|
|
# The `|| true` disables any trap shenanigans.
|
|
# Needed to capture the log messages.
|
|
output_logs=`$THIS_SCRIPT_PATH/trap-test-builds.test.sh raise-build-error` || true
|
|
|
|
trap error-test-matcher err exit
|
|
|
|
# Relies on the `trap` - no further commands outside the handler will be processed.
|
|
# Also emits the log messages (but we can't capture them here)
|
|
$THIS_SCRIPT_PATH/trap-test-builds.test.sh raise-build-error
|
|
|
|
# In case the expected error isn't emitted. Will emit the report-failure.
|
|
error-test-matcher
|
|
fi
|
|
|
|
function-with-error() {
|
|
$THIS_SCRIPT_PATH/trap-test-builds.test.sh raise-build-error
|
|
}
|
|
|
|
# Note: if this test is run, no other ones after it may execute!
|
|
if builder_start_action error-in-function; then
|
|
# clear base traps
|
|
trap - err
|
|
trap - exit
|
|
|
|
active_test=error-in-function
|
|
|
|
echo "$HR"
|
|
|
|
# The `|| true` disables any trap shenanigans.
|
|
# Needed to capture the log messages.
|
|
output_logs=`function-with-error` || true
|
|
|
|
trap error-test-matcher err exit
|
|
|
|
# Relies on the `trap` - no further commands outside the handler will be processed.
|
|
# Also emits the log messages (but we can't capture them here)
|
|
function-with-error
|
|
|
|
# In case the expected error isn't emitted. Will emit the report-failure.
|
|
error-test-matcher
|
|
fi
|
|
|
|
########
|
|
|
|
warning-test-matcher() {
|
|
ERR_CODE=$?
|
|
ALL_PASS=true
|
|
|
|
echo "$HR"
|
|
|
|
if [[ $ERR_CODE == 0 ]]; then
|
|
printf "${CHECK} Error not reported to calling script\n"
|
|
else
|
|
printf "${CROSS} Error reported to calling script\n"
|
|
ALL_PASS=false
|
|
fi
|
|
|
|
# output_logs will be accessible here. The report makes the most intuitive sense
|
|
# when presented here.
|
|
|
|
# Verify output logs have the expected output message.
|
|
|
|
if [[ "${output_logs:-}" =~ "unreported-action:* never reported" ]]; then
|
|
printf "${CHECK} Expected warning report was emitted\n"
|
|
else
|
|
printf "${CROSS} Expected warning report was not emitted\n"
|
|
ALL_PASS=false
|
|
fi
|
|
|
|
# Let's not re-trap ourselves from the trap!
|
|
trap - err exit
|
|
|
|
if [[ $ALL_PASS == true ]]; then
|
|
builder_finish_action success incomplete
|
|
exit 0
|
|
else
|
|
builder_finish_action failure incomplete
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
if builder_start_action incomplete; then
|
|
# clear base traps
|
|
trap - err
|
|
trap - exit
|
|
|
|
echo "$HR"
|
|
|
|
# The `|| true` disables any trap shenanigans.
|
|
output_logs=`$THIS_SCRIPT_PATH/trap-test-builds.test.sh unreported-action` || true
|
|
|
|
trap warning-test-matcher err
|
|
|
|
# Relies on the `trap` - no further commands outside the handler will be processed.
|
|
$THIS_SCRIPT_PATH/trap-test-builds.test.sh unreported-action
|
|
|
|
warning-test-matcher
|
|
fi |