aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-05-03 11:22:25 +0900
committernsfisis <nsfisis@gmail.com>2025-05-03 11:22:25 +0900
commitef07eff322a31ce0164283b531606e2827a64ded (patch)
tree3a5120716daa8843f626a1ecc4c849e3dd503cc1 /tests
parent441a78966e5fa230290dec0f96651fe88f45c36b (diff)
downloadP4Dcc-ef07eff322a31ce0164283b531606e2827a64ded.tar.gz
P4Dcc-ef07eff322a31ce0164283b531606e2827a64ded.tar.zst
P4Dcc-ef07eff322a31ce0164283b531606e2827a64ded.zip
add tests
Diffstat (limited to 'tests')
-rw-r--r--tests/001.sh14
-rw-r--r--tests/all.sh16
-rw-r--r--tests/run.sh18
3 files changed, 48 insertions, 0 deletions
diff --git a/tests/001.sh b/tests/001.sh
new file mode 100644
index 0000000..9245cf6
--- /dev/null
+++ b/tests/001.sh
@@ -0,0 +1,14 @@
+cat <<'EOF' > main.c
+int main() {
+ return 42;
+}
+EOF
+
+"$p4dcc" < main.c > main.s
+gcc -o a.out main.s
+set +e
+./a.out
+exit_code=$?
+set -e
+
+test $exit_code -eq 42
diff --git a/tests/all.sh b/tests/all.sh
new file mode 100644
index 0000000..4ff3688
--- /dev/null
+++ b/tests/all.sh
@@ -0,0 +1,16 @@
+set -e
+
+export p4dcc="../../../p4dcc"
+
+rm -rf tests/tmp
+mkdir -p tests/tmp
+for i in $(seq 1 999); do
+ testcase=$(printf '%03d' $i)
+ test_file="tests/$testcase.sh"
+ if [[ -f "$test_file" ]]; then
+ bash tests/run.sh "$testcase"
+ else
+ echo "All tests passed."
+ exit
+ fi
+done
diff --git a/tests/run.sh b/tests/run.sh
new file mode 100644
index 0000000..d92cc29
--- /dev/null
+++ b/tests/run.sh
@@ -0,0 +1,18 @@
+set -e
+
+export p4dcc="../../../p4dcc"
+
+export testcase=$1
+export tmp_dir="tests/tmp/$testcase"
+
+test_file="tests/$testcase.sh"
+
+if [[ ! -f "$test_file" ]]; then
+ echo "no test $testcase" >&2
+ exit 1
+fi
+
+echo "$test_file"
+mkdir -p "$tmp_dir"
+cd "$tmp_dir"
+bash "../../../$test_file"