A re-roll of v3[1] of this cleanup/refactoring of t0000-basic.sh series which addresses Carlo's comments on it, thanks for the review Carlo! I.e. the old 3/9 is squashed into a 2/7, and the assertion of non-duplicate tests is now ejected. I left a note in 7/7 that we may want it in the future, but for now let's punt on it. 1. https://lore.kernel.org/git/cover-v3-0.9-0000000000-20210805T103237Z-avarab@xxxxxxxxx/ 2. https://lore.kernel.org/git/CAPUEspg3pT1F5YMwGuwvmiyMGoYLUB0neHeunXnLxwc_G9zN-A@xxxxxxxxxxxxxx/ Ævar Arnfjörð Bjarmason (7): test-lib tests: move "run_sub_test" to a new lib-subtest.sh test-lib tests: split up "write and run" into two functions test-lib tests: don't provide a description for the sub-tests test-lib tests: avoid subshell for "test_cmp" for readability test-lib tests: refactor common part of check_sub_test_lib_test*() test-lib tests: assert 1 exit code, not non-zero test-lib tests: get rid of copy/pasted mock test code t/lib-subtest.sh | 95 ++++++++++ t/t0000-basic.sh | 448 +++++++++++++---------------------------------- 2 files changed, 213 insertions(+), 330 deletions(-) create mode 100644 t/lib-subtest.sh Range-diff against v3: 1: 3f34420a3e1 = 1: f915bc2ee77 test-lib tests: move "run_sub_test" to a new lib-subtest.sh 2: c9c16016da6 ! 2: 5b5038867df test-lib tests: split up "write and run" into two functions @@ Commit message it possible to do so. All the changes in t0000-basic.sh are a simple search-replacement. + Since the _run_sub_test_lib_test_common() function doesn't handle + running the test anymore we can do away with the sub-shell, which was + used to scope an "unset" and "export" shell variables. + Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> ## t/lib-subtest.sh ## @@ t/lib-subtest.sh +write_sub_test_lib_test () { + name="$1" descr="$2" # stdin is the body of the test code + mkdir "$name" && -+ ( -+ cd "$name" && -+ write_script "$name.sh" "$TEST_SHELL_PATH" <<-EOF && -+ test_description='$descr (run in sub test-lib) ++ write_script "$name/$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 -+ ' ++ 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" -+ ) ++ # Point to the t/test-lib.sh, which isn't in ../ as usual ++ . "\$TEST_DIRECTORY"/test-lib.sh ++ EOF ++ cat >>"$name/$name.sh" +} + _run_sub_test_lib_test_common () { @@ t/lib-subtest.sh: _run_sub_test_lib_test_common () { - 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 3: 76f57eadcdd < -: ----------- test-lib tests: stop using a subshell in write_sub_test_lib_test() 4: cde015c7dd0 = 3: 78177ce1729 test-lib tests: don't provide a description for the sub-tests 7: 48176f3e60c = 4: a581bff6e62 test-lib tests: avoid subshell for "test_cmp" for readability 8: fda7c4fbe34 = 5: 5e95484fb61 test-lib tests: refactor common part of check_sub_test_lib_test*() 9: dd0af5bd6ce = 6: 1e0a49c1a70 test-lib tests: assert 1 exit code, not non-zero 5: 7d1e6b9a3e4 ! 7: 68f8fabaa1e test-lib tests: get rid of copy/pasted mock test code @@ Commit message run_sub_test_lib_test*() functions let's fix those tests in t0000-basic.sh that were verbosely copy/pasting earlier tests. - In a subsequent commit we'll add an assertion to check whether we - caught all of the copy/pasting. + That we caught all of them was asserted with a follow-up change that's + not part of this series[1], we might add such a duplication check at + some later time, but for now let's just one-off remove the duplicate + boilerplate. + + 1. https://lore.kernel.org/git/patch-v3-6.9-bc79b29f3c-20210805T103237Z-avarab@xxxxxxxxx/ Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> 6: bc79b29f3cd < -: ----------- test-lib tests: assert no copy/pasted mock test code -- 2.33.0.1225.g9f062250122