prepack/scripts/test-std-in.sh
Nikolai Tillmann 5ab6651fb5 Making diagnostics configurable. (#2521)
Summary:
Release notes: Adding CLI options --warnaserror, --diagnosticaserror, --nodiagnostic

This resolves #2517.
- --warnAsError: Turns all warnings into errors.
- --diagnosticAsError: Must be followed by a comma-separated list of non-fatal-error PPxxxx diagnostic codes that should get turned into (recoverable) errors.
- --noDiagnostic: Must be followed by a comma-separated list of non-fatal-error PPxxxx diagnostic codes that should get suppressed.

Adding tests.
Pull Request resolved: https://github.com/facebook/prepack/pull/2521

Differential Revision: D9616473

Pulled By: NTillmann

fbshipit-source-id: c66d7396005699d4d50f801a419fa4879bd8ffc4
2018-08-31 12:39:55 -07:00

83 lines
5.0 KiB
Bash

# Prepacks a correct stdin input. Checks if the output execution is correct.
cat ./test/std-in/StdIn.js | node ./bin/prepack.js --out StdIn-test.js > /dev/null
node ./StdIn-test.js | grep "Hello world from std-in" > /dev/null
if [[ $? -ne 0 ]]; then
echo "Stdin test failed: cat ./test/std-in/StdIn.js | node ./bin/prepack.js --out StdIn-test.js returned an error"
exit 1
fi
rm ./StdIn-test.js
# Prepacks an empty stdin input. Checks if it exits with signal 0.
echo "" | node ./bin/prepack.js 1>/dev/null 2>&1
if [[ $? -ne 0 ]]; then
echo "Stdin test failed: echo "" | node ./bin/prepack.js --out StdIn-test.js didn't exit with signal 0"
exit 1
fi
# Prepacks an empty stdin input. Checks if the correct error message is printed.
(echo "" | node ./bin/prepack.js 2>&1 1>/dev/null ) | grep "Prepack returned empty code." > /dev/null
# grep returns 0, even though prepack returned 1
if [[ $? -ne 0 ]]; then
echo "Stdin test failed: echo "" | node ./bin/prepack.js --out StdIn-test.js didn't exit with the expected signal 1."
exit 1
fi
# Prepacks a stdin with a syntax error. Checks if it exits with signal 1.
echo "{}()" | node ./bin/prepack.js 1>/dev/null 2>&1
if [[ $? -ne 1 ]]; then
echo "Stdin test failed:echo \"{}()\" | node ./bin/prepack.js --out StdInError-test.js didn't exit with the expected signal 1."
# If the test failed, rerun and show the output
echo "{}()" | node ./bin/prepack.js
exit 1
fi
# Prepacks a stdin with a syntax error. Checks if the correct error message is printed.
(echo "{}()" | node ./bin/prepack.js 2>&1 1>/dev/null ) | grep "In stdin(1:4) FatalError PP1004" > /dev/null
# grep returns 0, even though prepack returned 1
if [[ $? -ne 0 ]]; then
echo "Stdin test failed: echo \"{}()\" | node ./bin/prepack.js didn't return the expected error message."
# If the test failed, rerun and show the output
echo "{}()" | node ./bin/prepack.js
exit 1
fi
# Prepacks a stdin with an informational message that should get turned into an error. Checks if the correct error message is printed.
(echo "global.r = Math.random();" | node ./bin/prepack.js --mathRandomSeed 0 --diagnosticAsError PP8000 2>&1 1>/dev/null ) | grep "In stdin(1:12) RecoverableError PP8000" > /dev/null
# grep returns 0, even though prepack returned 1
if [[ $? -ne 0 ]]; then
echo "Stdin test failed: echo \"global.r = Math.random();\" | node ./bin/prepack.js --mathRandomSeed 0 --diagnosticAsError PP8000 didn't return the expected error message."
# If the test failed, rerun and show the output
echo "global.r = Math.random();" | node ./bin/prepack.js --mathRandomSeed 0 --diagnosticAsError PP8000
exit 1
fi
# Prepacks a stdin with an informational message that should get suppressed. Checks that the error code does not appear in output.
(echo "global.r = Math.random();" | node ./bin/prepack.js --mathRandomSeed 0 --noDiagnostic PP8000 2>&1 1>/dev/null ) | grep "In stdin(1:12) RecoverableError PP8000" > /dev/null
# grep returns 0, even though prepack returned 1
if [[ $? -eq 0 ]]; then
echo "Stdin test failed: echo \"global.r = Math.random();\" | node ./bin/prepack.js --mathRandomSeed 0 --noDiagnostic PP8000 didn't return the expected error message."
# If the test failed, rerun and show the output
echo "global.r = Math.random();" | node ./bin/prepack.js --mathRandomSeed 0 --noDiagnostic PP8000
exit 1
fi
# Prepacks a stdin with a warning message that should get turned into an error. Checks if the correct error message is printed.
(echo "let x; function f() { x = 1; } function g() { x = 2; } __optimize(f); __optimize(g);" | node ./bin/prepack.js --warnAsError 2>&1 1>/dev/null ) | grep "In stdin(1:27) RecoverableError PP1007" > /dev/null
# grep returns 0, even though prepack returned 1
if [[ $? -ne 0 ]]; then
echo "Stdin test failed: echo \"let x; function f() { x = 1; } function g() { x = 2; } __optimize(f); __optimize(g);\" | node ./bin/prepack.js --warnAsError didn't return the expected error message."
# If the test failed, rerun and show the output
echo "let x; function f() { x = 1; } function g() { x = 2; } __optimize(f); __optimize(g);" | node ./bin/prepack.js --warnAsError
exit 1
fi
# Prepacks a stdin with a warning message that should get turned into an error. Checks if the correct error message is printed.
(echo "let x; function f() { x = 1; } function g() { x = 2; } __optimize(f); __optimize(g);" | node ./bin/prepack.js --diagnosticAsError PP1007 2>&1 1>/dev/null ) | grep "In stdin(1:27) RecoverableError PP1007" > /dev/null
# grep returns 0, even though prepack returned 1
if [[ $? -ne 0 ]]; then
echo "Stdin test failed: echo \"let x; function f() { x = 1; } function g() { x = 2; } __optimize(f); __optimize(g);\" | node ./bin/prepack.js --diagnosticAsError PP1007 didn't return the expected error message."
# If the test failed, rerun and show the output
echo "let x; function f() { x = 1; } function g() { x = 2; } __optimize(f); __optimize(g);" | node ./bin/prepack.js --diagnosticAsError PP1007
exit 1
fi