diff options
author | Darrick J. Wong <djwong@kernel.org> | 2021-02-09 18:56:47 -0800 |
---|---|---|
committer | Eryu Guan <guaneryu@gmail.com> | 2021-03-07 22:36:15 +0800 |
commit | 49c09b5bad5effab656eb3dba1dc2df1f56a3ed9 (patch) | |
tree | a26dd7d63fe5e665db7c327d0b27aaadb28feda8 /check | |
parent | 3d79e8ea242462f8555455318147e662048b306c (diff) |
check: run tests in exactly the order specified
Introduce a new --exact-order switch to disable all sorting, filtering
of repeated lines, and shuffling of test order. The goal of this is to
be able to run tests in a specific order, namely to try to reproduce
test failures that could be the result of a -r(andomize) run getting
lucky.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
Diffstat (limited to 'check')
-rwxr-xr-x | check | 36 |
1 files changed, 28 insertions, 8 deletions
@@ -20,6 +20,7 @@ diff="diff -u" showme=false have_test_arg=false randomize=false +exact_order=false export here=`pwd` xfile="" subdir_xfile="" @@ -67,6 +68,7 @@ check options -n show me, do not run tests -T output timestamps -r randomize test order + --exact-order run tests in the exact order specified -i <n> iterate the test list <n> times -d dump test output to stdout -b brief test summary @@ -249,17 +251,22 @@ _prepare_test_list() trim_test_list $list done - # sort the list of tests into numeric order - if $randomize; then - if type shuf >& /dev/null; then - sorter="shuf" + # sort the list of tests into numeric order unless we're running tests + # in the exact order specified + if ! $exact_order; then + if $randomize; then + if type shuf >& /dev/null; then + sorter="shuf" + else + sorter="awk -v seed=$RANDOM -f randomize.awk" + fi else - sorter="awk -v seed=$RANDOM -f randomize.awk" + sorter="cat" fi + list=`sort -n $tmp.list | uniq | $sorter` else - sorter="cat" + list=`cat $tmp.list` fi - list=`sort -n $tmp.list | uniq | $sorter` rm -f $tmp.list } @@ -304,7 +311,20 @@ while [ $# -gt 0 ]; do -udiff) diff="$diff -u" ;; -n) showme=true ;; - -r) randomize=true ;; + -r) + if $exact_order; then + echo "Cannot specify -r and --exact-order." + exit 1 + fi + randomize=true + ;; + --exact-order) + if $randomize; then + echo "Cannnot specify --exact-order and -r." + exit 1 + fi + exact_order=true + ;; -i) iterations=$2; shift ;; -T) timestamp=true ;; -d) DUMP_OUTPUT=true ;; |