]> git.ipfire.org Git - thirdparty/git.git/commitdiff
test-lib tests: move "run_sub_test" to a new lib-subtest.sh
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Wed, 21 Jul 2021 22:57:40 +0000 (00:57 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 21 Jul 2021 23:27:04 +0000 (16:27 -0700)
Move the "check_sub_test_lib_test()" and its sister functions to a new
lib-subtest.sh.

In the future (not in this series) I'd like to test test-lib's output
in a more targeted and smaller test, and I'll need these functions to
do that.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/lib-subtest.sh [new file with mode: 0644]
t/t0000-basic.sh

diff --git a/t/lib-subtest.sh b/t/lib-subtest.sh
new file mode 100644 (file)
index 0000000..3cfe099
--- /dev/null
@@ -0,0 +1,86 @@
+_run_sub_test_lib_test_common () {
+       neg="$1" name="$2" descr="$3" # stdin is the body of the test code
+       shift 3
+
+       # intercept pseudo-options at the front of the argument list that we
+       # will not pass to child script
+       skip=
+       while test $# -gt 0
+       do
+               case "$1" in
+               --skip=*)
+                       skip=${1#--*=}
+                       shift
+                       ;;
+               *)
+                       break
+                       ;;
+               esac
+       done
+
+       mkdir "$name" &&
+       (
+               # Pretend we're not running under a test harness, whether we
+               # are or not. The test-lib output depends on the setting of
+               # this variable, so we need a stable setting under which to run
+               # the sub-test.
+               sane_unset HARNESS_ACTIVE &&
+               cd "$name" &&
+               write_script "$name.sh" "$TEST_SHELL_PATH" <<-EOF &&
+               test_description='$descr (run in sub test-lib)
+
+               This is run in a sub test-lib so that we do not get incorrect
+               passing metrics
+               '
+
+               # Point to the t/test-lib.sh, which isn't in ../ as usual
+               . "\$TEST_DIRECTORY"/test-lib.sh
+               EOF
+               cat >>"$name.sh" &&
+               export TEST_DIRECTORY &&
+               # The child test re-sources GIT-BUILD-OPTIONS and may thus
+               # override the test output directory. We thus pass it as an
+               # explicit override to the child.
+               TEST_OUTPUT_DIRECTORY_OVERRIDE=$(pwd) &&
+               export TEST_OUTPUT_DIRECTORY_OVERRIDE &&
+               GIT_SKIP_TESTS=$skip &&
+               export GIT_SKIP_TESTS &&
+               sane_unset GIT_TEST_FAIL_PREREQS &&
+               if test -z "$neg"
+               then
+                       ./"$name.sh" "$@" >out 2>err
+               else
+                       ! ./"$name.sh" "$@" >out 2>err
+               fi
+       )
+}
+
+run_sub_test_lib_test () {
+       _run_sub_test_lib_test_common '' "$@"
+}
+
+run_sub_test_lib_test_err () {
+       _run_sub_test_lib_test_common '!' "$@"
+}
+
+check_sub_test_lib_test () {
+       name="$1" # stdin is the expected output from the test
+       (
+               cd "$name" &&
+               test_must_be_empty err &&
+               sed -e 's/^> //' -e 's/Z$//' >expect &&
+               test_cmp expect out
+       )
+}
+
+check_sub_test_lib_test_err () {
+       name="$1" # stdin is the expected output from the test
+       # expected error output is in descriptor 3
+       (
+               cd "$name" &&
+               sed -e 's/^> //' -e 's/Z$//' >expect.out &&
+               test_cmp expect.out out &&
+               sed -e 's/^> //' -e 's/Z$//' <&3 >expect.err &&
+               test_cmp expect.err err
+       )
+}
index cb87768513c8035cb377e245df1628de23aec0ad..a3865dd77ba5e8448fca030ad9370884bf154c91 100755 (executable)
@@ -19,6 +19,7 @@ modification *should* take notice and update the test vectors here.
 '
 
 . ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-subtest.sh
 
 try_local_xy () {
        local x="local" y="alsolocal" &&
@@ -66,93 +67,6 @@ test_expect_success 'success is reported like this' '
        :
 '
 
-_run_sub_test_lib_test_common () {
-       neg="$1" name="$2" descr="$3" # stdin is the body of the test code
-       shift 3
-
-       # intercept pseudo-options at the front of the argument list that we
-       # will not pass to child script
-       skip=
-       while test $# -gt 0
-       do
-               case "$1" in
-               --skip=*)
-                       skip=${1#--*=}
-                       shift
-                       ;;
-               *)
-                       break
-                       ;;
-               esac
-       done
-
-       mkdir "$name" &&
-       (
-               # Pretend we're not running under a test harness, whether we
-               # are or not. The test-lib output depends on the setting of
-               # this variable, so we need a stable setting under which to run
-               # the sub-test.
-               sane_unset HARNESS_ACTIVE &&
-               cd "$name" &&
-               write_script "$name.sh" "$TEST_SHELL_PATH" <<-EOF &&
-               test_description='$descr (run in sub test-lib)
-
-               This is run in a sub test-lib so that we do not get incorrect
-               passing metrics
-               '
-
-               # Point to the t/test-lib.sh, which isn't in ../ as usual
-               . "\$TEST_DIRECTORY"/test-lib.sh
-               EOF
-               cat >>"$name.sh" &&
-               export TEST_DIRECTORY &&
-               # The child test re-sources GIT-BUILD-OPTIONS and may thus
-               # override the test output directory. We thus pass it as an
-               # explicit override to the child.
-               TEST_OUTPUT_DIRECTORY_OVERRIDE=$(pwd) &&
-               export TEST_OUTPUT_DIRECTORY_OVERRIDE &&
-               GIT_SKIP_TESTS=$skip &&
-               export GIT_SKIP_TESTS &&
-               sane_unset GIT_TEST_FAIL_PREREQS &&
-               if test -z "$neg"
-               then
-                       ./"$name.sh" "$@" >out 2>err
-               else
-                       ! ./"$name.sh" "$@" >out 2>err
-               fi
-       )
-}
-
-run_sub_test_lib_test () {
-       _run_sub_test_lib_test_common '' "$@"
-}
-
-run_sub_test_lib_test_err () {
-       _run_sub_test_lib_test_common '!' "$@"
-}
-
-check_sub_test_lib_test () {
-       name="$1" # stdin is the expected output from the test
-       (
-               cd "$name" &&
-               test_must_be_empty err &&
-               sed -e 's/^> //' -e 's/Z$//' >expect &&
-               test_cmp expect out
-       )
-}
-
-check_sub_test_lib_test_err () {
-       name="$1" # stdin is the expected output from the test
-       # expected error output is in descriptor 3
-       (
-               cd "$name" &&
-               sed -e 's/^> //' -e 's/Z$//' >expect.out &&
-               test_cmp expect.out out &&
-               sed -e 's/^> //' -e 's/Z$//' <&3 >expect.err &&
-               test_cmp expect.err err
-       )
-}
-
 test_expect_success 'pretend we have a fully passing test suite' '
        run_sub_test_lib_test full-pass "3 passing tests" <<-\EOF &&
        for i in 1 2 3