summaryrefslogtreecommitdiff
path: root/tests/t0053-interface-cleanup.sh
blob: a38c98a81634ba9bb59cc65c2d78174f63fdb964 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/sh
set -eu
base="${TMPDIR-/tmp}/mcpu-cpp-interface-cleanup-$$"
mkdir -p "$base/wrapper" "$base/after"
trap 'rm -rf "$base"' EXIT HUP INT TERM

# --version identifies the independent MCPU languages preprocessor.
"$MCPU_CPP" --version > "$base/version"
printf '%s\n' 'mcpu-cpp 1.0.7' 'MCPU languages preprocessor' > "$base/version.expected"
cmp "$base/version.expected" "$base/version"

# --help contains the current public interface, including --object-suffix,
# and puts the stdin/stdout notes after the option list.
"$MCPU_CPP" --help > "$base/help"
grep '^mcpu-cpp 1\.0\.7$' "$base/help" >/dev/null
grep '^MCPU languages preprocessor$' "$base/help" >/dev/null
grep '^  --object-suffix SFX  set object suffix used for dependency targets$' "$base/help" >/dev/null
grep '^  --sys-root=PATH      use PATH as MCPU root and do not read configuration files$' "$base/help" >/dev/null
help_version_line=$(grep -n '^  --version ' "$base/help" | cut -d: -f1)
input_note_line=$(grep -n "^If input is omitted or '-', read standard input\.$" "$base/help" | cut -d: -f1)
test "$input_note_line" -gt "$help_version_line"

grep "^If output is omitted or '-', write standard output\.$" "$base/help" >/dev/null

# --object-suffix requires an argument and changes the default dependency target.
cat > "$base/object.c" <<'SRC'
int x;
SRC
if "$MCPU_CPP" --no-config --object-suffix > /dev/null 2> "$base/object.err"; then
  echo '--object-suffix unexpectedly accepted without an argument' >&2
  exit 1
fi
grep "argument missing after '--object-suffix'" "$base/object.err" >/dev/null
"$MCPU_CPP" --no-config --object-suffix .obj -M "$base/object.c" > "$base/object.d"
grep '^object\.obj:' "$base/object.d" >/dev/null