From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: gitster@pobox.com, git@vger.kernel.org, matled@gmx.net
Subject: [PATCH 7/8] Make t1501 a little saner, and fix it
Date: Fri, 27 Jul 2007 19:58:49 +0100 (BST) [thread overview]
Message-ID: <Pine.LNX.4.64.0707271958370.14781@racer.site> (raw)
In-Reply-To: <Pine.LNX.4.64.0707271851370.14781@racer.site>
t1501 is still a PITA to debug, but less so than before. This patch
fixes also the tests which tested for the wrong (old) work-tree behavior.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
t/t1501-worktree.sh | 161 +++++++++++++++++++++++++++++----------------------
1 files changed, 92 insertions(+), 69 deletions(-)
diff --git a/t/t1501-worktree.sh b/t/t1501-worktree.sh
index aadeeab..fad9a9e 100755
--- a/t/t1501-worktree.sh
+++ b/t/t1501-worktree.sh
@@ -4,89 +4,112 @@ test_description='test separate work tree'
. ./test-lib.sh
test_rev_parse() {
- name=$1
- shift
-
- test_expect_success "$name: is-bare-repository" \
- "test '$1' = \"\$(git rev-parse --is-bare-repository)\""
- shift
- [ $# -eq 0 ] && return
-
- test_expect_success "$name: is-inside-git-dir" \
- "test '$1' = \"\$(git rev-parse --is-inside-git-dir)\""
- shift
- [ $# -eq 0 ] && return
-
- test_expect_success "$name: is-inside-work-tree" \
- "test '$1' = \"\$(git rev-parse --is-inside-work-tree)\""
- shift
- [ $# -eq 0 ] && return
-
- test_expect_success "$name: prefix" \
- "test '$1' = \"\$(git rev-parse --show-prefix)\""
- shift
- [ $# -eq 0 ] && return
+ name="$1"
+ for option in --is-bare-repository --is-inside-git-dir \
+ --is-inside-work-tree --show-prefix
+ do
+ shift
+ test_expect_success "$name: $option" \
+ "test '$1' = \"\$(git rev-parse $option)\""
+ test $# -eq 1 && return
+ done
}
-mkdir -p work/sub/dir || exit 1
-mv .git repo.git || exit 1
+# usage: set_repo <working directory> [<git dir> [<work tree> [env]]]
+set_repo () {
+ cd "$1"
+ say "switching to $(pwd) with GIT_DIR $2"
+
+ test -z "$2" || {
+ GIT_DIR="$2"
+ GIT_CONFIG="$2"/config
+ export GIT_DIR GIT_CONFIG
+ }
+
+ test -z "$3" ||
+ case "$4" in
+ env)
+ GIT_WORK_TREE="$3"
+ export GIT_WORK_TREE
+ git config core.workTree non-existent
+ ;;
+ *)
+ git config core.workTree "$3"
+ esac
+}
+
+test_expect_success 'setup' '
+ mkdir -p work/sub/dir &&
+ mv .git repo.git
+'
say "core.worktree = relative path"
-export GIT_DIR=repo.git
-export GIT_CONFIG=$GIT_DIR/config
-unset GIT_WORK_TREE
-git config core.worktree ../work
-test_rev_parse 'outside' false false false
-cd work || exit 1
-export GIT_DIR=../repo.git
-export GIT_CONFIG=$GIT_DIR/config
-test_rev_parse 'inside' false false true ''
-cd sub/dir || exit 1
-export GIT_DIR=../../../repo.git
-export GIT_CONFIG=$GIT_DIR/config
+
+set_repo . repo.git ../work
+test_rev_parse 'outside git dir' false false false
+
+set_repo work ../repo.git
+test_rev_parse 'inside git dir' false false true ''
+
+set_repo sub/dir ../../../repo.git
test_rev_parse 'subdirectory' false false true sub/dir/
-cd ../../.. || exit 1
+cd ../../..
say "core.worktree = absolute path"
-export GIT_DIR=$(pwd)/repo.git
-export GIT_CONFIG=$GIT_DIR/config
-git config core.worktree "$(pwd)/work"
-test_rev_parse 'outside' false false false
-cd work || exit 1
-test_rev_parse 'inside' false false true ''
-cd sub/dir || exit 1
+set_repo . $(pwd)/repo.git $(pwd)/work
+test_rev_parse 'outside git dir' false false false
+
+set_repo work
+test_rev_parse 'inside git dir' false false true ''
+
+set_repo sub/dir
test_rev_parse 'subdirectory' false false true sub/dir/
-cd ../../.. || exit 1
+cd ../../..
say "GIT_WORK_TREE=relative path (override core.worktree)"
-export GIT_DIR=$(pwd)/repo.git
-export GIT_CONFIG=$GIT_DIR/config
-git config core.worktree non-existent
-export GIT_WORK_TREE=work
-test_rev_parse 'outside' false false false
-cd work || exit 1
-export GIT_WORK_TREE=.
-test_rev_parse 'inside' false false true ''
-cd sub/dir || exit 1
-export GIT_WORK_TREE=../..
+
+set_repo . $(pwd)/repo.git work env
+test_rev_parse 'outside git dir' false false false
+
+set_repo work "" . env
+test_rev_parse 'inside git dir' false false true ''
+
+set_repo sub/dir "" ../../ env
test_rev_parse 'subdirectory' false false true sub/dir/
cd ../../.. || exit 1
+say "GIT_WORK_TREE=absolute path, work tree below git dir"
+
mv work repo.git/work
-say "GIT_WORK_TREE=absolute path, work tree below git dir"
-export GIT_DIR=$(pwd)/repo.git
-export GIT_CONFIG=$GIT_DIR/config
-export GIT_WORK_TREE=$(pwd)/repo.git/work
-test_rev_parse 'outside' false false false
-cd repo.git || exit 1
-test_rev_parse 'in repo.git' false true false
-cd objects || exit 1
-test_rev_parse 'in repo.git/objects' false true false
-cd ../work || exit 1
-test_rev_parse 'in repo.git/work' false false true ''
-cd sub/dir || exit 1
-test_rev_parse 'in repo.git/sub/dir' false false true sub/dir/
-cd ../../../.. || exit 1
+set_repo . $(pwd)/repo.git $(pwd)/repo.git/work env
+test_rev_parse 'outside git dir' false false false
+
+set_repo repo.git
+test_rev_parse 'in repo.git' false true false
+
+set_repo objects
+test_rev_parse 'in repo.git/objects' false true false
+
+set_repo ../work
+test_rev_parse 'in repo.git/work' false true true ''
+
+set_repo sub/dir
+test_rev_parse 'in repo.git/sub/dir' false true true sub/dir/
+cd ../../../..
+
+test_expect_success 'repo finds its work tree' '
+ (cd repo.git &&
+ : > work/sub/dir/untracked &&
+ test sub/dir/untracked = "$(git ls-files --others)")
+'
+
+test_expect_success 'repo finds its work tree from work tree, too' '
+ (cd repo.git/work/sub/dir &&
+ : > tracked &&
+ git --git-dir=../../.. add tracked &&
+ cd ../../.. &&
+ test sub/dir/tracked = "$(git ls-files)")
+'
test_done
--
1.5.3.rc3.18.g49a1
next prev parent reply other threads:[~2007-07-27 18:59 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-27 18:55 [PATCH 0/8 REVISION2] work-tree cleanups Johannes Schindelin
2007-07-27 18:56 ` [PATCH 1/8] Add is_absolute_path() and make_absolute_path() Johannes Schindelin
2007-07-27 20:51 ` Junio C Hamano
2007-07-28 1:03 ` Johannes Schindelin
2007-07-27 18:56 ` [PATCH 2/8] Add functions get_relative_cwd() and is_inside_dir() Johannes Schindelin
2007-07-27 20:51 ` Junio C Hamano
2007-07-28 1:03 ` Johannes Schindelin
2007-07-27 18:56 ` [PATCH 3/8] Clean up work-tree handling Johannes Schindelin
2007-07-27 20:51 ` Junio C Hamano
2007-07-28 0:21 ` Johannes Schindelin
2007-07-28 0:42 ` Junio C Hamano
2007-07-28 0:56 ` Johannes Schindelin
2007-07-28 5:18 ` Junio C Hamano
2007-07-28 9:01 ` Johannes Schindelin
2007-07-28 11:15 ` Junio C Hamano
2007-07-28 19:38 ` Johannes Schindelin
2007-07-29 15:53 ` Johannes Schindelin
2007-07-29 19:54 ` Junio C Hamano
2007-07-29 20:02 ` Johannes Schindelin
2007-07-27 18:57 ` [PATCH 4/8] Add set_git_dir() function Johannes Schindelin
2007-07-27 18:57 ` [PATCH 5/8] work-trees are allowed inside a git-dir Johannes Schindelin
2007-07-27 20:51 ` Junio C Hamano
2007-07-28 0:38 ` Johannes Schindelin
2007-07-28 0:48 ` Junio C Hamano
2007-07-28 1:01 ` Johannes Schindelin
2007-07-27 18:58 ` [PATCH 6/8] init: use get_git_work_tree() instead of rolling our own Johannes Schindelin
2007-07-27 18:58 ` Johannes Schindelin [this message]
2007-07-27 18:59 ` [PATCH 8/8] Fix t1500 for sane work-tree behavior Johannes Schindelin
2007-07-27 20:51 ` Junio C Hamano
2007-07-28 0:46 ` Johannes Schindelin
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=Pine.LNX.4.64.0707271958370.14781@racer.site \
--to=johannes.schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=matled@gmx.net \
/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).