#!/bin/bash # # Usage: # ./time-test.sh set -o nounset set -o pipefail set -o errexit source test/common.sh proc time-tool { $[dirname $0]/time.py @Argv } proc test-tsv { local out=_tmp/time.tsv rm -f $out for i in [1 2 3] { time-tool --tsv -o $out -- sleep 0.0$(i) } cat $out } proc test-cannot-serialize { local out=_tmp/time2.tsv rm -f $out set +o errexit # Tab should fail time-tool --tsv -o $out --field $'\n' -- sleep 0.001; setglobal status = $Status test $status = 1 || fail "Unexpected status $status" # Newline should fail time-tool --tsv -o $out --field $'\t' -- sleep 0.001; setglobal status = $Status test $status = 1 || fail "Unexpected status $status" # Quote should fail time-tool --tsv -o $out --field '"' -- sleep 0.001; setglobal status = $Status test $status = 1 || fail "Unexpected status $status" # Backslash is OK time-tool --tsv -o $out --field '\' -- sleep 0.001; setglobal status = $Status test $status = 0 || fail "Unexpected status $status" # Space is OK, although canonical form would be " " time-tool --tsv -o $out --field ' ' -- sleep 0.001; setglobal status = $Status test $status = 0 || fail "Unexpected status $status" set -o errexit cat $out } proc all-passing { test-tsv test-cannot-serialize echo echo "All tests in $0 passed." } @Argv