[PATCH v4 0/7] test-lib tests: split off subtest code in t0000 into lib-subtest.sh
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Sep 22, 2021, 11:19 UTC
- Message-ID
- <cover-v4-0.7-00000000000-20210922T111734Z-avarab@gmail.com>
- In-Reply-To
- <cover-v3-0.9-0000000000-20210805T103237Z-avarab@gmail.com>
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@gmail.com/ 2. https://lore.kernel.org/git/CAPUEspg3pT1F5YMwGuwvmiyMGoYLUB0neHeunXnLxwc_G9zN-A@mail.gmail.com/
Æ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@gmail.com>
## 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@gmail.com/
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
6: bc79b29f3cd < -: ----------- test-lib tests: assert no copy/pasted mock test code-- 2.33.0.1225.g9f062250122