#!/usr/bin/env bash # # Runs the full suite of tests against LinkedIn DustJS and duster to compare the result set -uo pipefail IFS=$'\n\t' DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" failed_count=0 find "$DIR/test_cases" -maxdepth 1 -mindepth 1 -type d | sort | while read test_group; do failed_count_in_group=0 test_group_name=$(basename "$test_group") find "$test_group" -maxdepth 1 -mindepth 1 -type f -name '*.json' | sort | while read test_case; do failed_count_in_testcase=0 test_case_file_name=$(basename "$test_case") test_case_name=${test_case_file_name%.*} ( if cmp --quiet <(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') node 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') ../target/debug/duster-cli < "$test_case"); then echo "$test_group_name::$test_case_name PASSED" else echo "$test_group_name::$test_case_name FAILED" diff <(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') node 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') ../target/debug/duster-cli < "$test_case") exit 1 fi ) if [ $? -ne 0 ]; then failed_count_in_testcase=$((failed_count_in_testcase + 1)) fi echo "testcase failed $failed_count_in_testcase" done echo "group failed: $failed_count_in_group" done echo "total failed $failed_count"