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

[PATCH v2 1/4] t1092: add tests for `git-rm`

From
Shaoxuan Yuan <shaoxuan.yuan02@gmail.com>
Date
Aug 7, 2022, 04:13 UTC
Message-ID
<20220807041335.1790658-2-shaoxuan.yuan02@gmail.com>
In-Reply-To
<20220807041335.1790658-1-shaoxuan.yuan02@gmail.com>

Add tests for `git-rm`, make sure it behaves as expected when <pathspec> is both inside or outside of sparse-checkout definition.

Helped-by: Victoria Dye <vdye@github.com>
Helped-by: Derrick Stolee <derrickstolee@github.com>
Signed-off-by: Shaoxuan Yuan <shaoxuan.yuan02@gmail.com>
---
 t/t1092-sparse-checkout-compatibility.sh | 57 ++++++++++++++++++++++++
 1 file changed, 57 insertions(+)
diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh
index 763c6cc684..c9300b77dd 100755
--- a/t/t1092-sparse-checkout-compatibility.sh
+++ b/t/t1092-sparse-checkout-compatibility.sh
@@ -1853,4 +1853,61 @@ test_expect_success 'mv directory from out-of-cone to in-cone' '
 	grep -e "H deep/0/1" actual
 '
 
+test_expect_success 'rm pathspec inside sparse definition' '
+	init_repos &&
+
+	test_all_match git rm deep/a &&
+	test_all_match git status --porcelain=v2 &&
+
+	# test wildcard
+	run_on_all git reset --hard &&
+	test_all_match git rm deep/* &&
+	test_all_match git status --porcelain=v2 &&
+
+	# test recursive rm
+	run_on_all git reset --hard &&
+	test_all_match git rm -r deep &&
+	test_all_match git status --porcelain=v2
+'
+
+test_expect_failure 'rm pathspec outside sparse definition' '
+	init_repos &&
+
+	for file in folder1/a folder1/0/1
+	do
+		test_sparse_match test_must_fail git rm $file &&
+		test_sparse_match test_must_fail git rm --cached $file &&
+		test_sparse_match git rm --sparse $file &&
+		test_sparse_match git status --porcelain=v2
+	done &&
+
+	cat >folder1-full <<-EOF &&
+	rm ${SQ}folder1/0/0/0${SQ}
+	rm ${SQ}folder1/0/1${SQ}
+	rm ${SQ}folder1/a${SQ}
+	EOF
+
+	cat >folder1-sparse <<-EOF &&
+	rm ${SQ}folder1/${SQ}
+	EOF
+
+	# test wildcard
+	run_on_sparse git reset --hard &&
+	run_on_sparse git sparse-checkout reapply &&
+	test_sparse_match test_must_fail git rm folder1/* &&
+	run_on_sparse git rm --sparse folder1/* &&
+	test_cmp folder1-full sparse-checkout-out &&
+	test_cmp folder1-sparse sparse-index-out &&
+	test_sparse_match git status --porcelain=v2 &&
+
+	# test recursive rm
+	run_on_sparse git reset --hard &&
+	run_on_sparse git sparse-checkout reapply &&
+	test_sparse_match test_must_fail git rm --sparse folder1 &&
+	run_on_sparse git rm --sparse -r folder1 &&
+	test_cmp folder1-full sparse-checkout-out &&
+	test_cmp folder1-sparse sparse-index-out &&
+	test_sparse_match git status --porcelain=v2
+'
+
 test_done
-- 
2.37.0
Previous: Shaoxuan YuanNext: Derrick Stolee
Message 14 of 25 in “rm: integrate with sparse-index”
  1. 0/4 rm: integrate with sparse-indexShaoxuan Yuan, Aug 3, 2022
  2. 2/4 pathspec.h: move pathspec_needs_expanded_index() from reset.c to hereShaoxuan Yuan, Aug 3, 2022
  3. Derrick StoleeAug 3, 2022
  4. Shaoxuan YuanAug 5, 2022
  5. 3/4 rm: expand the index only when necessaryShaoxuan Yuan, Aug 3, 2022
  6. Derrick StoleeAug 3, 2022
  7. Shaoxuan YuanAug 5, 2022
  8. 1/4 t1092: add tests for `git-rm`Shaoxuan Yuan, Aug 3, 2022
  9. Derrick StoleeAug 3, 2022
  10. 4/4 rm: integrate with sparse-indexShaoxuan Yuan, Aug 3, 2022
  11. Derrick StoleeAug 4, 2022
  12. Shaoxuan YuanAug 6, 2022
  13. 0/4 rm: integrate with sparse-indexShaoxuan Yuan, Aug 7, 2022
  14. 1/4 t1092: add tests for `git-rm`Shaoxuan Yuan, Aug 7, 2022
  15. Derrick StoleeAug 10, 2022
  16. 2/4 pathspec.h: move pathspec_needs_expanded_index() from reset.c to hereShaoxuan Yuan, Aug 7, 2022
  17. 3/4 rm: expand the index only when necessaryShaoxuan Yuan, Aug 7, 2022
  18. Victoria DyeAug 10, 2022
  19. 4/4 rm: integrate with sparse-indexShaoxuan Yuan, Aug 7, 2022
  20. Junio C HamanoAug 8, 2022
  21. Victoria DyeAug 8, 2022
  22. Junio C HamanoAug 8, 2022
  23. Victoria DyeAug 10, 2022
  24. Shaoxuan YuanAug 10, 2022
  25. Junio C HamanoAug 12, 2022

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.