mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-07 17:36:00 +00:00
102 lines
2.9 KiB
Bash
Executable file
102 lines
2.9 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -eu
|
|
|
|
# Include useful testing resource functions
|
|
## START STANDARD BUILD SCRIPT INCLUDE
|
|
# adjust relative paths as necessary
|
|
THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BASH_SOURCE[0]}")"
|
|
. "$(dirname "$THIS_SCRIPT")/../../../resources/build/build-utils.sh"
|
|
## END STANDARD BUILD SCRIPT INCLUDE
|
|
|
|
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
|
|
|
# We should work within the script's directory, not the one we were called in.
|
|
cd "$THIS_SCRIPT_PATH"
|
|
|
|
# A simple utility script to facilitate unit-testing for the LM Layer.
|
|
# It's rigged to be callable by NPM to facilitate testing during development when in other folders.
|
|
|
|
display_usage ( ) {
|
|
echo "test.sh [-skip-package-install] [-CI] [ -? | -h | -help]"
|
|
echo " -CI to perform continuous-integration friendly tests and reporting formatted for TeamCity"
|
|
echo " -? | -h | -help to display this help information"
|
|
echo " -skip-package-install to bypass refreshing dependencies. Useful when called by scripts that pre-fetch"
|
|
echo ""
|
|
exit 0
|
|
}
|
|
|
|
# Defaults
|
|
FLAGS=
|
|
CI_REPORTING=0
|
|
FETCH_DEPS=true
|
|
|
|
# Parse args
|
|
while [[ $# -gt 0 ]] ; do
|
|
key="$1"
|
|
case $key in
|
|
-skip-package-install|-S)
|
|
FETCH_DEPS=false
|
|
;;
|
|
-h|-help|-\?)
|
|
display_usage
|
|
exit
|
|
;;
|
|
-CI)
|
|
CI_REPORTING=1
|
|
;;
|
|
esac
|
|
shift # past argument
|
|
done
|
|
|
|
if [ $FETCH_DEPS = true ]; then
|
|
verify_npm_setup
|
|
fi
|
|
|
|
test-headless ( ) {
|
|
if (( CI_REPORTING )); then
|
|
FLAGS="$FLAGS --reporter mocha-teamcity-reporter"
|
|
fi
|
|
|
|
# Poor Man's Modules until we support ES6 throughout
|
|
PREPEND=./tests/cases/prepend.js
|
|
rm -f $PREPEND
|
|
for n in tests/cases/*.js; do
|
|
echo $n
|
|
(cat ../web-environment/build/index.js; echo) > $PREPEND
|
|
(cat ../utils/build/index.js; echo) >> $PREPEND
|
|
(cat ../recorder/build/nodeProctor/index.js; echo) >> $PREPEND
|
|
(cat ../keyboard-processor/build/index.js; echo) >> $PREPEND
|
|
(cat $n; echo) >> $PREPEND;
|
|
npm run mocha -- --recursive $FLAGS $PREPEND || die
|
|
rm $PREPEND
|
|
done
|
|
|
|
# Poor Man's Modules until we support ES6 throughout
|
|
PREPEND=./tests/cases/engine/prepend.js
|
|
rm -f $PREPEND
|
|
for n in tests/cases/engine/*.js; do
|
|
echo $n
|
|
(cat ../web-environment/build/index.js; echo) > $PREPEND
|
|
(cat ../utils/build/index.js; echo) >> $PREPEND
|
|
(cat ../recorder/build/nodeProctor/index.js; echo) >> $PREPEND
|
|
(cat ../keyboard-processor/build/index.js; echo) >> $PREPEND
|
|
(cat $n; echo) >> $PREPEND;
|
|
npm run mocha -- --recursive $FLAGS $PREPEND || die
|
|
rm $PREPEND
|
|
done
|
|
|
|
# npm run mocha -- --recursive $FLAGS ./tests/cases/
|
|
}
|
|
|
|
if [ $FETCH_DEPS = true ]; then
|
|
# Build test dependency
|
|
pushd "$KEYMAN_ROOT/common/web/recorder/src"
|
|
./build.sh -skip-package-install || fail "recorder-core compilation failed."
|
|
popd
|
|
fi
|
|
|
|
# Run headless (browserless) tests.
|
|
echo_heading "Running Keyboard Processor test suite"
|
|
test-headless || fail "Keyboard Processor tests failed!"
|
|
|