2013-05-08 02:30:08 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
2014-07-13 19:00:37 -05:00
|
|
|
set -e
|
|
|
|
|
|
2013-12-13 01:07:26 +00:00
|
|
|
if which valgrind > /dev/null; then
|
2014-06-18 19:49:38 -04:00
|
|
|
VALGRIND='valgrind --error-exitcode=1 -q --leak-check=full --suppressions=tests/onig.supp'
|
2013-12-13 01:07:26 +00:00
|
|
|
else
|
|
|
|
|
VALGRIND=
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
cat $@ | $VALGRIND ./jq --run-tests
|
2014-07-13 19:00:37 -05:00
|
|
|
|
|
|
|
|
d=
|
|
|
|
|
trap '[ -n "$d" ] && rm -rf "$d"' EXIT
|
|
|
|
|
d=`mktemp -d -t || true`
|
|
|
|
|
if [ -z "$d" ]; then
|
|
|
|
|
echo "Your OS does not support mktemp(1) -d" 1>&2
|
|
|
|
|
exit 0
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
cat > "$d/.jq" <<EOF
|
|
|
|
|
def foo: "baz";
|
|
|
|
|
def f: "wat";
|
|
|
|
|
def f: "foo";
|
|
|
|
|
def g: "bar";
|
|
|
|
|
def fg: f+g;
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
if [ "`HOME=$d $VALGRIND ./jq -nr fg`" != foobar ]; then
|
|
|
|
|
echo "Bug #479 appears to be back" 1>&2
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ `HOME=$d $VALGRIND ./jq --debug-dump-disasm -n fg | grep '^[a-z]' | wc -l` -gt 3 ]; then
|
|
|
|
|
echo "Binding too many defs into program" 1>&2
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|