[PATCH 7/7] t7403: Submodule git mv, git rm testsuite

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <git@...>
Date: Wednesday, July 16, 2008 - 3:11 pm

The testsuite for newly added submodule support in git mv, git rm.

Signed-off-by: Petr Baudis <pasky@suse.cz>
---

 t/t7403-submodule-mvrm.sh |  242 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 242 insertions(+), 0 deletions(-)
 create mode 100755 t/t7403-submodule-mvrm.sh

diff --git a/t/t7403-submodule-mvrm.sh b/t/t7403-submodule-mvrm.sh
new file mode 100755
index 0000000..9b50d6a
--- /dev/null
+++ b/t/t7403-submodule-mvrm.sh
@@ -0,0 +1,242 @@
+#!/bin/sh
+#
+# Copyright (c) 2008 Johannes Schindelin
+#
+
+test_description='Test submodules support in git mv and git rm'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+
+	(mkdir sub-repo &&
+	 cd sub-repo &&
+	 git init &&
+	 echo file > file &&
+	 git add file &&
+	 git commit -m "sub initial") &&
+	(cp -r sub-repo sub2-repo &&
+	 cd sub2-repo &&
+	 echo file2 > file &&
+	 git add file &&
+	 git commit -m "sub commit2") &&
+	git submodule add "$(pwd)/sub-repo" sub &&
+	git submodule add "$(pwd)/sub2-repo" sub2 &&
+	git commit -m initial &&
+	test "$(git config -f .gitmodules submodule.sub.path)" = "sub" &&
+	test "$(git config -f .gitmodules submodule.sub2.path)" = "sub2"
+
+'
+
+test_expect_success 'git mv of a submodule' '
+
+	git mv sub sub.moved &&
+	! test -d sub &&
+	test -d sub.moved/.git &&
+	! git ls-files --error-unmatch sub &&
+	test "$(git ls-files --stage --error-unmatch sub.moved | cut -d " " -f 1)" = 160000 &&
+	test "$(git config -f .gitmodules submodule.sub.path)" = "sub.moved" &&
+	! git config -f .gitmodules submodule.sub.moved.path
+
+'
+
+test_expect_success 'git submodule add vs. git mv' '
+
+	! git submodule add "$(pwd)/sub2-repo" sub.moved &&
+	git submodule add "$(pwd)/sub2-repo" sub &&
+	test -d sub/.git &&
+	test "$(git config -f .gitmodules submodule.sub.url)" = "$(pwd)/sub-repo" &&
+	test "$(git config -f .gitmodules submodule.sub.path)" = "sub.moved" &&
+	test "$(git config -f .gitmodules submodule.sub~.path)" = "sub"
+
+'
+
+test_expect_success 'git mv onto existing file' '
+
+	echo file > file &&
+	git add file &&
+	! git mv sub.moved file &&
+	test -d sub.moved &&
+	! test -d file/.git &&
+	test "$(git ls-files --stage --error-unmatch file | cut -d " " -f 1)" = 100644 &&
+	test "$(git ls-files --stage --error-unmatch sub.moved | cut -d " " -f 1)" = 160000 &&
+	test "$(git config -f .gitmodules submodule.sub.path)" = "sub.moved"
+
+'
+
+test_expect_success 'git mv onto existing directory' '
+
+	mkdir -p dir &&
+	echo file > dir/file &&
+	git add dir/file &&
+	git mv sub.moved dir &&
+	! test -d sub.moved &&
+	test -d dir/sub.moved/.git &&
+	! git ls-files --error-unmatch sub.moved &&
+	test "$(git ls-files --stage --error-unmatch dir/sub.moved | cut -d " " -f 1)" = 160000 &&
+	test "$(git config -f .gitmodules submodule.sub.path)" = "dir/sub.moved" &&
+	git mv dir/sub.moved . &&
+	test "$(git config -f .gitmodules submodule.sub.path)" = "sub.moved"
+
+'
+
+test_expect_success 'git mv onto existing submodule' '
+
+	! git mv sub.moved sub2 &&
+	test -d sub.moved/.git &&
+	! test -d sub2/sub.moved &&
+	test "$(git ls-files --stage --error-unmatch sub2 | cut -d " " -f 1)" = 160000 &&
+	test "$(git ls-files --stage --error-unmatch sub.moved | cut -d " " -f 1)" = 160000 &&
+	test "$(git config -f .gitmodules submodule.sub.path)" = "sub.moved"
+
+'
+
+test_expect_success 'git mv of multiple submodules' '
+
+	mkdir -p dir &&
+	git mv sub.moved sub dir &&
+	! test -d sub.moved &&
+	! test -d sub &&
+	test -d dir/sub.moved/.git &&
+	test -d dir/sub/.git &&
+	! git ls-files --error-unmatch sub.moved sub &&
+	test "$(git ls-files --stage --error-unmatch dir/sub.moved dir/sub | cut -d " " -f 1 | uniq)" = 160000 &&
+	! git config -f .gitmodules submodule.dir.path &&
+	test "$(git config -f .gitmodules submodule.sub.path)" = "dir/sub.moved" &&
+	test "$(git config -f .gitmodules submodule.sub~.path)" = "dir/sub"
+
+'
+
+test_expect_success 'git mv of multiple submodules back from a subdir' '
+
+	(cd dir && git mv sub.moved sub .. && cd ..) &&
+	test -d sub.moved &&
+	test -d sub &&
+	! test -d dir/sub.moved/.git &&
+	! test -d dir/sub/.git &&
+	! git ls-files --error-unmatch dir/sub.moved dir/sub &&
+	test "$(git ls-files --stage --error-unmatch sub.moved sub | cut -d " " -f 1 | uniq)" = 160000 &&
+	test "$(git config -f .gitmodules submodule.sub.path)" = "sub.moved" &&
+	test "$(git config -f .gitmodules submodule.sub~.path)" = "sub"
+
+'
+
+test_expect_success 'git mv of non-checked-out submodules' '
+
+	git clone . clone &&
+	(cd clone &&
+	test -d sub &&
+	test -d sub2 &&
+	! test -d sub/.git &&
+	! test -d sub2/.git &&
+	git ls-files --stage --error-unmatch sub sub2 > ls-files.out &&
+	mkdir -p dir &&
+	git mv sub sub2 dir &&
+	! test -d sub &&
+	! test -d sub2 &&
+	test -d dir/sub &&
+	test -d dir/sub2 &&
+	! git ls-files --error-unmatch sub sub2 &&
+	test "$(git ls-files --stage --error-unmatch dir/sub dir/sub2 | cut -d " " -f 1 | uniq)" = 160000 &&
+	git ls-files --stage --error-unmatch dir/sub dir/sub2 | sed "s#dir/##g" | diff - ls-files.out &&
+	test "$(git config -f .gitmodules submodule.sub.path)" = "dir/sub" &&
+	test "$(git config -f .gitmodules submodule.sub2.path)" = "dir/sub2" &&
+	(cd dir && git mv sub2 .. && cd ..) &&
+	test -d sub2 &&
+	! test -d dir/sub2 &&
+	! git ls-files --error-unmatch dir/sub2 &&
+	test "$(git ls-files --stage --error-unmatch sub2 | cut -d " " -f 1)" = 160000 &&
+	test "$(git config -f .gitmodules submodule.sub2.path)" = "sub2")
+
+'
+
+test_expect_success 'checkpointing state with git commit' '
+
+	git commit -m"checkpoint" -a &&
+	(cd clone && git commit -m"clone checkpoint" -a)
+
+'
+
+test_expect_success 'git rm of a regular submodule' '
+
+	git rm sub2 &&
+	test -d sub2/.git &&
+	! git ls-files --error-unmatch sub2 &&
+	! git config -f .gitmodules submodule.sub2.path &&
+	! git config -f .gitmodules submodule.sub2.url
+
+'
+
+test_expect_success 'git rm of a submodule with name different from path' '
+
+	git rm sub.moved &&
+	test -d sub.moved/.git &&
+	! git ls-files --error-unmatch sub.moved &&
+	! git config -f .gitmodules submodule.sub.path &&
+	! git config -f .gitmodules submodule.sub.url
+
+'
+
+test_expect_success 'git rm of a modified submodule' '
+
+	git mv sub dir/sub && # more fun with richer path
+	(cd dir/sub &&
+	 echo mod > file &&
+	 git commit -m "sub mod" file) &&
+	git add dir/sub &&
+	! git rm dir/sub &&
+	test -d dir/sub/.git &&
+	test "$(git ls-files --stage --error-unmatch dir/sub | cut -d " " -f 1)" = "160000" &&
+	git config -f .gitmodules submodule.sub~.path &&
+	git config -f .gitmodules submodule.sub~.url &&
+	git rm -f dir/sub &&
+	test -d dir/sub/.git &&
+	! git ls-files --error-unmatch dir/sub &&
+	! git config -f .gitmodules submodule.sub~.path &&
+	! git config -f .gitmodules submodule.sub~.url
+
+'
+
+test_expect_success 'git rm of a submodule from within a subdirectory' '
+
+	git submodule add "$(pwd)/sub-repo" sub-torm &&
+	mkdir -p dir &&
+	# -f since we did not commit the submodule
+	(cd dir && git rm -f ../sub-torm && cd ..) &&
+	test -d sub-torm/.git &&
+	! git ls-files --error-unmatch sub-torm &&
+	! git config -f .gitmodules submodule.sub-torm.path &&
+	! git config -f .gitmodules submodule.sub-torm.url
+
+'
+
+test_expect_success 'git rm of a non-checked-out submodule' '
+
+	(cd clone &&
+	test -d dir/sub &&
+	! test -d dir/sub/.git &&
+	git rm dir/sub &&
+	! test -d dir/sub &&
+	! git ls-files --error-unmatch dir/sub &&
+	! git config -f .gitmodules submodule.sub.path &&
+	! git config -f .gitmodules submodule.sub.url)
+
+'
+
+test_expect_success 'git rm of a non-checked-out submodule w/ different working tree' '
+
+	(cd clone &&
+	rmdir sub2 &&
+	echo cunning > sub2 &&
+	! git rm sub2 &&
+	test -f sub2 &&
+	test "$(git ls-files --stage --error-unmatch sub2 | cut -d " " -f 1)" = "160000" &&
+	git rm -f sub2 &&
+	! test -e sub2 &&
+	! git ls-files --error-unmatch sub2 &&
+	! git config -f .gitmodules submodule.sub2.path &&
+	! git config -f .gitmodules submodule.sub2.url)
+
+'
+
+test_done

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC][PATCH 0/7] Submodule support in git mv, git rm, Petr Baudis, (Wed Jul 16, 3:11 pm)
[PATCH 7/7] t7403: Submodule git mv, git rm testsuite, Petr Baudis, (Wed Jul 16, 3:11 pm)
[PATCH 6/7] git rm: Support for removing submodules, Petr Baudis, (Wed Jul 16, 3:11 pm)
Re: [PATCH 6/7] git rm: Support for removing submodules, Johannes Schindelin, (Wed Jul 16, 6:41 pm)
Re: [PATCH 6/7] git rm: Support for removing submodules, Johannes Schindelin, (Thu Jul 17, 8:59 am)
[PATCH 5/7] git mv: Support moving submodules, Petr Baudis, (Wed Jul 16, 3:11 pm)
Re: [PATCH 5/7] git mv: Support moving submodules, Junio C Hamano, (Wed Jul 16, 10:37 pm)
Re: [PATCH 5/7] git mv: Support moving submodules, Petr Baudis, (Thu Jul 17, 9:06 am)
[PATCH] git-mv: Keep moved index entries inact, Petr Baudis, (Thu Jul 17, 6:31 pm)
Re: [PATCH] git-mv: Keep moved index entries inact, Junio C Hamano, (Sat Jul 19, 7:54 pm)
Re: [PATCH] git-mv: Keep moved index entries inact, Petr Baudis, (Sun Jul 20, 8:23 pm)
Re: [PATCH] git-mv: Keep moved index entries inact, Johannes Schindelin, (Sun Jul 20, 9:20 pm)
Re: [PATCH] git-mv: Keep moved index entries inact, Petr Baudis, (Mon Jul 21, 3:18 am)
Re: [PATCH] git-mv: Keep moved index entries inact, Junio C Hamano, (Mon Jul 21, 3:38 am)
[PATCHv2] git-mv: Keep moved index entries inact, Petr Baudis, (Sun Jul 20, 8:25 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Junio C Hamano, (Sat Jul 26, 2:46 am)
Not going beyond symbolic links, Junio C Hamano, (Mon Aug 4, 3:49 am)
Re: Not going beyond symbolic links, Linus Torvalds, (Mon Aug 4, 8:21 pm)
Re: Not going beyond symbolic links, Junio C Hamano, (Thu Aug 7, 2:52 am)
Re: Not going beyond symbolic links, Junio C Hamano, (Fri Aug 8, 4:55 pm)
Re: Not going beyond symbolic links, Linus Torvalds, (Fri Aug 8, 7:45 pm)
Re: Not going beyond symbolic links, Junio C Hamano, (Mon Aug 4, 8:54 pm)
Re: Not going beyond symbolic links, Linus Torvalds, (Mon Aug 4, 9:43 pm)
Re: Not going beyond symbolic links, Johannes Schindelin, (Mon Aug 4, 9:59 pm)
Re: Not going beyond symbolic links, Junio C Hamano, (Tue Aug 5, 12:44 am)
Re: Not going beyond symbolic links, Johannes Schindelin, (Tue Aug 5, 7:23 am)
Re: Not going beyond symbolic links, Linus Torvalds, (Mon Aug 4, 10:28 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Johannes Schindelin, (Mon Jul 28, 11:06 am)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Junio C Hamano, (Mon Jul 28, 3:19 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Petr Baudis, (Mon Jul 28, 8:17 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Junio C Hamano, (Mon Jul 28, 8:46 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Junio C Hamano, (Tue Jul 29, 1:23 am)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Johannes Schindelin, (Mon Jul 28, 7:41 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Johannes Schindelin, (Mon Jul 28, 7:55 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Johannes Schindelin, (Mon Jul 28, 11:14 am)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Johannes Schindelin, (Mon Jul 28, 2:24 pm)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Petr Baudis, (Sun Jul 27, 9:41 am)
Re: [PATCHv2] git-mv: Keep moved index entries inact, Junio C Hamano, (Mon Jul 21, 12:36 am)
[PATCH] git mv: Support moving submodules, Petr Baudis, (Thu Jul 17, 6:34 pm)
[PATCH 1/7] git-mv: Remove dead code branch, Petr Baudis, (Wed Jul 16, 3:11 pm)