From c7712dfd7bf2734e339096d3274f5b0bef2b4335 Mon Sep 17 00:00:00 2001 From: Tharre Date: Mon, 25 May 2015 16:20:27 +0200 Subject: Replace current tests with a hole new test suite This new test suite is based on just on do scripts, much like apenwarr's redo implementation has done it. This makes tests both simpler and free from any additional dependencies. The naming was also improved a lot. There are also a lot of new tests, and many more to be implemeted later. --- .travis.yml | 6 +----- test/always.bats | 9 --------- test/always.do | 7 ------- test/always_test.do | 3 --- test/args.bats | 8 -------- test/args_test.ext.do | 3 --- test/fail.bats | 13 ------------- test/fail.do | 2 -- test/no-output.bats | 8 -------- test/no-output_result.do | 1 - test/test_helper.bash | 12 ------------ tests/a--b,a--c,b--c/a.do | 3 +++ tests/a--b,a--c,b--c/all.do | 9 +++++++++ tests/a--b,a--c,b--c/b.do | 3 +++ tests/a--b,a--c,b--c/c.do | 1 + tests/a--b,a--c,b--d,c--d/a.do | 3 +++ tests/a--b,a--c,b--d,c--d/all.do | 9 +++++++++ tests/a--b,a--c,b--d,c--d/b.do | 3 +++ tests/a--b,a--c,b--d,c--d/c.do | 3 +++ tests/a--b,a--c,b--d,c--d/d.do | 1 + tests/a--c,b--c,c--d/a.do | 3 +++ tests/a--c,b--c,c--d/all.do | 10 ++++++++++ tests/a--c,b--c,c--d/b.do | 3 +++ tests/a--c,b--c,c--d/c.do | 3 +++ tests/a--c,b--c,c--d/d.do | 1 + tests/a--c,b--c/a.do | 3 +++ tests/a--c,b--c/all.do | 10 ++++++++++ tests/a--c,b--c/b.do | 3 +++ tests/a--c,b--c/c.do | 1 + tests/a/a.do | 1 + tests/a/all.do | 9 +++++++++ tests/all.do | 16 ++++++++++++++++ tests/always/a.do | 3 +++ tests/always/all.do | 9 +++++++++ tests/args/all.do | 5 +++++ tests/args/d/a.ext.do | 3 +++ tests/cwd/a.do | 3 +++ tests/cwd/all.do | 9 +++++++++ tests/cwd/d/b.do | 3 +++ tests/cwd/d/d/c.do | 1 + tests/dependency-loop/a.do | 3 +++ tests/dependency-loop/all.do | 5 +++++ tests/dependency-loop/b.do | 3 +++ tests/fail/all.do | 9 +++++++++ tests/fail/fail.do | 2 ++ tests/ifcreate/a.do | 11 +++++++++++ tests/ifcreate/all.do | 17 +++++++++++++++++ tests/include.sh | 7 +++++++ 48 files changed, 192 insertions(+), 71 deletions(-) delete mode 100644 test/always.bats delete mode 100644 test/always.do delete mode 100644 test/always_test.do delete mode 100644 test/args.bats delete mode 100644 test/args_test.ext.do delete mode 100644 test/fail.bats delete mode 100644 test/fail.do delete mode 100644 test/no-output.bats delete mode 100644 test/no-output_result.do delete mode 100644 test/test_helper.bash create mode 100644 tests/a--b,a--c,b--c/a.do create mode 100644 tests/a--b,a--c,b--c/all.do create mode 100644 tests/a--b,a--c,b--c/b.do create mode 100644 tests/a--b,a--c,b--c/c.do create mode 100644 tests/a--b,a--c,b--d,c--d/a.do create mode 100644 tests/a--b,a--c,b--d,c--d/all.do create mode 100644 tests/a--b,a--c,b--d,c--d/b.do create mode 100644 tests/a--b,a--c,b--d,c--d/c.do create mode 100644 tests/a--b,a--c,b--d,c--d/d.do create mode 100644 tests/a--c,b--c,c--d/a.do create mode 100644 tests/a--c,b--c,c--d/all.do create mode 100644 tests/a--c,b--c,c--d/b.do create mode 100644 tests/a--c,b--c,c--d/c.do create mode 100644 tests/a--c,b--c,c--d/d.do create mode 100644 tests/a--c,b--c/a.do create mode 100644 tests/a--c,b--c/all.do create mode 100644 tests/a--c,b--c/b.do create mode 100644 tests/a--c,b--c/c.do create mode 100644 tests/a/a.do create mode 100644 tests/a/all.do create mode 100644 tests/all.do create mode 100644 tests/always/a.do create mode 100644 tests/always/all.do create mode 100644 tests/args/all.do create mode 100644 tests/args/d/a.ext.do create mode 100644 tests/cwd/a.do create mode 100644 tests/cwd/all.do create mode 100644 tests/cwd/d/b.do create mode 100644 tests/cwd/d/d/c.do create mode 100644 tests/dependency-loop/a.do create mode 100644 tests/dependency-loop/all.do create mode 100644 tests/dependency-loop/b.do create mode 100644 tests/fail/all.do create mode 100644 tests/fail/fail.do create mode 100644 tests/ifcreate/a.do create mode 100644 tests/ifcreate/all.do create mode 100644 tests/include.sh diff --git a/.travis.yml b/.travis.yml index 2f50da2..d4bf599 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,8 +2,4 @@ language: c compiler: - gcc - clang -script: ./autogen.sh && ./configure && ./build.sh && bats test/ -before_install: - - sudo add-apt-repository ppa:duggan/bats --yes - - sudo apt-get update -qq - - sudo apt-get install -qq bats +script: ./autogen.sh && ./configure && ./build.sh && redo tests/all diff --git a/test/always.bats b/test/always.bats deleted file mode 100644 index b6dab37..0000000 --- a/test/always.bats +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bats - -load test_helper - -@test "check if do-files marked with always really do execute always" { - skip "Not yet implemented" - run redo always - [ $status -eq 0 ] && [ -e always_result ] -} diff --git a/test/always.do b/test/always.do deleted file mode 100644 index 12e16ba..0000000 --- a/test/always.do +++ /dev/null @@ -1,7 +0,0 @@ -redo-ifchange always_test - -rm always_result - -redo-ifchange always_test - -rm always_test # TODO: move this to test-helper.bash somehow diff --git a/test/always_test.do b/test/always_test.do deleted file mode 100644 index 425ab6d..0000000 --- a/test/always_test.do +++ /dev/null @@ -1,3 +0,0 @@ -redo-always -touch always_result -echo "Content" > $3 diff --git a/test/args.bats b/test/args.bats deleted file mode 100644 index 4115b66..0000000 --- a/test/args.bats +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bats - -load test_helper - -@test "check arguments supplied to .do files" { - run redo args_test.ext - [ $status -eq 0 ] -} diff --git a/test/args_test.ext.do b/test/args_test.ext.do deleted file mode 100644 index 588192a..0000000 --- a/test/args_test.ext.do +++ /dev/null @@ -1,3 +0,0 @@ -[ "$1" = "args_test.ext" ] && -[ "$2" = "args_test" ] && -[ "$3" != "args_test.ext" ] diff --git a/test/fail.bats b/test/fail.bats deleted file mode 100644 index 1a77ced..0000000 --- a/test/fail.bats +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bats - -load test_helper - -@test "invoke with target without do-file" { - run redo this-does-not-exist - [ $status -ne 0 ] -} - -@test "invoke with failing do-file" { - run redo fail - [ $status -ne 0 ] && [ ! -e fail_result ] -} diff --git a/test/fail.do b/test/fail.do deleted file mode 100644 index f87b607..0000000 --- a/test/fail.do +++ /dev/null @@ -1,2 +0,0 @@ -this-shall-fail -touch fail_result diff --git a/test/no-output.bats b/test/no-output.bats deleted file mode 100644 index c492e4f..0000000 --- a/test/no-output.bats +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bats - -load test_helper - -@test "produce empty result" { - run redo no-output_result - [ $status -eq 0 ] && [ ! -e no-output_result ] -} diff --git a/test/no-output_result.do b/test/no-output_result.do deleted file mode 100644 index b58ff30..0000000 --- a/test/no-output_result.do +++ /dev/null @@ -1 +0,0 @@ -touch $3 diff --git a/test/test_helper.bash b/test/test_helper.bash deleted file mode 100644 index 2c26399..0000000 --- a/test/test_helper.bash +++ /dev/null @@ -1,12 +0,0 @@ -teardown() { - rm -rf .redo/ - - # remove all helper files - for i in *.bats; do - rm -f "${i%%.*}_result" - done -} - -setup() { - cd "$BATS_TEST_DIRNAME" -} diff --git a/tests/a--b,a--c,b--c/a.do b/tests/a--b,a--c,b--c/a.do new file mode 100644 index 0000000..2a1b779 --- /dev/null +++ b/tests/a--b,a--c,b--c/a.do @@ -0,0 +1,3 @@ +redo-ifchange b c + +echo -n "a" | cat - b c > $3 diff --git a/tests/a--b,a--c,b--c/all.do b/tests/a--b,a--c,b--c/all.do new file mode 100644 index 0000000..dab5463 --- /dev/null +++ b/tests/a--b,a--c,b--c/all.do @@ -0,0 +1,9 @@ +. ../include.sh + +rm -rf a b c + +redo-ifchange a + +assert "a--b,a--c,b--c" << ! +[ "$(cat a)" = "abcc" ] +! diff --git a/tests/a--b,a--c,b--c/b.do b/tests/a--b,a--c,b--c/b.do new file mode 100644 index 0000000..fc555dd --- /dev/null +++ b/tests/a--b,a--c,b--c/b.do @@ -0,0 +1,3 @@ +redo-ifchange c + +echo -n "b" | cat - c > $3 diff --git a/tests/a--b,a--c,b--c/c.do b/tests/a--b,a--c,b--c/c.do new file mode 100644 index 0000000..6a816ac --- /dev/null +++ b/tests/a--b,a--c,b--c/c.do @@ -0,0 +1 @@ +echo -n "c" > $3 diff --git a/tests/a--b,a--c,b--d,c--d/a.do b/tests/a--b,a--c,b--d,c--d/a.do new file mode 100644 index 0000000..2a1b779 --- /dev/null +++ b/tests/a--b,a--c,b--d,c--d/a.do @@ -0,0 +1,3 @@ +redo-ifchange b c + +echo -n "a" | cat - b c > $3 diff --git a/tests/a--b,a--c,b--d,c--d/all.do b/tests/a--b,a--c,b--d,c--d/all.do new file mode 100644 index 0000000..db431a4 --- /dev/null +++ b/tests/a--b,a--c,b--d,c--d/all.do @@ -0,0 +1,9 @@ +. ../include.sh + +rm -rf a b c d + +redo-ifchange a + +assert "a--b,a--c,b--d,c--d" << ! +[ "$(cat a)" = "abdcd" ] +! diff --git a/tests/a--b,a--c,b--d,c--d/b.do b/tests/a--b,a--c,b--d,c--d/b.do new file mode 100644 index 0000000..9a2fbf4 --- /dev/null +++ b/tests/a--b,a--c,b--d,c--d/b.do @@ -0,0 +1,3 @@ +redo-ifchange d + +echo -n "b" | cat - d > $3 diff --git a/tests/a--b,a--c,b--d,c--d/c.do b/tests/a--b,a--c,b--d,c--d/c.do new file mode 100644 index 0000000..fdc64d8 --- /dev/null +++ b/tests/a--b,a--c,b--d,c--d/c.do @@ -0,0 +1,3 @@ +redo-ifchange d + +echo -n "c" | cat - d > $3 diff --git a/tests/a--b,a--c,b--d,c--d/d.do b/tests/a--b,a--c,b--d,c--d/d.do new file mode 100644 index 0000000..ab21832 --- /dev/null +++ b/tests/a--b,a--c,b--d,c--d/d.do @@ -0,0 +1 @@ +echo -n "d" > $3 diff --git a/tests/a--c,b--c,c--d/a.do b/tests/a--c,b--c,c--d/a.do new file mode 100644 index 0000000..34d0c7c --- /dev/null +++ b/tests/a--c,b--c,c--d/a.do @@ -0,0 +1,3 @@ +redo-ifchange c + +echo -n "a" | cat - c > $3 diff --git a/tests/a--c,b--c,c--d/all.do b/tests/a--c,b--c,c--d/all.do new file mode 100644 index 0000000..2c93c8a --- /dev/null +++ b/tests/a--c,b--c,c--d/all.do @@ -0,0 +1,10 @@ +. ../include.sh + +rm -rf a b c d + +redo-ifchange a b + +assert "a--c,b--c,c--d" << ! +[ "$(cat a)" = "acd" ] && +[ "$(cat b)" = "bcd" ] +! diff --git a/tests/a--c,b--c,c--d/b.do b/tests/a--c,b--c,c--d/b.do new file mode 100644 index 0000000..fc555dd --- /dev/null +++ b/tests/a--c,b--c,c--d/b.do @@ -0,0 +1,3 @@ +redo-ifchange c + +echo -n "b" | cat - c > $3 diff --git a/tests/a--c,b--c,c--d/c.do b/tests/a--c,b--c,c--d/c.do new file mode 100644 index 0000000..fdc64d8 --- /dev/null +++ b/tests/a--c,b--c,c--d/c.do @@ -0,0 +1,3 @@ +redo-ifchange d + +echo -n "c" | cat - d > $3 diff --git a/tests/a--c,b--c,c--d/d.do b/tests/a--c,b--c,c--d/d.do new file mode 100644 index 0000000..ab21832 --- /dev/null +++ b/tests/a--c,b--c,c--d/d.do @@ -0,0 +1 @@ +echo -n "d" > $3 diff --git a/tests/a--c,b--c/a.do b/tests/a--c,b--c/a.do new file mode 100644 index 0000000..34d0c7c --- /dev/null +++ b/tests/a--c,b--c/a.do @@ -0,0 +1,3 @@ +redo-ifchange c + +echo -n "a" | cat - c > $3 diff --git a/tests/a--c,b--c/all.do b/tests/a--c,b--c/all.do new file mode 100644 index 0000000..6724b38 --- /dev/null +++ b/tests/a--c,b--c/all.do @@ -0,0 +1,10 @@ +. ../include.sh + +rm -rf a b c + +redo-ifchange a b + +assert "a--c,b--c" << ! +[ "$(cat a)" = "ac" ] && +[ "$(cat b)" = "bc" ] +! diff --git a/tests/a--c,b--c/b.do b/tests/a--c,b--c/b.do new file mode 100644 index 0000000..fc555dd --- /dev/null +++ b/tests/a--c,b--c/b.do @@ -0,0 +1,3 @@ +redo-ifchange c + +echo -n "b" | cat - c > $3 diff --git a/tests/a--c,b--c/c.do b/tests/a--c,b--c/c.do new file mode 100644 index 0000000..6a816ac --- /dev/null +++ b/tests/a--c,b--c/c.do @@ -0,0 +1 @@ +echo -n "c" > $3 diff --git a/tests/a/a.do b/tests/a/a.do new file mode 100644 index 0000000..bdff4bb --- /dev/null +++ b/tests/a/a.do @@ -0,0 +1 @@ +echo "a" > $3 diff --git a/tests/a/all.do b/tests/a/all.do new file mode 100644 index 0000000..71e4a27 --- /dev/null +++ b/tests/a/all.do @@ -0,0 +1,9 @@ +. ../include.sh + +rm -rf a + +redo-ifchange a + +assert "a" << ! +[ "$(cat a)" = "a" ] +! diff --git a/tests/all.do b/tests/all.do new file mode 100644 index 0000000..e9644f9 --- /dev/null +++ b/tests/all.do @@ -0,0 +1,16 @@ +exec 1>/dev/null +redo fail/all +redo args/all +redo a/all +redo a--b,a--c,b--c/all +redo a--b,a--c,b--d,c--d/all +redo a--c,b--c/all +redo a--c,b--c,c--d/all +redo cwd/all +#redo default/all +#redo dodo/all +redo always/all +redo ifcreate/all +#redo parallel/all +#redo atomic/all +redo dependency-loop/all diff --git a/tests/always/a.do b/tests/always/a.do new file mode 100644 index 0000000..f412852 --- /dev/null +++ b/tests/always/a.do @@ -0,0 +1,3 @@ +redo-always + +date +%N > $3 diff --git a/tests/always/all.do b/tests/always/all.do new file mode 100644 index 0000000..de262ce --- /dev/null +++ b/tests/always/all.do @@ -0,0 +1,9 @@ +. ../include.sh + +rm -rf a + +redo a + +assert "always" << ! +[ "$(cat a)" = "??" ] +! diff --git a/tests/args/all.do b/tests/args/all.do new file mode 100644 index 0000000..d45bd96 --- /dev/null +++ b/tests/args/all.do @@ -0,0 +1,5 @@ +. ../include.sh + +assert "check arguments supplied to do-script" << ! +redo-ifchange d/a.ext +! diff --git a/tests/args/d/a.ext.do b/tests/args/d/a.ext.do new file mode 100644 index 0000000..fea7d74 --- /dev/null +++ b/tests/args/d/a.ext.do @@ -0,0 +1,3 @@ +[ "$1" = "a.ext" ] +[ "$2" = "a" ] +[ "$3" != "a.ext" ] diff --git a/tests/cwd/a.do b/tests/cwd/a.do new file mode 100644 index 0000000..e8455fe --- /dev/null +++ b/tests/cwd/a.do @@ -0,0 +1,3 @@ +redo-ifchange d/b + +echo -n "a" | cat - d/b > $3 diff --git a/tests/cwd/all.do b/tests/cwd/all.do new file mode 100644 index 0000000..866a9ca --- /dev/null +++ b/tests/cwd/all.do @@ -0,0 +1,9 @@ +. ../include.sh + +rm -rf a d/b d/d/c + +redo-ifchange a + +assert "cwd" << ! +[ "$(cat a)" == "abc" ] +! diff --git a/tests/cwd/d/b.do b/tests/cwd/d/b.do new file mode 100644 index 0000000..5a81363 --- /dev/null +++ b/tests/cwd/d/b.do @@ -0,0 +1,3 @@ +redo-ifchange d/c + +echo -n "b" | cat - d/c > $3 diff --git a/tests/cwd/d/d/c.do b/tests/cwd/d/d/c.do new file mode 100644 index 0000000..6a816ac --- /dev/null +++ b/tests/cwd/d/d/c.do @@ -0,0 +1 @@ +echo -n "c" > $3 diff --git a/tests/dependency-loop/a.do b/tests/dependency-loop/a.do new file mode 100644 index 0000000..180027f --- /dev/null +++ b/tests/dependency-loop/a.do @@ -0,0 +1,3 @@ +redo-ifchange b + +echo -n "a" | cat - b > $3 diff --git a/tests/dependency-loop/all.do b/tests/dependency-loop/all.do new file mode 100644 index 0000000..c5cb480 --- /dev/null +++ b/tests/dependency-loop/all.do @@ -0,0 +1,5 @@ +. ../include.sh + +assert "dependency-loop" << ! +timeout 1 redo-ifchange a >& /dev/null +! diff --git a/tests/dependency-loop/b.do b/tests/dependency-loop/b.do new file mode 100644 index 0000000..134228c --- /dev/null +++ b/tests/dependency-loop/b.do @@ -0,0 +1,3 @@ +redo-ifchange a + +echo -n "b" | cat - a > $3 diff --git a/tests/fail/all.do b/tests/fail/all.do new file mode 100644 index 0000000..9ad5ef8 --- /dev/null +++ b/tests/fail/all.do @@ -0,0 +1,9 @@ +. ../include.sh + +rm -rf fail + +redo-ifchange fail >& /dev/null || true + +assert "abort if do-script returns nonzero" << ! +[ ! -e fail ] +! diff --git a/tests/fail/fail.do b/tests/fail/fail.do new file mode 100644 index 0000000..2251510 --- /dev/null +++ b/tests/fail/fail.do @@ -0,0 +1,2 @@ +echo "fail" > $3 +exit 1 diff --git a/tests/ifcreate/a.do b/tests/ifcreate/a.do new file mode 100644 index 0000000..7f58ce4 --- /dev/null +++ b/tests/ifcreate/a.do @@ -0,0 +1,11 @@ + +if [ -e b ]; then + echo -n "b" | cat - a > $3 +else + redo-ifcreate b + if [ -e a ]; then + echo -n "a" | cat - a > $3 + else + echo "a" > $3 + fi +fi diff --git a/tests/ifcreate/all.do b/tests/ifcreate/all.do new file mode 100644 index 0000000..93fdaf9 --- /dev/null +++ b/tests/ifcreate/all.do @@ -0,0 +1,17 @@ +. ../include.sh + +rm -rf a b + +# we use redo here, as redo-ifchange is smart enough not to rebuild the same +# file twice in the same redo session + +redo a +redo a + +touch b + +redo a + +assert "ifcreate" << ! +[ "$(cat a)" = "baa" ] +! diff --git a/tests/include.sh b/tests/include.sh new file mode 100644 index 0000000..7052585 --- /dev/null +++ b/tests/include.sh @@ -0,0 +1,7 @@ +assert() { + if source /dev/stdin; then + echo "PASS: $1" >&2 + else + echo "FAIL: $1" >&2 + fi +} -- cgit v1.2.3-70-g09d2