Skip to content

Commit 18ce227

Browse files
committed
Merge branch 'ps/t7900-deflake-maintenance'
Various tests in 't7900-maintenance.sh' have been updated to use a throwaway repository, and auto-detaching of maintenance tasks is now disabled for these tests to fix flaky races with concurrent background maintenance jobs. * ps/t7900-deflake-maintenance: t7900: fix flaky "maintenance.strategy" test t7900: adapt some tests to use a throwaway repository
2 parents bc4c566 + 2775d8b commit 18ce227

1 file changed

Lines changed: 46 additions & 30 deletions

File tree

t/t7900-maintenance.sh

Lines changed: 46 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ test_description='git maintenance builtin'
77
GIT_TEST_COMMIT_GRAPH=0
88
GIT_TEST_MULTI_PACK_INDEX=0
99

10-
# Ensure that auto-maintenance detaches as usual.
11-
sane_unset GIT_TEST_MAINT_AUTO_DETACH
12-
1310
test_lazy_prereq XMLLINT '
1411
xmllint --version
1512
'
@@ -67,41 +64,60 @@ test_expect_success 'run [--auto|--quiet] with gc strategy' '
6764
'
6865

6966
test_expect_success 'maintenance.auto config option' '
70-
GIT_TRACE2_EVENT="$(pwd)/default" git commit --quiet --allow-empty -m 1 &&
71-
test_subcommand git maintenance run --auto --quiet --detach <default &&
72-
GIT_TRACE2_EVENT="$(pwd)/true" \
73-
git -c maintenance.auto=true \
74-
commit --quiet --allow-empty -m 2 &&
75-
test_subcommand git maintenance run --auto --quiet --detach <true &&
76-
GIT_TRACE2_EVENT="$(pwd)/false" \
77-
git -c maintenance.auto=false \
78-
commit --quiet --allow-empty -m 3 &&
79-
test_subcommand ! git maintenance run --auto --quiet --detach <false
67+
test_when_finished "rm -rf repo" &&
68+
git init repo &&
69+
(
70+
cd repo &&
71+
sane_unset GIT_TEST_MAINT_AUTO_DETACH &&
72+
73+
GIT_TRACE2_EVENT="$(pwd)/default" git commit --quiet --allow-empty -m 1 &&
74+
test_subcommand git maintenance run --auto --quiet --detach <default &&
75+
GIT_TRACE2_EVENT="$(pwd)/true" \
76+
git -c maintenance.auto=true \
77+
commit --quiet --allow-empty -m 2 &&
78+
test_subcommand git maintenance run --auto --quiet --detach <true &&
79+
GIT_TRACE2_EVENT="$(pwd)/false" \
80+
git -c maintenance.auto=false \
81+
commit --quiet --allow-empty -m 3 &&
82+
test_subcommand ! git maintenance run --auto --quiet --detach <false
83+
)
8084
'
8185

8286
test_expect_success 'gc.auto config option' '
83-
GIT_TRACE2_EVENT="$(pwd)/default" git commit --quiet --allow-empty -m 1 &&
84-
test_subcommand git maintenance run --auto --quiet --detach <default &&
85-
GIT_TRACE2_EVENT="$(pwd)/true" \
86-
git -c gc.auto=1 commit --quiet --allow-empty -m 2 &&
87-
test_subcommand git maintenance run --auto --quiet --detach <true &&
88-
GIT_TRACE2_EVENT="$(pwd)/false" \
89-
git -c gc.auto=0 commit --quiet --allow-empty -m 3 &&
90-
test_subcommand ! git maintenance run --auto --quiet --detach <false
87+
test_when_finished "rm -rf repo" &&
88+
git init repo &&
89+
(
90+
cd repo &&
91+
sane_unset GIT_TEST_MAINT_AUTO_DETACH &&
92+
93+
GIT_TRACE2_EVENT="$(pwd)/default" git commit --quiet --allow-empty -m 1 &&
94+
test_subcommand git maintenance run --auto --quiet --detach <default &&
95+
GIT_TRACE2_EVENT="$(pwd)/true" \
96+
git -c gc.auto=1 commit --quiet --allow-empty -m 2 &&
97+
test_subcommand git maintenance run --auto --quiet --detach <true &&
98+
GIT_TRACE2_EVENT="$(pwd)/false" \
99+
git -c gc.auto=0 commit --quiet --allow-empty -m 3 &&
100+
test_subcommand ! git maintenance run --auto --quiet --detach <false
101+
)
91102
'
92103

93104
test_expect_success 'maintenance.auto overrides gc.auto' '
94-
test_when_finished "rm -f trace" &&
105+
test_when_finished "rm -rf repo" &&
106+
git init repo &&
107+
(
108+
cd repo &&
109+
sane_unset GIT_TEST_MAINT_AUTO_DETACH &&
95110
96-
test_config maintenance.auto false &&
97-
test_config gc.auto 1 &&
98-
GIT_TRACE2_EVENT="$(pwd)/trace" git commit --quiet --allow-empty -m 1 &&
99-
test_subcommand ! git maintenance run --auto --quiet --detach <trace &&
111+
git config set maintenance.auto false &&
112+
git config set gc.auto 1 &&
113+
GIT_TRACE2_EVENT="$(pwd)/trace" git commit --quiet --allow-empty -m 1 &&
114+
test_subcommand ! git maintenance run --auto --quiet --detach <trace &&
100115
101-
test_config maintenance.auto true &&
102-
test_config gc.auto 0 &&
103-
GIT_TRACE2_EVENT="$(pwd)/trace" git commit --quiet --allow-empty -m 1 &&
104-
test_subcommand git maintenance run --auto --quiet --detach <trace
116+
git config set maintenance.auto true &&
117+
git config set gc.auto 0 &&
118+
GIT_TRACE2_EVENT="$(pwd)/trace" git commit --quiet --allow-empty -m 1 &&
119+
test_subcommand git maintenance run --auto --quiet --detach <trace
120+
)
105121
'
106122

107123
for cfg in maintenance.autoDetach gc.autoDetach

0 commit comments

Comments
 (0)