a0ae35ae2d
This test uses a rot13 filter, which is its own inverse. It tested only that the content was the same as the original after both the 'clean' and the 'smudge' filter were applied. This way it would not detect whether any filter was run at all. Hence, here we add another test that checks that the repository contained content that was processed by the 'clean' filter. Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
90 lines
2.2 KiB
Bash
Executable File
90 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='blob conversion via gitattributes'
|
|
|
|
. ./test-lib.sh
|
|
|
|
cat <<\EOF >rot13.sh
|
|
tr '[a-zA-Z]' '[n-za-mN-ZA-M]'
|
|
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"
|
|
} > expanded-keywords &&
|
|
|
|
{
|
|
echo "File with expanded keywords"
|
|
echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$"
|
|
echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$"
|
|
echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$"
|
|
echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$"
|
|
echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$"
|
|
echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$"
|
|
echo "\$Id: NoTerminatingSymbol"
|
|
} > 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
|