public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Ramsay Jones <ramsay@ramsay1•demon.co.uk>
To: GIT Mailing-list <git@vger•kernel.org>
Cc: Ilya Bobyr <ilya.bobyr@gmail•com>, Junio C Hamano <gitster@pobox•com>
Subject: [PATCH/RFC] t0000-*.sh: Fix the GIT_SKIP_TESTS sub-tests
Date: Tue, 20 May 2014 22:26:58 +0100	[thread overview]
Message-ID: <537BC8A2.9060009@ramsay1.demon.co.uk> (raw)


Signed-off-by: Ramsay Jones <ramsay@ramsay1•demon.co.uk>
---

The test suite has been failing for me on the pu branch for
a while now. I finally found a few minutes to take a look.

This failure is specific to the dash shell (/bin/sh) on my
system (ie it may well affect other shells, but I haven't
tested them all ... :). This does not affect bash (or bash
as /bin/sh aka bash --posix).

The GIT_SKIP_TESTS, 13-15, all fail with verbose output
similar to:

  $ ./t0000-basic.sh -i -v
  ...
  --- expect	2014-05-20 20:55:54.138342361 +0000
  +++ out	2014-05-20 20:55:54.134342341 +0000
  @@ -1,5 +1,5 @@
   ok 1 - passing test #1
  -ok 2 # skip passing test #2 (GIT_SKIP_TESTS)
  +ok 2 - passing test #2
   ok 3 - passing test #3
   # passed all 3 test(s)
   1..3
  not ok 13 - GIT_SKIP_TESTS
  #	
  #		GIT_SKIP_TESTS='git.2' 		run_sub_test_lib_test git-skip-tests-basic 		'GIT_SKIP_TESTS' <<-\EOF &&
  #		for i in 1 2 3
  #		do
  #			test_expect_success "passing test #$i" 'true'
  #		done
  #		test_done
  #		EOF
  #		check_sub_test_lib_test git-skip-tests-basic <<-\EOF
  #		> ok 1 - passing test #1
  #		> ok 2 # skip passing test #2 (GIT_SKIP_TESTS)
  #		> ok 3 - passing test #3
  #		> # passed all 3 test(s)
  #		> 1..3
  #		EOF
  #	
  $ 

... which looks like the sub-test does not see the GIT_SKIP_TESTS
variable at all. Indeed, if I put the entire test in a sub-shell
and replace the use of that variable on the run_sub_test_lib_test
invocation with a separate explicit assignment and export, then
the tests start working. (ie if I do the opposite of some other
recent commits!)

This patch is an RFC, because I take a different approach to the
above solution, only because the diff is much smaller and easier
to read! Is it a better solution?

ATB,
Ramsay Jones

 t/t0000-basic.sh | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
index 8345c8a..373ad8f 100755
--- a/t/t0000-basic.sh
+++ b/t/t0000-basic.sh
@@ -296,8 +296,9 @@ test_expect_success 'test --verbose-only' '
 '
 
 test_expect_success 'GIT_SKIP_TESTS' "
-	GIT_SKIP_TESTS='git.2' \
-		run_sub_test_lib_test git-skip-tests-basic \
+	GIT_SKIP_TESTS='git.2' && export GIT_SKIP_TESTS &&
+	test_when_finished sane_unset GIT_SKIP_TESTS &&
+	run_sub_test_lib_test git-skip-tests-basic \
 		'GIT_SKIP_TESTS' <<-\\EOF &&
 	for i in 1 2 3
 	do
@@ -315,8 +316,9 @@ test_expect_success 'GIT_SKIP_TESTS' "
 "
 
 test_expect_success 'GIT_SKIP_TESTS several tests' "
-	GIT_SKIP_TESTS='git.2 git.5' \
-		run_sub_test_lib_test git-skip-tests-several \
+	GIT_SKIP_TESTS='git.2 git.5' && export GIT_SKIP_TESTS &&
+	test_when_finished sane_unset GIT_SKIP_TESTS &&
+	run_sub_test_lib_test git-skip-tests-several \
 		'GIT_SKIP_TESTS several tests' <<-\\EOF &&
 	for i in 1 2 3 4 5 6
 	do
@@ -337,8 +339,9 @@ test_expect_success 'GIT_SKIP_TESTS several tests' "
 "
 
 test_expect_success 'GIT_SKIP_TESTS sh pattern' "
-	GIT_SKIP_TESTS='git.[2-5]' \
-		run_sub_test_lib_test git-skip-tests-sh-pattern \
+	GIT_SKIP_TESTS='git.[2-5]' && export GIT_SKIP_TESTS &&
+	test_when_finished sane_unset GIT_SKIP_TESTS &&
+	run_sub_test_lib_test git-skip-tests-sh-pattern \
 		'GIT_SKIP_TESTS sh pattern' <<-\\EOF &&
 	for i in 1 2 3 4 5 6
 	do
-- 
1.9.0

             reply	other threads:[~2014-05-20 21:27 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-20 21:26 Ramsay Jones [this message]
2014-05-20 21:33 ` [PATCH/RFC] t0000-*.sh: Fix the GIT_SKIP_TESTS sub-tests Junio C Hamano
2014-05-20 21:40 ` Jonathan Nieder
2014-05-20 22:20   ` Ramsay Jones
2014-05-20 22:44     ` Jonathan Nieder
2014-05-20 23:33       ` Ramsay Jones

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=537BC8A2.9060009@ramsay1.demon.co.uk \
    --to=ramsay@ramsay1$(echo .)demon.co.uk \
    --cc=git@vger$(echo .)kernel.org \
    --cc=gitster@pobox$(echo .)com \
    --cc=ilya.bobyr@gmail$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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