git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 4/7] t1404: make D/F conflict tests compatible with reftable backend

From
Patrick Steinhardt <ps@pks.im>
Date
Feb 9, 2024, 07:23 UTC
Message-ID
<70c6f980126aabb2ade336861e816cf1fe6e9110.1707463221.git.ps@pks.im>
In-Reply-To
<cover.1707463221.git.ps@pks.im>

Some of the tests in t1404 exercise whether Git correctly aborts transactions when there is a directory/file conflict with ref names. While these tests are all marked to require the "files" backend, they do in fact apply to the "reftable" backend as well.

This may not make much sense on the surface: D/F conflicts only exist because the "files" backend uses the filesystem to store loose refs, and thus the restriction theoretically shouldn't apply to the "reftable" backend. But for now, the "reftable" backend artificially restricts the creation of such conflicting refs so that it is a drop-in replacement for the "files" backend. This also ensures that the "reftable" backend can easily be used on the server side without causing issues for clients which only know to use the "files" backend.

The only difference between the "files" and "reftable" backends is a slightly different error message. Adapt the tests to accomodate for this difference and remove the REFFILES prerequisite so that we start testing with both backends.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
 t/t1404-update-ref-errors.sh | 37 +++++++++++++++++-------------------
 1 file changed, 17 insertions(+), 20 deletions(-)
diff --git a/t/t1404-update-ref-errors.sh b/t/t1404-update-ref-errors.sh
index 00b7013705..98e9158bd2 100755
--- a/t/t1404-update-ref-errors.sh
+++ b/t/t1404-update-ref-errors.sh
@@ -92,9 +92,6 @@ df_test() {
 	else
 		delname="$delref"
 	fi &&
-	cat >expected-err <<-EOF &&
-	fatal: cannot lock ref $SQ$addname$SQ: $SQ$delref$SQ exists; cannot create $SQ$addref$SQ
-	EOF
 	$pack &&
 	if $add_del
 	then
@@ -103,7 +100,7 @@ df_test() {
 		printf "%s\n" "delete $delname" "create $addname $D"
 	fi >commands &&
 	test_must_fail git update-ref --stdin <commands 2>output.err &&
-	test_cmp expected-err output.err &&
+	grep "fatal:\( cannot lock ref $SQ$addname$SQ:\)\? $SQ$delref$SQ exists; cannot create $SQ$addref$SQ" output.err &&
 	printf "%s\n" "$C $delref" >expected-refs &&
 	git for-each-ref --format="%(objectname) %(refname)" $prefix/r >actual-refs &&
 	test_cmp expected-refs actual-refs
@@ -191,69 +188,69 @@ test_expect_success 'one new ref is a simple prefix of another' '
 
 '
 
-test_expect_success REFFILES 'D/F conflict prevents add long + delete short' '
+test_expect_success 'D/F conflict prevents add long + delete short' '
 	df_test refs/df-al-ds --add-del foo/bar foo
 '
 
-test_expect_success REFFILES 'D/F conflict prevents add short + delete long' '
+test_expect_success 'D/F conflict prevents add short + delete long' '
 	df_test refs/df-as-dl --add-del foo foo/bar
 '
 
-test_expect_success REFFILES 'D/F conflict prevents delete long + add short' '
+test_expect_success 'D/F conflict prevents delete long + add short' '
 	df_test refs/df-dl-as --del-add foo/bar foo
 '
 
-test_expect_success REFFILES 'D/F conflict prevents delete short + add long' '
+test_expect_success 'D/F conflict prevents delete short + add long' '
 	df_test refs/df-ds-al --del-add foo foo/bar
 '
 
-test_expect_success REFFILES 'D/F conflict prevents add long + delete short packed' '
+test_expect_success 'D/F conflict prevents add long + delete short packed' '
 	df_test refs/df-al-dsp --pack --add-del foo/bar foo
 '
 
-test_expect_success REFFILES 'D/F conflict prevents add short + delete long packed' '
+test_expect_success 'D/F conflict prevents add short + delete long packed' '
 	df_test refs/df-as-dlp --pack --add-del foo foo/bar
 '
 
-test_expect_success REFFILES 'D/F conflict prevents delete long packed + add short' '
+test_expect_success 'D/F conflict prevents delete long packed + add short' '
 	df_test refs/df-dlp-as --pack --del-add foo/bar foo
 '
 
-test_expect_success REFFILES 'D/F conflict prevents delete short packed + add long' '
+test_expect_success 'D/F conflict prevents delete short packed + add long' '
 	df_test refs/df-dsp-al --pack --del-add foo foo/bar
 '
 
 # Try some combinations involving symbolic refs...
 
-test_expect_success REFFILES 'D/F conflict prevents indirect add long + delete short' '
+test_expect_success 'D/F conflict prevents indirect add long + delete short' '
 	df_test refs/df-ial-ds --sym-add --add-del foo/bar foo
 '
 
-test_expect_success REFFILES 'D/F conflict prevents indirect add long + indirect delete short' '
+test_expect_success 'D/F conflict prevents indirect add long + indirect delete short' '
 	df_test refs/df-ial-ids --sym-add --sym-del --add-del foo/bar foo
 '
 
-test_expect_success REFFILES 'D/F conflict prevents indirect add short + indirect delete long' '
+test_expect_success 'D/F conflict prevents indirect add short + indirect delete long' '
 	df_test refs/df-ias-idl --sym-add --sym-del --add-del foo foo/bar
 '
 
-test_expect_success REFFILES 'D/F conflict prevents indirect delete long + indirect add short' '
+test_expect_success 'D/F conflict prevents indirect delete long + indirect add short' '
 	df_test refs/df-idl-ias --sym-add --sym-del --del-add foo/bar foo
 '
 
-test_expect_success REFFILES 'D/F conflict prevents indirect add long + delete short packed' '
+test_expect_success 'D/F conflict prevents indirect add long + delete short packed' '
 	df_test refs/df-ial-dsp --sym-add --pack --add-del foo/bar foo
 '
 
-test_expect_success REFFILES 'D/F conflict prevents indirect add long + indirect delete short packed' '
+test_expect_success 'D/F conflict prevents indirect add long + indirect delete short packed' '
 	df_test refs/df-ial-idsp --sym-add --sym-del --pack --add-del foo/bar foo
 '
 
-test_expect_success REFFILES 'D/F conflict prevents add long + indirect delete short packed' '
+test_expect_success 'D/F conflict prevents add long + indirect delete short packed' '
 	df_test refs/df-al-idsp --sym-del --pack --add-del foo/bar foo
 '
 
-test_expect_success REFFILES 'D/F conflict prevents indirect delete long packed + indirect add short' '
+test_expect_success 'D/F conflict prevents indirect delete long packed + indirect add short' '
 	df_test refs/df-idlp-ias --sym-add --sym-del --pack --del-add foo/bar foo
 '
 
-- 
2.43.GIT
Previous: Junio C HamanoNext: Junio C Hamano
Message 10 of 28 in “t: drop more REFFILES prereqs”
  1. 0/7 t: drop more REFFILES prereqsPatrick Steinhardt, Feb 9, 2024
  2. 1/7 t: move tests exercising the "files" backendPatrick Steinhardt, Feb 9, 2024
  3. Junio C HamanoFeb 14, 2024
  4. 2/7 t0410: enable tests with extensions with non-default repo formatPatrick Steinhardt, Feb 9, 2024
  5. Junio C HamanoFeb 14, 2024
  6. Patrick SteinhardtFeb 15, 2024
  7. Junio C HamanoFeb 15, 2024
  8. 3/7 t1400: exercise reflog with gaps with reftable backendPatrick Steinhardt, Feb 9, 2024
  9. Junio C HamanoFeb 14, 2024
  10. 4/7 t1404: make D/F conflict tests compatible with reftable backendPatrick Steinhardt, Feb 9, 2024
  11. Junio C HamanoFeb 14, 2024
  12. 5/7 t1405: remove unneeded cleanup stepPatrick Steinhardt, Feb 9, 2024
  13. Junio C HamanoFeb 14, 2024
  14. Patrick SteinhardtFeb 15, 2024
  15. 6/7 t2011: exercise D/F conflicts with HEAD with the reftable backendPatrick Steinhardt, Feb 9, 2024
  16. 7/7 t7003: ensure filter-branch prunes reflogs with the reftable backendPatrick Steinhardt, Feb 9, 2024
  17. Karthik NayakFeb 11, 2024
  18. Junio C HamanoFeb 14, 2024
  19. Patrick SteinhardtFeb 15, 2024
  20. 0/7 t: drop more REFFILES prereqsPatrick Steinhardt, Feb 15, 2024
  21. 1/7 t: move tests exercising the "files" backendPatrick Steinhardt, Feb 15, 2024
  22. 2/7 t0410: convert tests to use DEFAULT_REPO_FORMAT prereqPatrick Steinhardt, Feb 15, 2024
  23. Junio C HamanoFeb 15, 2024
  24. 3/7 t1400: exercise reflog with gaps with reftable backendPatrick Steinhardt, Feb 15, 2024
  25. 4/7 t1404: make D/F conflict tests compatible with reftable backendPatrick Steinhardt, Feb 15, 2024
  26. 5/7 t1405: remove unneeded cleanup stepPatrick Steinhardt, Feb 15, 2024
  27. 6/7 t2011: exercise D/F conflicts with HEAD with the reftable backendPatrick Steinhardt, Feb 15, 2024
  28. 7/7 t7003: ensure filter-branch prunes reflogs with the reftable backendPatrick Steinhardt, Feb 15, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.