git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jens Lehmann <Jens.Lehmann@web.de>
To: Junio C Hamano <gitster@pobox.com>
Cc: Git Mailing List <git@vger.kernel.org>,
	Jonathan Nieder <jrnieder@gmail.com>
Subject: [PATCH] t1020: Get rid of 'cd "$HERE"' at the start of each test
Date: Tue, 07 Sep 2010 12:29:20 +0200	[thread overview]
Message-ID: <4C861400.2030901@web.de> (raw)
In-Reply-To: <7vhbi2tqd0.fsf@alter.siamese.dyndns.org>

To achieve that, all cd commands which weren't inside a subshell had to
be put into a new one.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
---

Am 07.09.2010 01:16, schrieb Junio C Hamano:
> If we were to do this, shouldn't we be able to lose 'cd "$HERE"' at the
> beginning of each test?  The test after this one does "cd dir" without
> even coming back up and relies on the next one to go back itself,

You are right, patch included. I had to introduce some new subshells
for that and used the new formatting proposed by Jonathan (but I didn't
touch the one introduced by my earlier patch which is reformatted by
Jonathan's "[PATCH 1/7] tests: subshell indentation stylefix", so both
patches won't conflict.


> suggesting that grepping for 'cd ..' may not be sufficient, depending on
> what we are trying to fix.

Yeah, I knew this would only show a part of the problems. But you have
to start somewhere, no? :-)
(My first intention was to systematically search for missing &&, as
those really can be nasty, but my script-fu was not up to that task)


> If we were to insist that no matter how an individual test fail, the test
> that follows it must start in a known location (namely, $TRASH), then we
> might want to use something like the attached patch.  On the other hand,
> we might want to be lenient to a test suite whose one test moves around
> and the test that follows such a test knows that, and also anticipates
> that the previous one _can_ fail and tries recover from that failure (e.g.
> use of 'cd "$HERE"' in the test that follows the above one.

I think we should force that each test finishes somewhere inside $TRASH,
but not necessarily at the top level.

 t/t1020-subdirectory.sh |   91 ++++++++++++++++++++++++++---------------------
 1 files changed, 50 insertions(+), 41 deletions(-)

diff --git a/t/t1020-subdirectory.sh b/t/t1020-subdirectory.sh
index c36157a..0eb4488 100755
--- a/t/t1020-subdirectory.sh
+++ b/t/t1020-subdirectory.sh
@@ -16,12 +16,10 @@ test_expect_success setup '
 	cp one original.one &&
 	cp dir/two original.two
 '
-HERE=`pwd`
 LF='
 '

 test_expect_success 'update-index and ls-files' '
-	cd "$HERE" &&
 	git update-index --add one &&
 	case "`git ls-files`" in
 	one) echo pass one ;;
@@ -41,20 +39,20 @@ test_expect_success 'update-index and ls-files' '
 '

 test_expect_success 'cat-file' '
-	cd "$HERE" &&
 	two=`git ls-files -s dir/two` &&
 	two=`expr "$two" : "[0-7]* \\([0-9a-f]*\\)"` &&
 	echo "$two" &&
 	git cat-file -p "$two" >actual &&
 	cmp dir/two actual &&
-	cd dir &&
-	git cat-file -p "$two" >actual &&
-	cmp two actual
+	(
+		cd dir &&
+		git cat-file -p "$two" >actual &&
+		cmp two actual
+	)
 '
 rm -f actual dir/actual

 test_expect_success 'diff-files' '
-	cd "$HERE" &&
 	echo a >>one &&
 	echo d >>dir/two &&
 	case "`git diff-files --name-only`" in
@@ -62,77 +60,88 @@ test_expect_success 'diff-files' '
 	*) echo bad top; exit 1 ;;
 	esac &&
 	# diff should not omit leading paths
-	cd dir &&
-	case "`git diff-files --name-only`" in
-	dir/two"$LF"one) echo pass subdir ;;
-	*) echo bad subdir; exit 1 ;;
-	esac &&
-	case "`git diff-files --name-only .`" in
-	dir/two) echo pass subdir limited ;;
-	*) echo bad subdir limited; exit 1 ;;
-	esac
+	(
+		cd dir &&
+		case "`git diff-files --name-only`" in
+		dir/two"$LF"one) echo pass subdir ;;
+		*) echo bad subdir; exit 1 ;;
+		esac &&
+		case "`git diff-files --name-only .`" in
+		dir/two) echo pass subdir limited ;;
+		*) echo bad subdir limited; exit 1 ;;
+		esac
+	)
 '

 test_expect_success 'write-tree' '
-	cd "$HERE" &&
 	top=`git write-tree` &&
 	echo $top &&
-	cd dir &&
-	sub=`git write-tree` &&
-	echo $sub &&
-	test "z$top" = "z$sub"
+	(
+		cd dir &&
+		sub=`git write-tree` &&
+		echo $sub &&
+		test "z$top" = "z$sub"
+	)
 '

 test_expect_success 'checkout-index' '
-	cd "$HERE" &&
 	git checkout-index -f -u one &&
 	cmp one original.one &&
-	cd dir &&
-	git checkout-index -f -u two &&
-	cmp two ../original.two
+	(
+		cd dir &&
+		git checkout-index -f -u two &&
+		cmp two ../original.two
+	)
 '

 test_expect_success 'read-tree' '
-	cd "$HERE" &&
 	rm -f one dir/two &&
 	tree=`git write-tree` &&
 	git read-tree --reset -u "$tree" &&
 	cmp one original.one &&
 	cmp dir/two original.two &&
-	cd dir &&
-	rm -f two &&
-	git read-tree --reset -u "$tree" &&
-	cmp two ../original.two &&
-	cmp ../one ../original.one
+	(
+		cd dir &&
+		rm -f two &&
+		git read-tree --reset -u "$tree" &&
+		cmp two ../original.two &&
+		cmp ../one ../original.one
+	)
 '

 test_expect_success 'no file/rev ambiguity check inside .git' '
-	cd "$HERE" &&
 	git commit -a -m 1 &&
-	cd "$HERE"/.git &&
-	git show -s HEAD
+	(
+		cd .git &&
+		git show -s HEAD
+	)
 '

 test_expect_success 'no file/rev ambiguity check inside a bare repo' '
-	cd "$HERE" &&
 	git clone -s --bare .git foo.git &&
-	cd foo.git && GIT_DIR=. git show -s HEAD
+	(
+		cd foo.git &&
+		GIT_DIR=. git show -s HEAD
+	)
 '

 # This still does not work as it should...
 : test_expect_success 'no file/rev ambiguity check inside a bare repo' '
-	cd "$HERE" &&
 	git clone -s --bare .git foo.git &&
-	cd foo.git && git show -s HEAD
+	(
+		cd foo.git &&
+		git show -s HEAD
+	)
 '

 test_expect_success SYMLINKS 'detection should not be fooled by a symlink' '
-	cd "$HERE" &&
 	rm -fr foo.git &&
 	git clone -s .git another &&
 	ln -s another yetanother &&
-	cd yetanother/.git &&
-	git show -s HEAD
+	(
+		cd yetanother/.git &&
+		git show -s HEAD
+	)
 '

 test_done
-- 
1.7.3.rc0.182.g5433f

      parent reply	other threads:[~2010-09-07 10:29 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-06 18:39 [PATCH] Several tests: cd inside subshell instead of around Jens Lehmann
2010-09-06 19:06 ` Jonathan Nieder
2010-09-06 20:12   ` Jens Lehmann
2010-09-07  1:41     ` [PATCH 0/7] " Jonathan Nieder
2010-09-07  1:42       ` [PATCH 1/7] tests: subshell indentation stylefix Jonathan Nieder
2010-09-07  3:44         ` Jonathan Nieder
2010-09-07  1:47       ` [PATCH 2/7] t1450 (fsck): remove dangling objects Jonathan Nieder
2010-09-07  1:49       ` [PATCH 3/7] t2105 (gitfile): add missing && Jonathan Nieder
2010-09-07 12:57         ` Brad King
2010-09-07  1:50       ` [PATCH 4/7] t0004 (unwritable files): simplify error handling Jonathan Nieder
2010-09-07  1:52       ` [PATCH 5/7] t1302 (core.repositoryversion): style tweaks Jonathan Nieder
2010-09-07 23:45         ` Nguyen Thai Ngoc Duy
2010-09-07  1:53       ` [PATCH 6/7] t1303 (config): " Jonathan Nieder
2010-09-07  4:30         ` Jeff King
2010-09-07  4:52           ` Junio C Hamano
2010-09-07  5:27             ` Jonathan Nieder
2010-09-07  5:12           ` guarding everything with test_expect_success (Re: [PATCH 6/7] t1303 (config): style tweaks) Jonathan Nieder
2010-09-07  5:56             ` Jeff King
2010-09-07  6:12               ` Jonathan Nieder
2010-09-07  1:55       ` [PATCH/RFC 7/7] t2016 (checkout -p): use printf for multiline y/n input Jonathan Nieder
2010-09-07  8:06         ` Thomas Rast
2010-09-07  8:22           ` Jonathan Nieder
2010-09-06 23:16 ` [PATCH] Several tests: cd inside subshell instead of around Junio C Hamano
2010-09-07  2:37   ` Jonathan Nieder
2010-09-07  5:08     ` Junio C Hamano
2010-09-07  5:19       ` Jonathan Nieder
2010-09-07 10:29   ` Jens Lehmann [this message]

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C861400.2030901@web.de \
    --to=jens.lehmann@web.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jrnieder@gmail.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).