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

[PATCH] Add test case for running from a subdirectory with GIT_WORK_TREE

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Oct 27, 2007, 08:19 UTC
Message-ID
<20071027081954.GA23406@laptop>

This one is ugly (and not intended to submit to git.git), but it shows how to reproduce the issues. You can run it with arg "--normal" to see it works just fine without GIT_WORK_TREE.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 t/t1502-subworktree.sh |  109 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 109 insertions(+), 0 deletions(-)
 create mode 100755 t/t1502-subworktree.sh
diff --git a/t/t1502-subworktree.sh b/t/t1502-subworktree.sh
new file mode 100755
index 0000000..6b8f02f
--- /dev/null
+++ b/t/t1502-subworktree.sh
@@ -0,0 +1,109 @@
+#!/bin/sh
+
+test_description='test commands on separate work tree'
+. ./test-lib.sh
+
+mkdir -p work/sub/dir || exit 1
+mv .git work
+if test "$1" = --normal; then
+	say "Normal case"
+else
+	say "Worktree case"
+fi
+test "$1" = --normal || mv work/.git repo.git || exit 1
+
+test "$1" = --normal || export GIT_DIR=$(pwd)/repo.git
+export GIT_CONFIG="$(pwd)"/$GIT_DIR/config
+test "$1" = --normal || export GIT_WORK_TREE=$(pwd)/work
+
+cd work/sub || exit 1
+
+cat >expected <<EOF
+100644 9daeafb9864cf43055ae93beb0afd6c7d144bfa4 0	dir/untracked
+EOF
+
+test_expect_success 'git-ls-files' 'test expected = "$(git ls-files --others)"'
+
+test_expect_success 'git-add' '
+	 ( : > dir/untracked &&
+	 git add dir/untracked &&
+	 test dir/untracked = "$(git ls-files)")
+'
+test_expect_success 'git-update-index' '
+	( echo test > dir/untracked &&
+	git update-index dir/untracked &&
+	git ls-files --stage > check &&
+	cmp expected check)
+'
+
+test_expect_success 'git-commit' 'git commit -m one'
+
+cat >expected <<EOF
+100644 blob 9daeafb9864cf43055ae93beb0afd6c7d144bfa4	dir/untracked
+EOF
+
+test_expect_success 'git-ls-tree' '
+	(git ls-tree -r HEAD > check &&
+	cmp expected check)
+'
+test_expect_success 'git-rm' '
+	 (git rm --cached dir/untracked &&
+	 test -z "$(git ls-files)")
+'
+test_expect_success 'git-reset' '
+	(git reset HEAD -- dir/untracked &&
+	test dir/untracked = "$(git ls-files)")
+'
+test_expect_success 'git-annotate' 'git annotate dir/untracked'
+
+test_expect_success 'git-blame' 'git blame dir/untracked'
+
+cat > patch <<EOF
+From b774efc5a2199bfc1c9c18db70363c69a5a10c86 Mon Sep 17 00:00:00 2001
+From: A U Thor <author@example.com>
+Date: Tue, 23 Oct 2007 21:17:24 +0700
+Subject: bah
+
+---
+ sub/dir/untracked |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/sub/dir/untracked b/sub/dir/untracked
+index 9daeafb..c73d3ff 100644
+--- a/sub/dir/untracked
++++ b/sub/dir/untracked
+@@ -1 +1,2 @@
+ test
++test again
+-- 
+1.5.3.rc4.3.gab089
+
+EOF
+
+cat > expected <<EOF
+100644 c73d3ffa5fa32888de8219e49fd45d37dc209677 0	dir/untracked
+EOF
+
+test_expect_success 'git-apply to index' '
+	(git apply --index patch &&
+	git ls-files --stage > check &&
+	cmp expected check)'
+
+test_expect_failure 'git-apply to worktree' 'test -f sub/dir/untracked'
+
+test_expect_success 'git-reset --hard' '( git reset --hard HEAD && test -z "$(git ls-files -m)")'
+
+test_expect_failure 'git-am must not be run from subdir' 'git-am -k patch'
+
+test_expect_success 'git-reset --hard' 'git reset --hard HEAD'
+
+test_expect_success 'git-am' '(cd .. && git-am -k sub/patch)'
+
+test_expect_success 'git-format-patch' '
+	(git format-patch -k HEAD^ &&
+	sed "1d;/^-- /,\$d" patch > expected &&
+	sed "1d;/^-- /,\$d" 0001-bah.patch > check &&
+	cmp expected check)
+'
+
+test_done
-- 
1.5.3.rc4.3.gab089
Next: Johannes Schindelin
Message 1 of 4 in “Add test case for running from a subdirectory with GIT_WORK_TREE”
  1. Add test case for running from a subdirectory with GIT_WORK_TREENguyễn Thái Ngọc Duy, Oct 27, 2007
  2. Johannes SchindelinOct 27, 2007
  3. Junio C HamanoOct 28, 2007
  4. Johannes SchindelinOct 27, 2007

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.