summaryrefslogtreecommitdiff
path: root/tests/t0042-diagnostics.sh
diff options
context:
space:
mode:
authorkx <kx@radix-linux.su>2026-10-01 12:02:28 +0300
committerkx <kx@radix-linux.su>2026-10-01 12:02:28 +0300
commitba1b04d64bdfaf377915b22f77520216ebe47674 (patch)
tree044343035c28b2b04ca9725f26e9b7c39342d19c /tests/t0042-diagnostics.sh
parent124b140798456778e2a96851cc7268aa9a726698 (diff)
downloadmcpu-cpp-1.0.2.tar.xz
Version 1.0.21.0.2
Diffstat (limited to 'tests/t0042-diagnostics.sh')
-rwxr-xr-xtests/t0042-diagnostics.sh68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/t0042-diagnostics.sh b/tests/t0042-diagnostics.sh
new file mode 100755
index 0000000..9510332
--- /dev/null
+++ b/tests/t0042-diagnostics.sh
@@ -0,0 +1,68 @@
+#!/bin/sh
+set -eu
+base="${TMPDIR-/tmp}/mcpu-cpp-diagnostics-$$"
+mkdir -p "$base"
+trap 'rm -rf "$base"' EXIT HUP INT TERM
+
+cat > "$base/warning.c" <<'EOT'
+#define MESSAGE expanded_message
+before
+#warning MESSAGE is not expanded
+#warning one /* removed comment */ two
+#warning "spaces inside string"
+#warning Привет мир
+#if 0
+#warning hidden warning
+#error hidden error
+#endif
+after
+EOT
+
+"$MCPU_CPP" --no-config "$base/warning.c" -o "$base/warning.out" 2>"$base/warning.err"
+
+grep '^before$' "$base/warning.out" >/dev/null
+grep '^after$' "$base/warning.out" >/dev/null
+! grep '#warning' "$base/warning.out" >/dev/null
+
+grep 'warning: #warning MESSAGE is not expanded$' "$base/warning.err" >/dev/null
+grep 'warning: #warning one two$' "$base/warning.err" >/dev/null
+grep 'warning: #warning "spaces inside string"$' "$base/warning.err" >/dev/null
+grep 'warning: #warning Привет мир$' "$base/warning.err" >/dev/null
+! grep 'expanded_message' "$base/warning.err" >/dev/null
+! grep 'hidden warning' "$base/warning.err" >/dev/null
+! grep 'hidden error' "$base/warning.err" >/dev/null
+
+"$MCPU_CPP" --no-config -dD "$base/warning.c" -o "$base/warning-dd.out" 2>"$base/warning-dd.err"
+grep '^#define MESSAGE expanded_message$' "$base/warning-dd.out" >/dev/null
+! grep '#warning' "$base/warning-dd.out" >/dev/null
+grep 'warning: #warning MESSAGE is not expanded$' "$base/warning-dd.err" >/dev/null
+
+cat > "$base/line.c" <<'EOT'
+#line 62 "generated.mc"
+#warning logical location
+ok
+EOT
+"$MCPU_CPP" --no-config "$base/line.c" -o "$base/line.out" 2>"$base/line.err"
+grep '^generated\.mc:62: warning: #warning logical location$' "$base/line.err" >/dev/null
+grep '^ok$' "$base/line.out" >/dev/null
+
+cat > "$base/error.c" <<'EOT'
+#define WHY replacement
+#error WHY failed
+never
+EOT
+if "$MCPU_CPP" --no-config "$base/error.c" -o "$base/error.out" 2>"$base/error.err"; then
+ echo '#error did not stop preprocessing' >&2
+ exit 1
+fi
+grep 'error: #error WHY failed$' "$base/error.err" >/dev/null
+! grep 'replacement' "$base/error.err" >/dev/null
+
+
+cat > "$base/empty.c" <<'EOT'
+#warning
+ok
+EOT
+"$MCPU_CPP" --no-config "$base/empty.c" -o "$base/empty.out" 2>"$base/empty.err"
+grep 'warning: #warning$' "$base/empty.err" >/dev/null
+grep '^ok$' "$base/empty.out" >/dev/null