Skip to content

Commit 0b7d324

Browse files
dschogitster
authored andcommitted
t7406: avoid failures solely due to timing issues
Regression tests are automated tests which try to ensure a specific behavior. The idea is: if the test case fails, the behavior indicated in the test case's title regressed. If a regression test that fails, even occasionally, for any reason other than to indicate the particular regression(s) it tries to catch, it is less useful than when it really only fails when there is a bug in the (non-test) code that needs to be fixed. In the instance of the test case "submodule update --init --recursive from subdirectory" of the script t7406-submodule-update.sh, the exact output of a recursive clone is compared with a pre-generated one. And this is a racy test because the structure of the submodules only guarantees a *partial* order. The 'none' and the 'rebasing' submodules *can* be cloned in any order, which means that a mismatch with the hard-coded order does not necessarily indicate a bug in the tested code. See for example: https://git-for-windows.visualstudio.com/git/_build/results?buildId=14035&view=logs To prevent such false positives from unnecessarily costing time when investigating test failures, let's take the exact order of the lines out of the equation by sorting them before comparing them. This test script seems not to have any more test cases that try to verify any specific order in which recursive clones process the submodules, therefore this is the only test case that is changed in this manner. Signed-off-by: Johannes Schindelin <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent b7bd948 commit 0b7d324

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

t/t7406-submodule-update.sh

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,17 +115,17 @@ Submodule path '../super/submodule': checked out '$submodulesha1'
115115
EOF
116116

117117
cat <<EOF >expect2
118+
Cloning into '$pwd/recursivesuper/super/merging'...
119+
Cloning into '$pwd/recursivesuper/super/none'...
120+
Cloning into '$pwd/recursivesuper/super/rebasing'...
121+
Cloning into '$pwd/recursivesuper/super/submodule'...
118122
Submodule 'merging' ($pwd/merging) registered for path '../super/merging'
119123
Submodule 'none' ($pwd/none) registered for path '../super/none'
120124
Submodule 'rebasing' ($pwd/rebasing) registered for path '../super/rebasing'
121125
Submodule 'submodule' ($pwd/submodule) registered for path '../super/submodule'
122-
Cloning into '$pwd/recursivesuper/super/merging'...
123126
done.
124-
Cloning into '$pwd/recursivesuper/super/none'...
125127
done.
126-
Cloning into '$pwd/recursivesuper/super/rebasing'...
127128
done.
128-
Cloning into '$pwd/recursivesuper/super/submodule'...
129129
done.
130130
EOF
131131

@@ -137,7 +137,8 @@ test_expect_success 'submodule update --init --recursive from subdirectory' '
137137
git submodule update --init --recursive ../super >../../actual 2>../../actual2
138138
) &&
139139
test_i18ncmp expect actual &&
140-
test_i18ncmp expect2 actual2
140+
sort actual2 >actual2.sorted &&
141+
test_i18ncmp expect2 actual2.sorted
141142
'
142143

143144
cat <<EOF >expect2

0 commit comments

Comments
 (0)