2014-09-08 10:11:34 +08:00
|
|
|
#!/usr/local/bin/fish
|
|
|
|
#
|
|
|
|
# Interactive tests using `expect`
|
|
|
|
|
|
|
|
function die
|
|
|
|
echo $argv[1] >&2
|
|
|
|
exit 1
|
|
|
|
end
|
|
|
|
|
|
|
|
for i in *.expect
|
|
|
|
rm -Rf tmp.interactive.config; or die "Couldn't remove tmp.interactive.config"
|
|
|
|
mkdir -p tmp.interactive.config/fish; or die "Couldn't create tmp.interactive.config/fish"
|
|
|
|
cp interactive.config tmp.interactive.config/fish/config.fish; or die "Couldn't create tmp.interactive.config/fish/config.fish"
|
|
|
|
|
|
|
|
begin
|
|
|
|
set -lx XDG_CONFIG_HOME $PWD/tmp.interactive.config
|
|
|
|
set -lx TERM dumb
|
2014-09-19 06:45:07 +08:00
|
|
|
expect -n -c 'source interactive.expect.rc' -f $i >$i.tmp.out ^$i.tmp.err
|
2014-09-08 10:11:34 +08:00
|
|
|
end
|
|
|
|
set -l tmp_status $status
|
|
|
|
set res ok
|
2014-09-19 06:45:07 +08:00
|
|
|
mv -f interactive.tmp.log $i.tmp.log
|
|
|
|
if not diff $i.tmp.out $i.out >/dev/null
|
2014-09-08 10:11:34 +08:00
|
|
|
set res fail
|
|
|
|
echo "Output differs for file $i. Diff follows:"
|
2014-09-19 06:45:07 +08:00
|
|
|
diff -u $i.tmp.out $i.out
|
2014-09-08 10:11:34 +08:00
|
|
|
end
|
|
|
|
|
2014-09-19 06:45:07 +08:00
|
|
|
if not diff $i.tmp.err $i.err >/dev/null
|
2014-09-08 10:11:34 +08:00
|
|
|
set res fail
|
|
|
|
echo "Error output differs for file $i. Diff follows:"
|
2014-09-19 06:45:07 +08:00
|
|
|
diff -u $i.tmp.err $i.err
|
2014-09-08 10:11:34 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
if test $tmp_status != (cat $i.status)
|
|
|
|
set res fail
|
|
|
|
echo "Exit status differs for file $i."
|
|
|
|
end
|
|
|
|
|
|
|
|
if test $res = ok
|
|
|
|
echo "File $i tested ok"
|
2014-09-19 06:45:07 +08:00
|
|
|
# clean up tmp files
|
|
|
|
rm -f $i.tmp.{err,out,log}
|
2014-09-08 10:11:34 +08:00
|
|
|
else
|
|
|
|
echo "File $i failed tests"
|
|
|
|
end
|
|
|
|
end
|