On 10.11.12 23:05, Felipe Contreras wrote: > On Sat, Nov 10, 2012 at 8:20 PM, Torsten Bögershausen <tboegi@xxxxxx> wrote: >> On 11/10/2012 08:15 PM, Felipe Contreras wrote: >>> >>> Hi, >>> >>> On Sat, Nov 10, 2012 at 2:48 PM, Torsten Bögershausen <tboegi@xxxxxx> >>> wrote: >>> >>>> 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-export >>> >>> >>> What 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. > >> On the other hand, Documentation/CodingGuidelines says: >> - No shell arrays. > > Yeah, for shell code I guess, but this is bash code. > >> 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 && -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html