diff options
| author | kx <kx@radix-linux.su> | 2026-10-01 12:02:28 +0300 |
|---|---|---|
| committer | kx <kx@radix-linux.su> | 2026-10-01 12:02:28 +0300 |
| commit | ba1b04d64bdfaf377915b22f77520216ebe47674 (patch) | |
| tree | 044343035c28b2b04ca9725f26e9b7c39342d19c /tests/t0042-diagnostics.sh | |
| parent | 124b140798456778e2a96851cc7268aa9a726698 (diff) | |
| download | mcpu-cpp-1.0.2.tar.xz | |
Version 1.0.21.0.2
Diffstat (limited to 'tests/t0042-diagnostics.sh')
| -rwxr-xr-x | tests/t0042-diagnostics.sh | 68 |
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 |
