123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #!/bin/sh
- #
- # This -*- sh -*- script tests whether 'guild compile' leaves traces
- # behind it upon SIGINT.
- source="t-guild-compile-$$"
- target="$source.go"
- trap 'rm -f "$source" "$target"' EXIT
- cat > "$source"<<EOF
- (eval-when (expand load eval)
- ;; Wait for SIGINT, if the pause function exists.
- (if (defined? 'pause) (pause) (exit 77))
- ;; Then sleep so that the SIGINT handler gets to run
- ;; and compilation doesn't complete before it runs.
- (sleep 100))
- (define chbouib 42)
- EOF
- guild compile -o "$target" "$source" &
- pid="$!"
- # Send SIGINT.
- sleep 2 && kill -INT "$pid"
- # Wait for 'guild compile' to terminate.
- sleep 2
- # Check whether there are any leftovers.
- for file in "$target"*
- do
- if test "$file" != "${target}*"
- then
- echo "error: 'guild compile' failed to remove '$file'" >&2
- rm "$target"*
- kill "$pid"
- exit 1
- fi
- done
- if test -f "$target"
- then
- echo "error: '$target' produced" >&2
- exit 1
- fi
|