#!/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