ec0edac607
We will need this to deterministicly determine if the inline partials are registered in the order that the templates are parsed or the order that the templates are rendered.
59 lines
2.4 KiB
Bash
Executable File
59 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Runs the full suite of tests against LinkedIn DustJS and duster to compare the result
|
|
set -euo pipefail
|
|
IFS=$'\n\t'
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
failed_count=0
|
|
show_diff=0
|
|
|
|
while (( "$#" )); do
|
|
if [ "$1" = "--help" ]; then
|
|
cat<<EOF
|
|
Runs the full compliance test suite.
|
|
|
|
Options:
|
|
--show-diff Shows the difference between the two dust implementations
|
|
EOF
|
|
exit 0
|
|
elif [ "$1" = "--show-diff" ]; then
|
|
show_diff=1
|
|
else
|
|
(>&2 echo "Unrecognized option: $1")
|
|
exit 1
|
|
fi
|
|
shift
|
|
done
|
|
|
|
while read -r test_group; do
|
|
test_group_name=$(basename "$test_group")
|
|
while read -r test_case; do
|
|
test_case_file_name=$(basename "$test_case")
|
|
test_case_name=${test_case_file_name%.*}
|
|
set +e
|
|
(
|
|
if cmp -s <(xargs -a <(find "$test_group" -maxdepth 1 -mindepth 1 -type f -name 'main.dust'; find "$test_group" -maxdepth 1 -mindepth 1 -type f -name '*.dust' ! -name 'main.dust' | sort) node "$DIR/dustjs_shim.js" < "$test_case") <(xargs -a <(find "$test_group" -maxdepth 1 -mindepth 1 -type f -name 'main.dust'; find "$test_group" -maxdepth 1 -mindepth 1 -type f -name '*.dust' ! -name 'main.dust' | sort) "$DIR/../target/debug/duster-cli" < "$test_case"); then
|
|
echo "$test_group_name::$test_case_name PASSED"
|
|
else
|
|
echo "$test_group_name::$test_case_name FAILED"
|
|
if [ $show_diff -eq 1 ]; then
|
|
diff --label "dustjs-linked" --label "duster" <(xargs -a <(find "$test_group" -maxdepth 1 -mindepth 1 -type f -name 'main.dust'; find "$test_group" -maxdepth 1 -mindepth 1 -type f -name '*.dust' ! -name 'main.dust' | sort) node "$DIR/dustjs_shim.js" < "$test_case" 2>/dev/null ) <(xargs -a <(find "$test_group" -maxdepth 1 -mindepth 1 -type f -name 'main.dust'; find "$test_group" -maxdepth 1 -mindepth 1 -type f -name '*.dust' ! -name 'main.dust' | sort) "$DIR/../target/debug/duster-cli" < "$test_case" 2>/dev/null )
|
|
fi
|
|
exit 1
|
|
fi
|
|
)
|
|
if [ $? -ne 0 ]; then
|
|
failed_count=$((failed_count + 1))
|
|
fi
|
|
set -e
|
|
done <<<"$(find "$test_group" -maxdepth 1 -mindepth 1 -type f -name '*.json' | sort)"
|
|
done <<<"$(find "$DIR/test_cases" -maxdepth 1 -mindepth 1 -type d | sort)"
|
|
|
|
if [ $failed_count -ne 0 ]; then
|
|
echo "$failed_count failed tests"
|
|
exit 1
|
|
else
|
|
echo "All tests passed"
|
|
fi
|