t4018: an infrastructure to test hunk headers
Add an infrastructure that simplifies adding new tests of the hunk header regular expressions. To add new tests, a file with the syntax to test can be dropped in the directory t4018. The README file explains how a test file must contain; the README itself tests the default behavior. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
abf8f98602
commit
bfa7d01413
@ -100,7 +100,25 @@ test_expect_funcname () {
|
||||
grep "^@@.*@@ $1" diff
|
||||
}
|
||||
|
||||
for p in ada bibtex cpp csharp fortran html java matlab objc pascal perl php python ruby tex
|
||||
diffpatterns="
|
||||
ada
|
||||
bibtex
|
||||
cpp
|
||||
csharp
|
||||
fortran
|
||||
html
|
||||
java
|
||||
matlab
|
||||
objc
|
||||
pascal
|
||||
perl
|
||||
php
|
||||
python
|
||||
ruby
|
||||
tex
|
||||
"
|
||||
|
||||
for p in $diffpatterns
|
||||
do
|
||||
test_expect_success "builtin $p pattern compiles" '
|
||||
echo "*.java diff=$p" >.gitattributes &&
|
||||
@ -118,11 +136,6 @@ do
|
||||
'
|
||||
done
|
||||
|
||||
test_expect_success 'default behaviour' '
|
||||
rm -f .gitattributes &&
|
||||
test_expect_funcname "public class Beer\$"
|
||||
'
|
||||
|
||||
test_expect_success 'set up .gitattributes declaring drivers to test' '
|
||||
cat >.gitattributes <<-\EOF
|
||||
*.java diff=java
|
||||
@ -182,4 +195,39 @@ test_expect_success 'alternation in pattern' '
|
||||
test_expect_funcname "public static void main("
|
||||
'
|
||||
|
||||
test_expect_success 'setup hunk header tests' '
|
||||
for i in $diffpatterns
|
||||
do
|
||||
echo "$i-* diff=$i"
|
||||
done > .gitattributes &&
|
||||
|
||||
# add all test files to the index
|
||||
(
|
||||
cd "$TEST_DIRECTORY"/t4018 &&
|
||||
git --git-dir="$TRASH_DIRECTORY/.git" add .
|
||||
) &&
|
||||
|
||||
# place modified files in the worktree
|
||||
for i in $(git ls-files)
|
||||
do
|
||||
sed -e "s/ChangeMe/IWasChanged/" <"$TEST_DIRECTORY/t4018/$i" >"$i" || return 1
|
||||
done
|
||||
'
|
||||
|
||||
# check each individual file
|
||||
for i in $(git ls-files)
|
||||
do
|
||||
if grep broken "$i" >/dev/null 2>&1
|
||||
then
|
||||
result=failure
|
||||
else
|
||||
result=success
|
||||
fi
|
||||
test_expect_$result "hunk header: $i" "
|
||||
test_when_finished 'cat actual' && # for debugging only
|
||||
git diff -U1 $i >actual &&
|
||||
grep '@@ .* @@.*RIGHT' actual
|
||||
"
|
||||
done
|
||||
|
||||
test_done
|
||||
|
18
t/t4018/README
Normal file
18
t/t4018/README
Normal file
@ -0,0 +1,18 @@
|
||||
How to write RIGHT test cases
|
||||
=============================
|
||||
|
||||
Insert the word "ChangeMe" (exactly this form) at a distance of
|
||||
at least two lines from the line that must appear in the hunk header.
|
||||
|
||||
The text that must appear in the hunk header must contain the word
|
||||
"right", but in all upper-case, like in the title above.
|
||||
|
||||
To mark a test case that highlights a malfunction, insert the word
|
||||
BROKEN in all lower-case somewhere in the file.
|
||||
|
||||
This text is a bit twisted and out of order, but it is itself a
|
||||
test case for the default hunk header pattern. Know what you are doing
|
||||
if you change it.
|
||||
|
||||
BTW, this tests that the head line goes to the hunk header, not the line
|
||||
of equal signs.
|
Loading…
Reference in New Issue
Block a user