#!/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; setvar status = ""$? test $status = 1 || fail "Unexpected status $status" # Newline should fail time-tool --tsv -o $out --field $'\t' -- sleep 0.001; setvar status = ""$? test $status = 1 || fail "Unexpected status $status" # Quote should fail time-tool --tsv -o $out --field '"' -- sleep 0.001; setvar status = ""$? test $status = 1 || fail "Unexpected status $status" # Backslash is OK time-tool --tsv -o $out --field '\' -- sleep 0.001; setvar 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; setvar 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