* "./t0001-init.sh --valgrind" is broken
@ 2016-03-03 0:07 Christian Couder
2016-03-03 1:04 ` Duy Nguyen
0 siblings, 1 reply; 9+ messages in thread
From: Christian Couder @ 2016-03-03 0:07 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Nguyen Thai Ngoc Duy
Hi,
It looks like commit 57ea7123c86771f47f34e7d92d1822d8b429897a (git.c:
make sure we do not leak GIT_* to alias scripts, Dec 20 14:50:19 2015)
broke "./t0001-init.sh --valgrind".
I get:
expecting success:
(
env | sed -ne "/^GIT_/s/=.*//p" &&
echo GIT_PREFIX && # setup.c
echo GIT_TEXTDOMAINDIR # wrapper-for-bin.sh
) | sort | uniq >expected &&
cat <<-\EOF >script &&
#!/bin/sh
env | sed -ne "/^GIT_/s/=.*//p" | sort >actual
exit 0
EOF
chmod 755 script &&
git config alias.script \!./script &&
( mkdir sub && cd sub && git script ) &&
test_cmp expected actual
--- expected 2016-03-03 00:05:17.113754381 +0000
+++ actual 2016-03-03 00:05:19.041783583 +0000
@@ -10,7 +10,6 @@
GIT_PREFIX
GIT_TEMPLATE_DIR
GIT_TEST_TEE_STARTED
-GIT_TEXTDOMAINDIR
GIT_TRACE_BARE
GIT_VALGRIND
GIT_VALGRIND_ENABLED
not ok 6 - No extra GIT_* on alias scripts
It's late here so I don't have time to work on this tonight.
Thanks,
Christian.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: "./t0001-init.sh --valgrind" is broken
2016-03-03 0:07 "./t0001-init.sh --valgrind" is broken Christian Couder
@ 2016-03-03 1:04 ` Duy Nguyen
2016-03-03 2:57 ` Junio C Hamano
2016-03-03 6:55 ` Johannes Sixt
0 siblings, 2 replies; 9+ messages in thread
From: Duy Nguyen @ 2016-03-03 1:04 UTC (permalink / raw)
To: Christian Couder; +Cc: git, Junio C Hamano
On Thu, Mar 3, 2016 at 7:07 AM, Christian Couder
<christian.couder@gmail.com> wrote:
> Hi,
>
> It looks like commit 57ea7123c86771f47f34e7d92d1822d8b429897a (git.c:
> make sure we do not leak GIT_* to alias scripts, Dec 20 14:50:19 2015)
> broke "./t0001-init.sh --valgrind".
Just wanted to confirm the problem. I will look at it later today.
--
Duy
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: "./t0001-init.sh --valgrind" is broken
2016-03-03 1:04 ` Duy Nguyen
@ 2016-03-03 2:57 ` Junio C Hamano
2016-03-03 6:55 ` Johannes Sixt
1 sibling, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2016-03-03 2:57 UTC (permalink / raw)
To: Duy Nguyen; +Cc: Christian Couder, git
Duy Nguyen <pclouds@gmail.com> writes:
> On Thu, Mar 3, 2016 at 7:07 AM, Christian Couder
> <christian.couder@gmail.com> wrote:
>> Hi,
>>
>> It looks like commit 57ea7123c86771f47f34e7d92d1822d8b429897a (git.c:
>> make sure we do not leak GIT_* to alias scripts, Dec 20 14:50:19 2015)
>> broke "./t0001-init.sh --valgrind".
>
> Just wanted to confirm the problem. I will look at it later today.
Thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: "./t0001-init.sh --valgrind" is broken
2016-03-03 1:04 ` Duy Nguyen
2016-03-03 2:57 ` Junio C Hamano
@ 2016-03-03 6:55 ` Johannes Sixt
2016-03-03 12:09 ` Duy Nguyen
1 sibling, 1 reply; 9+ messages in thread
From: Johannes Sixt @ 2016-03-03 6:55 UTC (permalink / raw)
To: Duy Nguyen; +Cc: Christian Couder, git, Junio C Hamano
Am 03.03.2016 um 02:04 schrieb Duy Nguyen:
> On Thu, Mar 3, 2016 at 7:07 AM, Christian Couder
> <christian.couder@gmail.com> wrote:
>> Hi,
>>
>> It looks like commit 57ea7123c86771f47f34e7d92d1822d8b429897a (git.c:
>> make sure we do not leak GIT_* to alias scripts, Dec 20 14:50:19 2015)
>> broke "./t0001-init.sh --valgrind".
>
> Just wanted to confirm the problem. I will look at it later today.
>
Here's a patch.
---- 8< ----
Subject: [PATCH] t0001: fix GIT_* environment variable check under --valgrind
When a test case is run without --valgrind, the wrap-for-bin.sh
helper script inserts the environment variable GIT_TEXTDOMAINDIR, but
when run with --valgrind, the variable is missing. A recently
introduced test case expects the presence of the variable, though, and
fails under --valgrind.
Rewrite the test case to strip conditially defined environment variables
from both expected and actual output.
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
---
t/t0001-init.sh | 20 +++++++++-----------
1 file changed, 9 insertions(+), 11 deletions(-)
diff --git a/t/t0001-init.sh b/t/t0001-init.sh
index 295aa59..a5b9e7a 100755
--- a/t/t0001-init.sh
+++ b/t/t0001-init.sh
@@ -88,19 +88,17 @@ test_expect_success 'plain nested in bare through aliased command' '
'
test_expect_success 'No extra GIT_* on alias scripts' '
- (
- env | sed -ne "/^GIT_/s/=.*//p" &&
- echo GIT_PREFIX && # setup.c
- echo GIT_TEXTDOMAINDIR # wrapper-for-bin.sh
- ) | sort | uniq >expected &&
- cat <<-\EOF >script &&
- #!/bin/sh
- env | sed -ne "/^GIT_/s/=.*//p" | sort >actual
- exit 0
+ write_script script <<-\EOF &&
+ env |
+ sed -n \
+ -e "/^GIT_PREFIX=/d" \
+ -e "/^GIT_TEXTDOMAINDIR=/d" \
+ -e "/^GIT_/s/=.*//p" |
+ sort
EOF
- chmod 755 script &&
+ ./script >expected &&
git config alias.script \!./script &&
- ( mkdir sub && cd sub && git script ) &&
+ ( mkdir sub && cd sub && git script >../actual ) &&
test_cmp expected actual
'
--
2.7.0.118.g90056ae
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: "./t0001-init.sh --valgrind" is broken
2016-03-03 6:55 ` Johannes Sixt
@ 2016-03-03 12:09 ` Duy Nguyen
2016-03-03 12:16 ` Duy Nguyen
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Duy Nguyen @ 2016-03-03 12:09 UTC (permalink / raw)
To: Johannes Sixt; +Cc: Christian Couder, git, Junio C Hamano, Johannes Schindelin
+the-other-Johannes who added valgrind support.
On Thu, Mar 3, 2016 at 1:55 PM, Johannes Sixt <j6t@kdbg.org> wrote:
> ---- 8< ----
> Subject: [PATCH] t0001: fix GIT_* environment variable check under --valgrind
>
> When a test case is run without --valgrind, the wrap-for-bin.sh
> helper script inserts the environment variable GIT_TEXTDOMAINDIR, but
> when run with --valgrind, the variable is missing. A recently
> introduced test case expects the presence of the variable, though, and
> fails under --valgrind.
Yep.
It's interesting though that valgrind sets up some variables without
going through bin-wrappers. That's understandable because valgrind
support is added (in 4e1be63) 10 months before bin-wrappers (in
ea92519). But it's probably better that we inject valgrind command
from inside bin-wrappers script, the same way we inject gdb, I think.
> Rewrite the test case to strip conditially defined environment variables
> from both expected and actual output.
Or we could set GIT_TEXTDOMAINDIR in the "if test -n $valgrind" code
in test-lib.sh, which makes the two more consistent. Also simpler
patch.
> Signed-off-by: Johannes Sixt <j6t@kdbg.org>
> ---
> t/t0001-init.sh | 20 +++++++++-----------
> 1 file changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/t/t0001-init.sh b/t/t0001-init.sh
> index 295aa59..a5b9e7a 100755
> --- a/t/t0001-init.sh
> +++ b/t/t0001-init.sh
> @@ -88,19 +88,17 @@ test_expect_success 'plain nested in bare through aliased command' '
> '
>
> test_expect_success 'No extra GIT_* on alias scripts' '
> - (
> - env | sed -ne "/^GIT_/s/=.*//p" &&
> - echo GIT_PREFIX && # setup.c
> - echo GIT_TEXTDOMAINDIR # wrapper-for-bin.sh
> - ) | sort | uniq >expected &&
> - cat <<-\EOF >script &&
> - #!/bin/sh
> - env | sed -ne "/^GIT_/s/=.*//p" | sort >actual
> - exit 0
> + write_script script <<-\EOF &&
> + env |
> + sed -n \
> + -e "/^GIT_PREFIX=/d" \
> + -e "/^GIT_TEXTDOMAINDIR=/d" \
> + -e "/^GIT_/s/=.*//p" |
> + sort
> EOF
> - chmod 755 script &&
> + ./script >expected &&
> git config alias.script \!./script &&
> - ( mkdir sub && cd sub && git script ) &&
> + ( mkdir sub && cd sub && git script >../actual ) &&
> test_cmp expected actual
> '
>
> --
> 2.7.0.118.g90056ae
>
--
Duy
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: "./t0001-init.sh --valgrind" is broken
2016-03-03 12:09 ` Duy Nguyen
@ 2016-03-03 12:16 ` Duy Nguyen
2016-03-03 15:56 ` Junio C Hamano
2016-03-03 18:05 ` Jeff King
2016-03-03 18:17 ` Johannes Sixt
2 siblings, 1 reply; 9+ messages in thread
From: Duy Nguyen @ 2016-03-03 12:16 UTC (permalink / raw)
To: Johannes Sixt; +Cc: Christian Couder, git, Junio C Hamano, Johannes Schindelin
On Thu, Mar 3, 2016 at 7:09 PM, Duy Nguyen <pclouds@gmail.com> wrote:
> But it's probably better that we inject valgrind command
> from inside bin-wrappers script, the same way we inject gdb, I think.
For the best of both worlds, we should recreate bin-wrappers in
test-lib.sh (i.e. the valgrind way), not in Makefile. Somewhat
unrelated, but because topdir is getting really crowded and
bin-wrappers is used for the test suite only, it should be moved
inside t/ (i'm going to move all test-* to t/ too, later).
--
Duy
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: "./t0001-init.sh --valgrind" is broken
2016-03-03 12:16 ` Duy Nguyen
@ 2016-03-03 15:56 ` Junio C Hamano
0 siblings, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2016-03-03 15:56 UTC (permalink / raw)
To: Duy Nguyen; +Cc: Johannes Sixt, Christian Couder, git, Johannes Schindelin
Duy Nguyen <pclouds@gmail.com> writes:
> On Thu, Mar 3, 2016 at 7:09 PM, Duy Nguyen <pclouds@gmail.com> wrote:
>> But it's probably better that we inject valgrind command
>> from inside bin-wrappers script, the same way we inject gdb, I think.
>
> For the best of both worlds, we should recreate bin-wrappers in
> test-lib.sh (i.e. the valgrind way), not in Makefile.
>
> Somewhat
> unrelated, but because topdir is getting really crowded and
> bin-wrappers is used for the test suite only, it should be moved
> inside t/ (i'm going to move all test-* to t/ too, later).
Weren't there people who pointed their bin-wrappers/ with $PATH to
test/use freshly baked Git before they convince themselves that they
want to install it? Not building it from the top-level Makefile
and moving it to elsewhere would be two breakages for them.
I am not sure if that is a good idea.
Moving test-* sources out of the top-level is a good idea, and
placing test-* binaries somewhere other than the top-level is also a
good idea. Just like t/lib-*.sh are helpers for tests, these are
also test helpers that happen to be written in C and compiled, so I
don't have a strong objection to make t/ the new location for
them--a different location (e.g. a new "test-helpers/" directory) is
also something I can go with.
Thanks.
In any case, are these two messages objections to J6t's fix, or are
you fine with the fix for 2.8-rc1 and merely raising ideas to redo
it in a different (i.e. your) way after 2.8 final, or are you
planning to do a fix in a different way for 2.8-rc1?
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: "./t0001-init.sh --valgrind" is broken
2016-03-03 12:09 ` Duy Nguyen
2016-03-03 12:16 ` Duy Nguyen
@ 2016-03-03 18:05 ` Jeff King
2016-03-03 18:17 ` Johannes Sixt
2 siblings, 0 replies; 9+ messages in thread
From: Jeff King @ 2016-03-03 18:05 UTC (permalink / raw)
To: Duy Nguyen
Cc: Johannes Sixt, Christian Couder, git, Junio C Hamano,
Johannes Schindelin
On Thu, Mar 03, 2016 at 07:09:12PM +0700, Duy Nguyen wrote:
> +the-other-Johannes who added valgrind support.
>
> On Thu, Mar 3, 2016 at 1:55 PM, Johannes Sixt <j6t@kdbg.org> wrote:
> > ---- 8< ----
> > Subject: [PATCH] t0001: fix GIT_* environment variable check under --valgrind
> >
> > When a test case is run without --valgrind, the wrap-for-bin.sh
> > helper script inserts the environment variable GIT_TEXTDOMAINDIR, but
> > when run with --valgrind, the variable is missing. A recently
> > introduced test case expects the presence of the variable, though, and
> > fails under --valgrind.
>
> Yep.
>
> It's interesting though that valgrind sets up some variables without
> going through bin-wrappers. That's understandable because valgrind
> support is added (in 4e1be63) 10 months before bin-wrappers (in
> ea92519). But it's probably better that we inject valgrind command
> from inside bin-wrappers script, the same way we inject gdb, I think.
I had the same thought and even started on a patch, but it doesn't quite
work. The bin-wrappers are all about intercepting what goes into the
user's $PATH, and pointing our libexec dir at the main build.
So we have "git" and "git-upload-pack" in bin-wrappers, but not
"git-log". Whereas the valgrind code wants to intercept _all_ of the
test script's invocations of git, including ones spawned by scripts,
other git commands, etc. So conceptually, it wants to intercept
$GIT_EXEC_PATH.
-Peff
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: "./t0001-init.sh --valgrind" is broken
2016-03-03 12:09 ` Duy Nguyen
2016-03-03 12:16 ` Duy Nguyen
2016-03-03 18:05 ` Jeff King
@ 2016-03-03 18:17 ` Johannes Sixt
2 siblings, 0 replies; 9+ messages in thread
From: Johannes Sixt @ 2016-03-03 18:17 UTC (permalink / raw)
To: Duy Nguyen; +Cc: Christian Couder, git, Junio C Hamano, Johannes Schindelin
Am 03.03.2016 um 13:09 schrieb Duy Nguyen:
> +the-other-Johannes who added valgrind support.
>
> On Thu, Mar 3, 2016 at 1:55 PM, Johannes Sixt <j6t@kdbg.org> wrote:
>> ---- 8< ----
>> Subject: [PATCH] t0001: fix GIT_* environment variable check under --valgrind
>>
>> When a test case is run without --valgrind, the wrap-for-bin.sh
>> helper script inserts the environment variable GIT_TEXTDOMAINDIR, but
>> when run with --valgrind, the variable is missing. A recently
>> introduced test case expects the presence of the variable, though, and
>> fails under --valgrind.
>
> Yep.
>
> It's interesting though that valgrind sets up some variables without
> going through bin-wrappers. That's understandable because valgrind
> support is added (in 4e1be63) 10 months before bin-wrappers (in
> ea92519). But it's probably better that we inject valgrind command
> from inside bin-wrappers script, the same way we inject gdb, I think.
>
>> Rewrite the test case to strip conditially defined environment variables
>> from both expected and actual output.
>
> Or we could set GIT_TEXTDOMAINDIR in the "if test -n $valgrind" code
> in test-lib.sh, which makes the two more consistent. Also simpler
> patch.
My fix (or something along its lines) is needed nevertheless. Just
s/--valgrind/--with-dashes/g in the commit message if you want to fix
the --valgrind case differently ;-)
I run tests on Windows --with-dashes in the hopes that it saves a fork
and exec or two on every git invocation.
-- Hannes
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2016-03-03 18:17 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-03 0:07 "./t0001-init.sh --valgrind" is broken Christian Couder
2016-03-03 1:04 ` Duy Nguyen
2016-03-03 2:57 ` Junio C Hamano
2016-03-03 6:55 ` Johannes Sixt
2016-03-03 12:09 ` Duy Nguyen
2016-03-03 12:16 ` Duy Nguyen
2016-03-03 15:56 ` Junio C Hamano
2016-03-03 18:05 ` Jeff King
2016-03-03 18:17 ` Johannes Sixt
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).