mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-10 10:55:33 +00:00
Fixes #10957. The builder --debug flag appears to be passed correctly, according to this test. This is a good test to keep, so won't remove it, but there is something else going on in the base test.
191 lines
6.8 KiB
Bash
Executable file
191 lines
6.8 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"
|
|
|
|
cd "$THIS_SCRIPT_PATH"
|
|
|
|
#----------------------------------------------------------------------
|
|
# First up, test the simple case with a default :project target
|
|
|
|
builder_describe - clean build
|
|
builder_parse "build"
|
|
if [[ "${_builder_chosen_action_targets[@]}" != "build:project" ]]; then
|
|
builder_die " Test: builder_parse, shorthand form 'build' should give us 'build:project"
|
|
fi
|
|
|
|
if builder_start_action build; then
|
|
echo "building project"
|
|
builder_finish_action success build
|
|
else
|
|
builder_die "FAIL: should have matched action build for :project"
|
|
fi
|
|
|
|
#----------------------------------------------------------------------
|
|
# Longhand builder_describe, builder_parse
|
|
|
|
builder_describe_parse_short_test() {
|
|
local actions="$1"
|
|
local targets="$2"
|
|
local expected="$3"
|
|
local parameters="$4"
|
|
echo "Testing: builder_describe, parse \"$actions\" \"$targets\" $parameters"
|
|
builder_describe "-" $actions $targets || builder_die "builder_describe died under curious circumstances"
|
|
builder_parse $parameters || builder_die "builder_parse died under curious circumstances"
|
|
if [[ "$expected" != "${_builder_chosen_action_targets[@]}" ]]; then
|
|
builder_die " Test: builder_describe, parse \"$actions\" \"$targets\" $parameters != \"$expected\""
|
|
fi
|
|
}
|
|
|
|
builder_describe_parse_short_test "clean build test" ":module :tools :app" "build:module build:tools build:app" "build"
|
|
builder_describe_parse_short_test "clean build test" ":module :tools :app" "build:app" "build:app"
|
|
builder_describe_parse_short_test "clean build test" ":module :tools :app" "build:app clean:module" "build:app clean:module"
|
|
builder_describe_parse_short_test "clean build test" ":module :tools :app :project" "clean:module clean:tools clean:app clean:project build:app build:project" "clean build:app build:project"
|
|
|
|
#----------------------------------------------------------------------
|
|
# Test different default action
|
|
|
|
builder_describe "-" clean build test 'default+' :module :tools :app
|
|
|
|
if [[ $_builder_default_action != "default" ]]; then
|
|
builder_die "FAIL: default action should have been 'default'"
|
|
fi
|
|
|
|
# Shorthand form where we don't have a :target (default is ":project")
|
|
if builder_start_action build; then
|
|
echo "building project"
|
|
builder_finish_action success build
|
|
else
|
|
builder_die "FAIL: should have matched action build for :project"
|
|
fi
|
|
|
|
if builder_start_action clean:app; then
|
|
echo "Cleaning <clean:app>"
|
|
builder_finish_action success clean:app
|
|
else
|
|
builder_die "FAIL: should have matched action clean for :app"
|
|
fi
|
|
|
|
if builder_start_action build:app; then
|
|
echo "Building app"
|
|
builder_finish_action success build:app
|
|
else
|
|
builder_die "FAIL: should have matched action build for :app"
|
|
fi
|
|
|
|
if builder_start_action build:module; then
|
|
builder_die "FAIL: should not have matched action build for :module"
|
|
fi
|
|
|
|
# "clean build test" ":app :engine" "--help"
|
|
|
|
builder_parse_test() {
|
|
local expected="$1"
|
|
local expected_options="$2"
|
|
shift
|
|
shift
|
|
local parameters="$@"
|
|
echo -e "${COLOR_BLUE}## Testing: builder_parse $parameters${COLOR_RESET}"
|
|
builder_parse $parameters || builder_die "builder_parse died under curious circumstances"
|
|
if [[ "$expected" != "${_builder_chosen_action_targets[@]}" ]]; then
|
|
builder_die " Test: builder_parse $parameters action:target != \"$expected\""
|
|
fi
|
|
if [[ "$expected_options" != "${_builder_chosen_options[@]}" ]]; then
|
|
builder_die " Test: builder_parse $parameters, options != \"$expected\""
|
|
fi
|
|
}
|
|
|
|
builder_describe \
|
|
"Tests the build-utils.sh builder functions. This is merely an example." \
|
|
"clean Cleans up any build artifacts" \
|
|
"build Do some building" \
|
|
"test Does some test stuff" \
|
|
":app" \
|
|
":engine Thomas, y'know" \
|
|
"--power,-p Use powerful mode" \
|
|
"--zoom,-z Use zoom mode" \
|
|
"--feature=FOO Enable feature foo"
|
|
|
|
#----------------------------------------------------------------------
|
|
# Test --options
|
|
|
|
builder_parse_test "clean:app test:engine" "--power" clean:app test:engine --power
|
|
|
|
if builder_has_option --power; then
|
|
echo "PASS: --power option found"
|
|
else
|
|
builder_die "FAIL: --power option not found"
|
|
fi
|
|
|
|
builder_parse_test "clean:app test:engine" "--zoom" clean:app test:engine -z
|
|
|
|
if builder_has_option --zoom; then
|
|
echo "PASS: --zoom option found"
|
|
else
|
|
builder_die "FAIL: --zoom option not found"
|
|
fi
|
|
|
|
#----------------------------------------------------------------------
|
|
# Test --feature <foo>
|
|
|
|
echo -e "${COLOR_BLUE}## Testing: builder_parse --feature xyzzy${COLOR_RESET}"
|
|
builder_parse --feature xyzzy
|
|
|
|
if builder_has_option --feature; then
|
|
if [[ $FOO == xyzzy ]]; then
|
|
echo "PASS: --feature option variable \$FOO has expected value 'xyzzy'"
|
|
else
|
|
builder_die "FAIL: --feature option variable \$FOO had value '$FOO' but should have had 'xyzzy'"
|
|
fi
|
|
else
|
|
builder_die "FAIL: --feature option not found"
|
|
fi
|
|
|
|
builder_parse -- one two "three four five"
|
|
if [[ ${builder_extra_params[0]} != "one" ]]; then
|
|
builder_die "FAIL: -- extra parameter 'one' not found"
|
|
fi
|
|
if [[ ${builder_extra_params[1]} != "two" ]]; then
|
|
builder_die "FAIL: -- extra parameter 'two' not found"
|
|
fi
|
|
if [[ ${builder_extra_params[2]} != "three four five" ]]; then
|
|
builder_die "FAIL: -- extra parameter 'three four five' not found"
|
|
fi
|
|
|
|
# Run tests based in separate scripts to facilitate their operation
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
# Due to the nature of the build-utils-traps tests, only one may be
|
|
# specified at a time; each ends with an `exit`.
|
|
echo -e "${COLOR_BLUE}## Running trap tests${COLOR_RESET}"
|
|
$THIS_SCRIPT_PATH/build-utils-traps.test.sh error
|
|
$THIS_SCRIPT_PATH/build-utils-traps.test.sh error-in-function
|
|
$THIS_SCRIPT_PATH/build-utils-traps.test.sh incomplete
|
|
|
|
echo -e "${COLOR_BLUE}## Running dependency tests${COLOR_RESET}"
|
|
"$THIS_SCRIPT_PATH/builder-deps.test.sh"
|
|
"$THIS_SCRIPT_PATH/dependencies/test.sh"
|
|
"$THIS_SCRIPT_PATH/trees/test.sh"
|
|
"$THIS_SCRIPT_PATH/debug-deps/test.sh"
|
|
|
|
echo -e "${COLOR_BLUE}## End external tests${COLOR_RESET}"
|
|
echo
|
|
|
|
(
|
|
# Finally, run with --help so we can see what it looks like; note:
|
|
# builder_parse calls `exit 0` on a --help run, so running in a subshell
|
|
echo -e "${COLOR_BLUE}## Testing --help${COLOR_RESET}"
|
|
builder_parse --no-color --help
|
|
) || builder_die "FAIL: builder-parse returned failure code $? unexpectedly"
|
|
|
|
echo -e "${COLOR_GREEN}======================================================${COLOR_RESET}"
|
|
echo -e "${COLOR_GREEN}All tests passed successfully${COLOR_RESET}"
|
|
echo -e "${COLOR_GREEN}======================================================${COLOR_RESET}"
|