aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/017.sh7
-rw-r--r--tests/test_exit_code.sh2
-rw-r--r--tests/test_output.sh22
3 files changed, 30 insertions, 1 deletions
diff --git a/tests/017.sh b/tests/017.sh
new file mode 100644
index 0000000..504f7d8
--- /dev/null
+++ b/tests/017.sh
@@ -0,0 +1,7 @@
+set -e
+
+bash ../../test_output.sh "" <<'EOF'
+int main() {
+ return 0;
+}
+EOF
diff --git a/tests/test_exit_code.sh b/tests/test_exit_code.sh
index ad548e4..f49d468 100644
--- a/tests/test_exit_code.sh
+++ b/tests/test_exit_code.sh
@@ -11,7 +11,7 @@ exit_code=$?
expected=$1
-if [[ ! $exit_code -eq $expected ]]; then
+if [[ $exit_code -ne $expected ]]; then
echo "invalid exit code: expected $expected, but got $exit_code" >&2
exit 1
fi
diff --git a/tests/test_output.sh b/tests/test_output.sh
new file mode 100644
index 0000000..f4a4a20
--- /dev/null
+++ b/tests/test_output.sh
@@ -0,0 +1,22 @@
+cat > main.c
+
+"$p4dcc" < main.c > main.s
+if [[ $? -ne 0 ]]; then
+ cat main.s >&2
+ exit 1
+fi
+gcc -Wl,-z,noexecstack -o a.out main.s
+output="$(./a.out)"
+exit_code=$?
+
+if [[ $exit_code -ne 0 ]]; then
+ echo "invalid exit code: $exit_code" >&2
+ exit 1
+fi
+
+expected="$1"
+
+if [[ "$output" -ne "$expected" ]]; then
+ echo "invalid output: expected '$expected', but got '$output'" >&2
+ exit 1
+fi