Skip to content

Commit

Permalink
Add a test case for parsing invalid octal numbers
Browse files Browse the repository at this point in the history
Add a test case with invalid octal numbers to 'tests/driver.sh'
to ensure the lexer/parser can detect invalid octal numbers.
  • Loading branch information
DrXiao committed Sep 16, 2024
1 parent 4b90420 commit 823dde3
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions tests/driver.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,31 @@ function try_output() {
try "$expected" "$expected_output" "$input"
}

# try_compile_error - test shecc with invalid C program
# Usage:
# - try_compile_error invalid_input_code
# compile "invalid_input_code" with shecc so that shecc generates a
# compilation error message.
#
# This function uses shecc to compile invalid code and obtains the exit
# code returned by shecc. The exit code must be a non-zero value to
# indicate that shecc has the ability to parse the invalid code and
# output an error message.
function try_compile_error() {
local input=$(cat)

local tmp_in="$(mktemp --suffix .c)"
local tmp_exe="$(mktemp)"
echo "$input" > "$tmp_in"
"$SHECC" -o "$tmp_exe" "$tmp_in"
local exit_code=$?

if [ 0 == $exit_code ]; then
echo "Error: compilation is passed."
exit 1
fi
}

function items() {
local expected="$1"
local input="$2"
Expand Down Expand Up @@ -238,6 +263,14 @@ int main() {
}
EOF

try_compile_error << EOF
int main() {
int a = 03, b = 01118, c = 091;
printf("%d %d %d\n", a, b, c);
return 0;
}
EOF

try_ 1 << EOF
int is_odd(int x);
Expand Down

0 comments on commit 823dde3

Please sign in to comment.