{"thread":{"id":"34247","subject":"t/t1402-check-ref-format.sh fails with bash-3.0","startedAt":"2013-06-21T16:59:35Z","lastAt":"2013-06-21T16:59:35Z","messageCount":1,"participants":["Shoichi Kaji"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"221614","messageId":"BAY167-W78B20F436837AAA12899BA68F0@phx.gbl","threadId":"34247","inReplyTo":null,"subject":"t/t1402-check-ref-format.sh fails with bash-3.0","fromName":"Shoichi Kaji","fromEmail":"skaji@outlook.com","sentAt":"2013-06-21T16:59:35Z","receivedAt":"2013-06-21T16:59:35Z","isPatch":false,"sender":{"key":"skaji@outlook.com","avatar":null},"body":"Hi,\n\nWith bash-3.0 (NOTE: CentOS 4's /bin/sh is actually a symlink to bash 3.0),\nt/t1402-check-ref-format.sh failed.\nHere is output.\n\n% ~/bash-3.0.16/bin/bash --version\nGNU bash, version 3.00.16(2)-release (x86_64-unknown-linux-gnu)\nCopyright (C) 2004 Free Software Foundation, Inc.\n% cd ~/git/t\n% ~/bash-3.0.16/bin/bash t1402-check-ref-format.sh\nok 1 - ref name '' is invalid\nok 2 - ref name '/' is invalid\nok 3 - ref name '/' is invalid with options --allow-onelevel\nok 4 - ref name '/' is invalid with options --normalize\nok 5 - ref name '/' is invalid with options --allow-onelevel --normalize\nok 6 - ref name 'foo/bar/baz' is valid\nok 7 - ref name 'foo/bar/baz' is valid with options --normalize\nok 8 - ref name 'refs///heads/foo' is invalid\nok 9 - ref name 'refs///heads/foo' is valid with options --normalize\nok 10 - ref name 'heads/foo/' is invalid\nok 11 - ref name '/heads/foo' is invalid\nok 12 - ref name '/heads/foo' is valid with options --normalize\nok 13 - ref name '///heads/foo' is invalid\nok 14 - ref name '///heads/foo' is valid with options --normalize\nok 15 - ref name './foo' is invalid\nok 16 - ref name './foo/bar' is invalid\nok 17 - ref name 'foo/./bar' is invalid\nok 18 - ref name 'foo/bar/.' is invalid\nok 19 - ref name '.refs/foo' is invalid\nok 20 - ref name 'heads/foo..bar' is invalid\nok 21 - ref name 'heads/foo?bar' is invalid\nok 22 - ref name 'foo./bar' is valid\nok 23 - ref name 'heads/foo.lock' is invalid\nok 24 - ref name 'heads///foo.lock' is invalid\nok 25 - ref name 'foo.lock/bar' is invalid\nok 26 - ref name 'foo.lock///bar' is invalid\nok 27 - ref name 'heads/foo@bar' is valid\nok 28 - ref name 'heads/v@{ation' is invalid\nok 29 - ref name 'heads/foo\\bar' is invalid\nok 30 - ref name 'heads/foo ' is invalid\nnot ok 31 - ref name 'heads/foo' is invalid\n#\n#    test_must_fail git check-ref-format  'heads/foo'\n#\nok 32 - ref name 'heads/fuß' is valid\nok 33 - ref name 'heads/*foo/bar' is invalid with options --refspec-pattern\nok 34 - ref name 'heads/foo*/bar' is invalid with options --refspec-pattern\nok 35 - ref name 'heads/f*o/bar' is invalid with options --refspec-pattern\nok 36 - ref name 'foo' is invalid\nok 37 - ref name 'foo' is valid with options --allow-onelevel\nok 38 - ref name 'foo' is invalid with options --refspec-pattern\nok 39 - ref name 'foo' is valid with options --refspec-pattern --allow-onelevel\nok 40 - ref name 'foo' is invalid with options --normalize\nok 41 - ref name 'foo' is valid with options --allow-onelevel --normalize\nok 42 - ref name 'foo/bar' is valid\nok 43 - ref name 'foo/bar' is valid with options --allow-onelevel\nok 44 - ref name 'foo/bar' is valid with options --refspec-pattern\nok 45 - ref name 'foo/bar' is valid with options --refspec-pattern --allow-onelevel\nok 46 - ref name 'foo/bar' is valid with options --normalize\nok 47 - ref name 'foo/*' is invalid\nok 48 - ref name 'foo/*' is invalid with options --allow-onelevel\nok 49 - ref name 'foo/*' is valid with options --refspec-pattern\nok 50 - ref name 'foo/*' is valid with options --refspec-pattern --allow-onelevel\nok 51 - ref name '*/foo' is invalid\nok 52 - ref name '*/foo' is invalid with options --allow-onelevel\nok 53 - ref name '*/foo' is valid with options --refspec-pattern\nok 54 - ref name '*/foo' is valid with options --refspec-pattern --allow-onelevel\nok 55 - ref name '*/foo' is invalid with options --normalize\nok 56 - ref name '*/foo' is valid with options --refspec-pattern --normalize\nok 57 - ref name 'foo/*/bar' is invalid\nok 58 - ref name 'foo/*/bar' is invalid with options --allow-onelevel\nok 59 - ref name 'foo/*/bar' is valid with options --refspec-pattern\nok 60 - ref name 'foo/*/bar' is valid with options --refspec-pattern --allow-onelevel\nok 61 - ref name '*' is invalid\nok 62 - ref name '*' is invalid with options --allow-onelevel\nok 63 - ref name '*' is invalid with options --refspec-pattern\nok 64 - ref name '*' is valid with options --refspec-pattern --allow-onelevel\nok 65 - ref name 'foo/*/*' is invalid with options --refspec-pattern\nok 66 - ref name 'foo/*/*' is invalid with options --refspec-pattern --allow-onelevel\nok 67 - ref name '*/foo/*' is invalid with options --refspec-pattern\nok 68 - ref name '*/foo/*' is invalid with options --refspec-pattern --allow-onelevel\nok 69 - ref name '*/*/foo' is invalid with options --refspec-pattern\nok 70 - ref name '*/*/foo' is invalid with options --refspec-pattern --allow-onelevel\nok 71 - ref name '/foo' is invalid\nok 72 - ref name '/foo' is invalid with options --allow-onelevel\nok 73 - ref name '/foo' is invalid with options --refspec-pattern\nok 74 - ref name '/foo' is invalid with options --refspec-pattern --allow-onelevel\nok 75 - ref name '/foo' is invalid with options --normalize\nok 76 - ref name '/foo' is valid with options --allow-onelevel --normalize\nok 77 - ref name '/foo' is invalid with options --refspec-pattern --normalize\nok 78 - ref name '/foo' is valid with options --refspec-pattern --allow-onelevel --normalize\nok 79 - check-ref-format --branch @{-1}\nok 80 - check-ref-format --branch from subdir\nok 81 - ref name 'heads/foo' simplifies to 'heads/foo'\nok 82 - ref name 'refs///heads/foo' simplifies to 'refs/heads/foo'\nok 83 - ref name '/heads/foo' simplifies to 'heads/foo'\nok 84 - ref name '///heads/foo' simplifies to 'heads/foo'\nok 85 - check-ref-format --normalize rejects 'foo'\nok 86 - check-ref-format --normalize rejects '/foo'\nok 87 - check-ref-format --normalize rejects 'heads/foo/../bar'\nok 88 - check-ref-format --normalize rejects 'heads/./foo'\nok 89 - check-ref-format --normalize rejects 'heads\\foo'\nok 90 - check-ref-format --normalize rejects 'heads/foo.lock'\nok 91 - check-ref-format --normalize rejects 'heads///foo.lock'\nok 92 - check-ref-format --normalize rejects 'foo.lock/bar'\nok 93 - check-ref-format --normalize rejects 'foo.lock///bar'\n# failed 1 among 93 test(s)\n1..93\n\n31st test is:\ninvalid_ref \"$(printf 'heads/foo\\177')\"\n\nI found that bash-3.0 ignores DEL character(\\177=\\x7f) in double quoted string.\n% cat test.sh\necho  $(printf 'heads/foo\\177')  | hexdump -C\necho \"$(printf 'heads/foo\\177')\" | hexdump -C\n% ~/bash-3.0.16/bin/bash test.sh\n00000000  68 65 61 64 73 2f 66 6f  6f 7f 0a                 |heads/foo..|\n0000000b\n00000000  68 65 61 64 73 2f 66 6f  6f 0a                    |heads/foo.|\n0000000a\n\nThus 31st test is just equal to invalid_ref \"heads/foo\" and fails.\n\nThanks\n-- \nShoichi Kaji \t\t \t   \t\t  "}]}