From: Mark Levedahl <mlevedahl@gmail.com>
To: git@vger.kernel.org
Cc: Mark Levedahl <mlevedahl@gmail.com>
Subject: [PATCH 3/3] Add t/t7401 - test submodule interaction with remotes machinery
Date: Sat, 9 Feb 2008 11:57:25 -0500 [thread overview]
Message-ID: <1202576245-284-3-git-send-email-mlevedahl@gmail.com> (raw)
In-Reply-To: <1202576245-284-2-git-send-email-mlevedahl@gmail.com>
This adds a sequence of tests to assure that the following two sequences
work:
git clone -o frotz <someurl> foo
cd foo
git submodule init
git submodule update
This should result in the top-level project and subproject having "frotz"
as the only defined remote, and should succeed with the
branch.<name>.remote mechanism supplying frotz as the remote.
Then, in the same working directory
git remote add fork <some url>
git fetch fork
git checkout --track -b fork fork/<somebranch>
git submodule init
git submodule update
will retrive new submodules from remote "fork", and define fork in the
existing modules.
Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
---
t/t7401-submodule-remote.sh | 118 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 118 insertions(+), 0 deletions(-)
create mode 100755 t/t7401-submodule-remote.sh
diff --git a/t/t7401-submodule-remote.sh b/t/t7401-submodule-remote.sh
new file mode 100755
index 0000000..e5bef27
--- /dev/null
+++ b/t/t7401-submodule-remote.sh
@@ -0,0 +1,118 @@
+#!/bin/sh
+
+test_description='Porcelain support for submodules with multiple remotes
+
+This test verifies operation of submodules using multiple remotes and
+differing remote per top-level branch. This includes ability to follow
+the top-level remote.<branch>, and to propagate definition of new remotes
+down to submodules as needed.'
+
+. ./test-lib.sh
+
+# the standard tests all work with one repo, but we need several..
+rm -rf .git
+
+test_expect_success 'Prepare master repository with 1 submodule' '
+ (
+ mkdir master &&
+ cd master &&
+ git init &&
+ echo "on master" > master.txt &&
+ git add master.txt &&
+ git commit -m "Add master.txt" &&
+ mkdir submod1 &&
+ cd submod1 &&
+ git init &&
+ echo "submod1" > submod1.txt &&
+ git add submod1.txt &&
+ git commit -m "Added submod1.txt" &&
+ cd .. &&
+ git submodule add ./submod1 submod1 &&
+ git commit -m "Added submodule submod1"
+ )
+'
+
+test_expect_success 'Clone master as fork' '
+ (
+ git clone master fork &&
+ cd fork &&
+ test "$(git remote)" = "origin" &&
+ git submodule init &&
+ git submodule update &&
+ test -e submod1/.git
+ )
+'
+
+test_expect_success 'Add second submodule in fork' '
+ (
+ cd fork &&
+ mkdir submod2 &&
+ cd submod2 &&
+ git init &&
+ echo "submod2" > submod2.txt &&
+ git add submod2.txt &&
+ git commit -m "Added submod2.txt" &&
+ cd .. &&
+ git submodule add ./submod2 submod2 &&
+ git commit -m "Added submodule submod2 on fork"
+ )
+'
+
+test_expect_success 'Clone master using frotz instead of origin' '
+ (
+ git clone -o frotz master worker &&
+ cd worker &&
+ test "$(git remote)" = "frotz"
+ )
+'
+
+test_expect_success 'Get submodules using frotz instead of origin' '
+ (
+ cd worker &&
+ git submodule init &&
+ git submodule update &&
+ test -e submod1/.git &&
+ cd submod1 &&
+ test "$(git remote)" = "frotz"
+ )
+'
+
+test_expect_success 'submodule update fails on detached head' '
+ (
+ cd worker &&
+ git checkout $(git rev-parse HEAD) &&
+ ! git submodule update
+ )
+'
+
+test_expect_success 'submodule update -r remote succeeds on detached head' '
+ (
+ cd worker &&
+ git checkout $(git rev-parse HEAD) &&
+ git submodule update -r frotz
+ )
+'
+
+test_expect_success 'Update using fork to get additional submodule' '
+ (
+ cd worker &&
+ git remote add fork $(pwd)/../fork &&
+ git fetch fork &&
+ git checkout --track -b fork_master fork/master &&
+ git submodule init &&
+ git submodule update &&
+ test -e submod2/.git &&
+ cd submod2 &&
+ test "$(git remote)" = "fork" &&
+ cd ../submod1 &&
+ remotes1=$(git remote) &&
+ case $remotes1 in
+ fork*frotz|frotz*fork)
+ true ;;
+ *)
+ false ;;
+ esac
+ )
+'
+
+test_done
--
1.5.4.47.gcca7b3
next prev parent reply other threads:[~2008-02-09 16:58 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-09 16:57 [PATCH 1/3] git-submodule - Follow top-level remote on init/update/clone Mark Levedahl
2008-02-09 16:57 ` [PATCH 2/3] git-submodule - Allow adding a submodule in-place Mark Levedahl
2008-02-09 16:57 ` Mark Levedahl [this message]
2008-03-03 13:14 ` Ping Yin
2008-02-11 22:09 ` [PATCH 1/3] git-submodule - Follow top-level remote on init/update/clone Johannes Schindelin
2008-02-12 1:00 ` Mark Levedahl
2008-02-12 1:10 ` Johannes Schindelin
2008-02-12 1:34 ` Mark Levedahl
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=1202576245-284-3-git-send-email-mlevedahl@gmail.com \
--to=mlevedahl@gmail.com \
--cc=git@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).