t/t1402-check-ref-format.sh fails with bash-3.0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

With bash-3.0 (NOTE: CentOS 4's /bin/sh is actually a symlink to bash 3.0),
t/t1402-check-ref-format.sh failed.
Here is output.

% ~/bash-3.0.16/bin/bash --version
GNU bash, version 3.00.16(2)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.
% cd ~/git/t
% ~/bash-3.0.16/bin/bash t1402-check-ref-format.sh
ok 1 - ref name '' is invalid
ok 2 - ref name '/' is invalid
ok 3 - ref name '/' is invalid with options --allow-onelevel
ok 4 - ref name '/' is invalid with options --normalize
ok 5 - ref name '/' is invalid with options --allow-onelevel --normalize
ok 6 - ref name 'foo/bar/baz' is valid
ok 7 - ref name 'foo/bar/baz' is valid with options --normalize
ok 8 - ref name 'refs///heads/foo' is invalid
ok 9 - ref name 'refs///heads/foo' is valid with options --normalize
ok 10 - ref name 'heads/foo/' is invalid
ok 11 - ref name '/heads/foo' is invalid
ok 12 - ref name '/heads/foo' is valid with options --normalize
ok 13 - ref name '///heads/foo' is invalid
ok 14 - ref name '///heads/foo' is valid with options --normalize
ok 15 - ref name './foo' is invalid
ok 16 - ref name './foo/bar' is invalid
ok 17 - ref name 'foo/./bar' is invalid
ok 18 - ref name 'foo/bar/.' is invalid
ok 19 - ref name '.refs/foo' is invalid
ok 20 - ref name 'heads/foo..bar' is invalid
ok 21 - ref name 'heads/foo?bar' is invalid
ok 22 - ref name 'foo./bar' is valid
ok 23 - ref name 'heads/foo.lock' is invalid
ok 24 - ref name 'heads///foo.lock' is invalid
ok 25 - ref name 'foo.lock/bar' is invalid
ok 26 - ref name 'foo.lock///bar' is invalid
ok 27 - ref name 'heads/foo@bar' is valid
ok 28 - ref name 'heads/v@{ation' is invalid
ok 29 - ref name 'heads/foo\bar' is invalid
ok 30 - ref name 'heads/foo ' is invalid
not ok 31 - ref name 'heads/foo' is invalid
#
#    test_must_fail git check-ref-format  'heads/foo'
#
ok 32 - ref name 'heads/fuß' is valid
ok 33 - ref name 'heads/*foo/bar' is invalid with options --refspec-pattern
ok 34 - ref name 'heads/foo*/bar' is invalid with options --refspec-pattern
ok 35 - ref name 'heads/f*o/bar' is invalid with options --refspec-pattern
ok 36 - ref name 'foo' is invalid
ok 37 - ref name 'foo' is valid with options --allow-onelevel
ok 38 - ref name 'foo' is invalid with options --refspec-pattern
ok 39 - ref name 'foo' is valid with options --refspec-pattern --allow-onelevel
ok 40 - ref name 'foo' is invalid with options --normalize
ok 41 - ref name 'foo' is valid with options --allow-onelevel --normalize
ok 42 - ref name 'foo/bar' is valid
ok 43 - ref name 'foo/bar' is valid with options --allow-onelevel
ok 44 - ref name 'foo/bar' is valid with options --refspec-pattern
ok 45 - ref name 'foo/bar' is valid with options --refspec-pattern --allow-onelevel
ok 46 - ref name 'foo/bar' is valid with options --normalize
ok 47 - ref name 'foo/*' is invalid
ok 48 - ref name 'foo/*' is invalid with options --allow-onelevel
ok 49 - ref name 'foo/*' is valid with options --refspec-pattern
ok 50 - ref name 'foo/*' is valid with options --refspec-pattern --allow-onelevel
ok 51 - ref name '*/foo' is invalid
ok 52 - ref name '*/foo' is invalid with options --allow-onelevel
ok 53 - ref name '*/foo' is valid with options --refspec-pattern
ok 54 - ref name '*/foo' is valid with options --refspec-pattern --allow-onelevel
ok 55 - ref name '*/foo' is invalid with options --normalize
ok 56 - ref name '*/foo' is valid with options --refspec-pattern --normalize
ok 57 - ref name 'foo/*/bar' is invalid
ok 58 - ref name 'foo/*/bar' is invalid with options --allow-onelevel
ok 59 - ref name 'foo/*/bar' is valid with options --refspec-pattern
ok 60 - ref name 'foo/*/bar' is valid with options --refspec-pattern --allow-onelevel
ok 61 - ref name '*' is invalid
ok 62 - ref name '*' is invalid with options --allow-onelevel
ok 63 - ref name '*' is invalid with options --refspec-pattern
ok 64 - ref name '*' is valid with options --refspec-pattern --allow-onelevel
ok 65 - ref name 'foo/*/*' is invalid with options --refspec-pattern
ok 66 - ref name 'foo/*/*' is invalid with options --refspec-pattern --allow-onelevel
ok 67 - ref name '*/foo/*' is invalid with options --refspec-pattern
ok 68 - ref name '*/foo/*' is invalid with options --refspec-pattern --allow-onelevel
ok 69 - ref name '*/*/foo' is invalid with options --refspec-pattern
ok 70 - ref name '*/*/foo' is invalid with options --refspec-pattern --allow-onelevel
ok 71 - ref name '/foo' is invalid
ok 72 - ref name '/foo' is invalid with options --allow-onelevel
ok 73 - ref name '/foo' is invalid with options --refspec-pattern
ok 74 - ref name '/foo' is invalid with options --refspec-pattern --allow-onelevel
ok 75 - ref name '/foo' is invalid with options --normalize
ok 76 - ref name '/foo' is valid with options --allow-onelevel --normalize
ok 77 - ref name '/foo' is invalid with options --refspec-pattern --normalize
ok 78 - ref name '/foo' is valid with options --refspec-pattern --allow-onelevel --normalize
ok 79 - check-ref-format --branch @{-1}
ok 80 - check-ref-format --branch from subdir
ok 81 - ref name 'heads/foo' simplifies to 'heads/foo'
ok 82 - ref name 'refs///heads/foo' simplifies to 'refs/heads/foo'
ok 83 - ref name '/heads/foo' simplifies to 'heads/foo'
ok 84 - ref name '///heads/foo' simplifies to 'heads/foo'
ok 85 - check-ref-format --normalize rejects 'foo'
ok 86 - check-ref-format --normalize rejects '/foo'
ok 87 - check-ref-format --normalize rejects 'heads/foo/../bar'
ok 88 - check-ref-format --normalize rejects 'heads/./foo'
ok 89 - check-ref-format --normalize rejects 'heads\foo'
ok 90 - check-ref-format --normalize rejects 'heads/foo.lock'
ok 91 - check-ref-format --normalize rejects 'heads///foo.lock'
ok 92 - check-ref-format --normalize rejects 'foo.lock/bar'
ok 93 - check-ref-format --normalize rejects 'foo.lock///bar'
# failed 1 among 93 test(s)
1..93

31st test is:
invalid_ref "$(printf 'heads/foo\177')"

I found that bash-3.0 ignores DEL character(\177=\x7f) in double quoted string.
% cat test.sh
echo  $(printf 'heads/foo\177')  | hexdump -C
echo "$(printf 'heads/foo\177')" | hexdump -C
% ~/bash-3.0.16/bin/bash test.sh
00000000  68 65 61 64 73 2f 66 6f  6f 7f 0a                 |heads/foo..|
0000000b
00000000  68 65 61 64 73 2f 66 6f  6f 0a                    |heads/foo.|
0000000a

Thus 31st test is just equal to invalid_ref "heads/foo" and fails.

Thanks
-- 
Shoichi Kaji 		 	   		  --
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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]