53 lines
1.3 KiB
Bash
Executable File
53 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# ignore-license
|
|
|
|
# Run the reference lexer against libsyntax and compare the tokens and spans.
|
|
# If "// ignore-lexer-test" is present in the file, it will be ignored.
|
|
|
|
|
|
# Argument $1 is the file to check, $2 is the classpath to use, $3 is the path
|
|
# to the grun binary, $4 is the path to the verify binary, $5 is the path to
|
|
# RustLexer.tokens
|
|
if [ "${VERBOSE}" == "1" ]; then
|
|
set -x
|
|
fi
|
|
|
|
passed=0
|
|
failed=0
|
|
skipped=0
|
|
|
|
check() {
|
|
grep --silent "// ignore-lexer-test" "$1";
|
|
|
|
# if it's *not* found...
|
|
if [ $? -eq 1 ]; then
|
|
cd $2 # This `cd` is so java will pick up RustLexer.class. I couldn't
|
|
# figure out how to wrangle the CLASSPATH, just adding build/grammar
|
|
# didn't seem to have any effect.
|
|
if $3 RustLexer tokens -tokens < $1 | $4 $1 $5; then
|
|
echo "pass: $1"
|
|
passed=`expr $passed + 1`
|
|
else
|
|
echo "fail: $1"
|
|
failed=`expr $failed + 1`
|
|
fi
|
|
else
|
|
echo "skip: $1"
|
|
skipped=`expr $skipped + 1`
|
|
fi
|
|
}
|
|
|
|
for file in $(find $1 -iname '*.rs' ! -path '*/test/compile-fail*'); do
|
|
check "$file" $2 $3 $4 $5
|
|
done
|
|
|
|
printf "\ntest result: "
|
|
|
|
if [ $failed -eq 0 ]; then
|
|
printf "ok. $passed passed; $failed failed; $skipped skipped\n\n"
|
|
else
|
|
printf "failed. $passed passed; $failed failed; $skipped skipped\n\n"
|
|
exit 1
|
|
fi
|