mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-25 17:04:01 +00:00
144 lines
6.6 KiB
Bash
Executable file
144 lines
6.6 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# ================================================================
|
|
# This is similar to reg_test/run except that this one is only ever run
|
|
# manually, not automatically as part of the build. It can be used to iterate on
|
|
# as-yet-unreleased features (in particular, features whose definition isn't
|
|
# finalized) without breaking the build.
|
|
# ================================================================
|
|
set -e
|
|
|
|
ourdir=`dirname $0`
|
|
srcdir=$ourdir/../..
|
|
pwd=`pwd`
|
|
|
|
try1=$pwd/../mlr # For autoconf builds, in-tree or out-of-tree
|
|
try2=$srcdir/c/mlr # For non-autoconf builds
|
|
if [ -x "$try1" ]; then
|
|
path_to_mlr=$try1
|
|
elif [ -x "$try2" ]; then
|
|
path_to_mlr=$try2
|
|
else
|
|
echo "$0: Could not find path to mlr executable." 1>&2
|
|
echo "Try 1: $try1" 1>&2
|
|
echo "Try 2: $try2" 1>&2
|
|
exit 1
|
|
fi
|
|
do_diff="true"
|
|
|
|
for arg; do
|
|
if [ "$1" = "--valgrind" ]; then
|
|
# Leak-check the test suite. Needs 'make mlrg' first.
|
|
# ../tools/clean-valg can be used to filter the output.
|
|
path_to_mlr="valgrind --leak-check=full ${path_to_mlr}g"
|
|
elif [ "$1" = "--nodiff" ]; then
|
|
do_diff="false"
|
|
fi
|
|
done
|
|
echo Using mlr executable $path_to_mlr
|
|
|
|
indir=$ourdir/input
|
|
expdir=$ourdir/expected
|
|
outdir=$pwd/output
|
|
outfile=$outdir/out-dev
|
|
expfile=$expdir/out-dev
|
|
mkdir -p $outdir
|
|
|
|
rm -f $outfile
|
|
touch $outfile
|
|
echo
|
|
|
|
num_passed=0
|
|
|
|
announce() {
|
|
echo >> $outfile
|
|
echo "================================================================" >> $outfile
|
|
echo "$@" >> $outfile
|
|
echo >> $outfile
|
|
}
|
|
|
|
mention() {
|
|
echo >> $outfile
|
|
echo ---------------------------------------------------------------- "$@" >> $outfile
|
|
}
|
|
|
|
run_mlr() {
|
|
# Use just "mlr" for info messages
|
|
echo mlr "$@"
|
|
echo mlr "$@" >> $outfile
|
|
# Use path to mlr for invoking the command
|
|
$path_to_mlr "$@" >> $outfile
|
|
echo >> $outfile
|
|
# since set -e
|
|
num_passed=`expr $num_passed + 1`
|
|
}
|
|
|
|
# ================================================================
|
|
announce FOO
|
|
|
|
mention PLUS
|
|
run_mlr --ofs tab put 'begin{}; $xy = $x + $y; $sy = @s + $y; $xt = $x + @t; $st = @s + @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3}; $xy = $x + $y; $sy = @s + $y; $xt = $x + @t; $st = @s + @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@t=4}; $xy = $x + $y; $sy = @s + $y; $xt = $x + @t; $st = @s + @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3;@t=4}; $xy = $x + $y; $sy = @s + $y; $xt = $x + @t; $st = @s + @t' $indir/typeof.dkvp
|
|
|
|
mention MINUS
|
|
run_mlr --ofs tab put 'begin{}; $xy = $x - $y; $sy = @s - $y; $xt = $x - @t; $st = @s - @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3}; $xy = $x - $y; $sy = @s - $y; $xt = $x - @t; $st = @s - @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@t=4}; $xy = $x - $y; $sy = @s - $y; $xt = $x - @t; $st = @s - @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3;@t=4}; $xy = $x - $y; $sy = @s - $y; $xt = $x - @t; $st = @s - @t' $indir/typeof.dkvp
|
|
|
|
mention TIMES
|
|
run_mlr --ofs tab put 'begin{}; $xy = $x * $y; $sy = @s * $y; $xt = $x * @t; $st = @s * @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3}; $xy = $x * $y; $sy = @s * $y; $xt = $x * @t; $st = @s * @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@t=4}; $xy = $x * $y; $sy = @s * $y; $xt = $x * @t; $st = @s * @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3;@t=4}; $xy = $x * $y; $sy = @s * $y; $xt = $x * @t; $st = @s * @t' $indir/typeof.dkvp
|
|
|
|
mention DIVIDE
|
|
run_mlr --ofs tab put 'begin{}; $xy = $x / $y; $sy = @s / $y; $xt = $x / @t; $st = @s / @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3}; $xy = $x / $y; $sy = @s / $y; $xt = $x / @t; $st = @s / @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@t=4}; $xy = $x / $y; $sy = @s / $y; $xt = $x / @t; $st = @s / @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3;@t=4}; $xy = $x / $y; $sy = @s / $y; $xt = $x / @t; $st = @s / @t' $indir/typeof.dkvp
|
|
|
|
mention INTEGER DIVIDE
|
|
run_mlr --ofs tab put 'begin{}; $xy = $x // $y; $sy = @s // $y; $xt = $x // @t; $st = @s // @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3}; $xy = $x // $y; $sy = @s // $y; $xt = $x // @t; $st = @s // @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@t=4}; $xy = $x // $y; $sy = @s // $y; $xt = $x // @t; $st = @s // @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3;@t=4}; $xy = $x // $y; $sy = @s // $y; $xt = $x // @t; $st = @s // @t' $indir/typeof.dkvp
|
|
|
|
mention REMAINDER
|
|
run_mlr --ofs tab put 'begin{}; $xy = $x % $y; $sy = @s % $y; $xt = $x % @t; $st = @s % @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3}; $xy = $x % $y; $sy = @s % $y; $xt = $x % @t; $st = @s % @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@t=4}; $xy = $x % $y; $sy = @s % $y; $xt = $x % @t; $st = @s % @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3;@t=4}; $xy = $x % $y; $sy = @s % $y; $xt = $x % @t; $st = @s % @t' $indir/typeof.dkvp
|
|
|
|
mention BITWISE AND
|
|
run_mlr --ofs tab put 'begin{}; $xy = $x & $y; $sy = @s & $y; $xt = $x & @t; $st = @s & @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3}; $xy = $x & $y; $sy = @s & $y; $xt = $x & @t; $st = @s & @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@t=4}; $xy = $x & $y; $sy = @s & $y; $xt = $x & @t; $st = @s & @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3;@t=4}; $xy = $x & $y; $sy = @s & $y; $xt = $x & @t; $st = @s & @t' $indir/typeof.dkvp
|
|
|
|
mention BITWISE OR
|
|
run_mlr --ofs tab put 'begin{}; $xy = $x | $y; $sy = @s | $y; $xt = $x | @t; $st = @s | @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3}; $xy = $x | $y; $sy = @s | $y; $xt = $x | @t; $st = @s | @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@t=4}; $xy = $x | $y; $sy = @s | $y; $xt = $x | @t; $st = @s | @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3;@t=4}; $xy = $x | $y; $sy = @s | $y; $xt = $x | @t; $st = @s | @t' $indir/typeof.dkvp
|
|
|
|
mention BITWISE XOR
|
|
run_mlr --ofs tab put 'begin{}; $xy = $x ^ $y; $sy = @s ^ $y; $xt = $x ^ @t; $st = @s ^ @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3}; $xy = $x ^ $y; $sy = @s ^ $y; $xt = $x ^ @t; $st = @s ^ @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@t=4}; $xy = $x ^ $y; $sy = @s ^ $y; $xt = $x ^ @t; $st = @s ^ @t' $indir/typeof.dkvp
|
|
run_mlr --ofs tab put 'begin{@s=3;@t=4}; $xy = $x ^ $y; $sy = @s ^ $y; $xt = $x ^ @t; $st = @s ^ @t' $indir/typeof.dkvp
|
|
|
|
# There is logical-operator testing in unit_test/test_rval_evaluators.c.
|
|
|
|
# ================================================================
|
|
cat $outfile
|
|
|
|
if [ "$do_diff" = "true" ]; then
|
|
echo
|
|
diff -I '^mlr ' -C5 $expfile $outfile
|
|
echo diff OK # since set -e
|
|
echo ALL REGRESSION TESTS PASSED
|
|
echo Tests completed: $num_passed
|
|
fi
|