From: Petr Baudis <pasky@suse.cz>
To: git@vger.kernel.org
Cc: gitster@pobox.com
Subject: [PATCH 4/6] t7403: Submodule git mv, git rm testsuite
Date: Fri, 12 Sep 2008 23:09:13 +0200 [thread overview]
Message-ID: <20080912210913.31628.20562.stgit@localhost> (raw)
In-Reply-To: <20080912210817.31628.69014.stgit@localhost>
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
next prev parent reply other threads:[~2008-09-12 21:10 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-12 21:08 [PATCH 0/6] Submodule support for git mv and git rm Petr Baudis
2008-09-12 21:08 ` [PATCH 1/6] submodule.*: Introduce simple C interface for submodule lookup by path Petr Baudis
2008-09-12 21:23 ` Junio C Hamano
2008-09-12 21:35 ` Jakub Narebski
2008-09-12 21:58 ` Petr Baudis
2008-09-12 21:09 ` [PATCH 2/6] git rm: Support for removing submodules Petr Baudis
2008-09-12 21:49 ` Junio C Hamano
2008-09-12 21:59 ` Junio C Hamano
2008-09-12 22:24 ` Petr Baudis
2008-09-12 22:42 ` Junio C Hamano
2008-09-12 21:09 ` [PATCH 3/6] git mv: Support moving submodules Petr Baudis
2008-09-12 21:42 ` [PATCH] " Petr Baudis
2008-09-12 22:19 ` Junio C Hamano
2008-09-12 21:09 ` Petr Baudis [this message]
2008-09-12 21:09 ` [PATCH 5/6] t7400: Add short "git submodule add" testsuite Petr Baudis
2008-09-12 21:09 ` [PATCH 6/6] git submodule add: Fix naming clash handling Petr Baudis
2008-09-13 2:24 ` Junio C Hamano
2008-09-13 11:32 ` Lars Hjemli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080912210913.31628.20562.stgit@localhost \
--to=pasky@suse.cz \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.