You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.5 KiB
96 lines
2.5 KiB
#!/bin/sh |
|
|
|
test_description='blob conversion via gitattributes' |
|
|
|
. ./test-lib.sh |
|
|
|
cat <<EOF >rot13.sh |
|
#!$SHELL_PATH |
|
tr \ |
|
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' \ |
|
'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM' |
|
EOF |
|
chmod +x rot13.sh |
|
|
|
test_expect_success setup ' |
|
git config filter.rot13.smudge ./rot13.sh && |
|
git config filter.rot13.clean ./rot13.sh && |
|
|
|
{ |
|
echo "*.t filter=rot13" |
|
echo "*.i ident" |
|
} >.gitattributes && |
|
|
|
{ |
|
echo a b c d e f g h i j k l m |
|
echo n o p q r s t u v w x y z |
|
echo '\''$Id$'\'' |
|
} >test && |
|
cat test >test.t && |
|
cat test >test.o && |
|
cat test >test.i && |
|
git add test test.t test.i && |
|
rm -f test test.t test.i && |
|
git checkout -- test test.t test.i |
|
' |
|
|
|
script='s/^\$Id: \([0-9a-f]*\) \$/\1/p' |
|
|
|
test_expect_success check ' |
|
|
|
cmp test.o test && |
|
cmp test.o test.t && |
|
|
|
# ident should be stripped in the repository |
|
git diff --raw --exit-code :test :test.i && |
|
id=$(git rev-parse --verify :test) && |
|
embedded=$(sed -ne "$script" test.i) && |
|
test "z$id" = "z$embedded" && |
|
|
|
git cat-file blob :test.t > test.r && |
|
|
|
./rot13.sh < test.o > test.t && |
|
cmp test.r test.t |
|
' |
|
|
|
# If an expanded ident ever gets into the repository, we want to make sure that |
|
# it is collapsed before being expanded again on checkout |
|
test_expect_success expanded_in_repo ' |
|
{ |
|
echo "File with expanded keywords" |
|
echo "\$Id\$" |
|
echo "\$Id:\$" |
|
echo "\$Id: 0000000000000000000000000000000000000000 \$" |
|
echo "\$Id: NoSpaceAtEnd\$" |
|
echo "\$Id:NoSpaceAtFront \$" |
|
echo "\$Id:NoSpaceAtEitherEnd\$" |
|
echo "\$Id: NoTerminatingSymbol" |
|
echo "\$Id: Foreign Commit With Spaces \$" |
|
echo "\$Id: NoTerminatingSymbolAtEOF" |
|
} > expanded-keywords && |
|
|
|
{ |
|
echo "File with expanded keywords" |
|
echo "\$Id: fd0478f5f1486f3d5177d4c3f6eb2765e8fc56b9 \$" |
|
echo "\$Id: fd0478f5f1486f3d5177d4c3f6eb2765e8fc56b9 \$" |
|
echo "\$Id: fd0478f5f1486f3d5177d4c3f6eb2765e8fc56b9 \$" |
|
echo "\$Id: fd0478f5f1486f3d5177d4c3f6eb2765e8fc56b9 \$" |
|
echo "\$Id: fd0478f5f1486f3d5177d4c3f6eb2765e8fc56b9 \$" |
|
echo "\$Id: fd0478f5f1486f3d5177d4c3f6eb2765e8fc56b9 \$" |
|
echo "\$Id: NoTerminatingSymbol" |
|
echo "\$Id: Foreign Commit With Spaces \$" |
|
echo "\$Id: NoTerminatingSymbolAtEOF" |
|
} > expected-output && |
|
|
|
git add expanded-keywords && |
|
git commit -m "File with keywords expanded" && |
|
|
|
echo "expanded-keywords ident" >> .gitattributes && |
|
|
|
rm -f expanded-keywords && |
|
git checkout -- expanded-keywords && |
|
cat expanded-keywords && |
|
cmp expanded-keywords expected-output |
|
' |
|
|
|
test_done
|
|
|