Re: t5801-remote-helpers.sh fails
From: Torsten Bögershausen <hidden>
Date: 2016-06-15 22:55:19
Subsystem:
the rest · Maintainer:
Linus Torvalds
On 10.11.12 23:05, Felipe Contreras wrote:
On Sat, Nov 10, 2012 at 8:20 PM, Torsten Bögershausen [off-list ref] wrote:quoted
On 11/10/2012 08:15 PM, Felipe Contreras wrote:quoted
Hi, On Sat, Nov 10, 2012 at 2:48 PM, Torsten Bögershausen [off-list ref] wrote:quoted
on peff/pu t5801 fails, the error is in git-remote-testgit, please see below. That's on my Mac OS X box. I haven't digged further into the test case, but it looks as if "[-+]A make NAMEs associative arrays" is not supported on this version of bash. /Torsten /Users/tb/projects/git/git.peff/git-remote-testgit: line 64: declare: -A: invalid option declare: usage: declare [-afFirtx] [-p] [name[=value] ...] /Users/tb/projects/git/git.peff/git-remote-testgit: line 66: refs/heads/master: division by 0 (error token is "/master") error: fast-export died of signal 13 fatal: Error while running fast-exportWhat is your bash --version?bash --version GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0) Copyright (C) 2007 Free Software Foundation, Inc.I see, that version indeed doesn't have associative arrays.quoted
On the other hand, Documentation/CodingGuidelines says: - No shell arrays.Yeah, for shell code I guess, but this is bash code.quoted
Could we use perl to have arrays?I think the code in perl would be harder to follow, and this is meant not only as a test, but also as a reference. I'm not exactly sure what we should do here: a) remove the code (would not be so good as a reference) b) enable the code conditionally based on the version of bash (harder to read) c) replace the code without associative arrays (will be much more complicated and ugly) d) add a check for the bash version to the top of the test in t/ I'm leaning towards d), followed by b). If only there was a clean way to do this, so c) would not be so ugly. After investigating different optins this seems to be the best: join -e empty -o '0 1.2 2.2' -a 2 <(echo "$before") <(echo "$after") | while read e a b; do test "$a" == "$b" && continue echo "changed $e" done But to me seems a bit harder to grasp. Not sure. Cheers.
Hi again, I managed to have a working solution for "d) add a check for the bash version to the top of the test in t/" Please see diff below. This unbreaks the test suite here. Is this a good way forward? Filipe, does the code line you mention above work for you? If yes: I can test it here, if you send it as a patch. /Torsten
diff --git a/t/t5801-remote-helpers.sh b/t/t5801-remote-helpers.sh
old mode 100644
new mode 100755
index 6e4e078..ea3d0f3
--- a/t/t5801-remote-helpers.sh
+++ b/t/t5801-remote-helpers.sh@@ -13,6 +13,15 @@ compare_refs() { test_cmp expect actual } +cat >"testbashArray" <<-EOF + declare -A assa +EOF + +/bin/bash testbashArray || { + skip_all='t5801. /bin/bash does not handle associative arrays' + test_done +} + test_expect_success 'setup repository' ' git init server && (cd server &&