Fourth batch
[git/raj.git] / t / t4018-diff-funcname.sh
blob9d077975791c1c002b4a927dfae71de594c8855f
1 #!/bin/sh
3 # Copyright (c) 2007 Johannes E. Schindelin
6 test_description='Test custom diff function name patterns'
8 . ./test-lib.sh
10 test_expect_success 'setup' '
11 # a non-trivial custom pattern
12 git config diff.custom1.funcname "!static
13 !String
14 [^ ].*s.*" &&
16 # a custom pattern which matches to end of line
17 git config diff.custom2.funcname "......Beer\$" &&
19 # alternation in pattern
20 git config diff.custom3.funcname "Beer$" &&
21 git config diff.custom3.xfuncname "^[ ]*((public|static).*)$" &&
23 # for regexp compilation tests
24 echo A >A.java &&
25 echo B >B.java
28 diffpatterns="
29 ada
30 bibtex
31 cpp
32 csharp
33 css
34 dts
35 elixir
36 fortran
37 fountain
38 golang
39 html
40 java
41 markdown
42 matlab
43 objc
44 pascal
45 perl
46 php
47 python
48 ruby
49 rust
50 tex
51 custom1
52 custom2
53 custom3
56 for p in $diffpatterns
58 test_expect_success "builtin $p pattern compiles" '
59 echo "*.java diff=$p" >.gitattributes &&
60 test_expect_code 1 git diff --no-index \
61 A.java B.java 2>msg &&
62 test_i18ngrep ! fatal msg &&
63 test_i18ngrep ! error msg
65 test_expect_success "builtin $p wordRegex pattern compiles" '
66 echo "*.java diff=$p" >.gitattributes &&
67 test_expect_code 1 git diff --no-index --word-diff \
68 A.java B.java 2>msg &&
69 test_i18ngrep ! fatal msg &&
70 test_i18ngrep ! error msg
72 done
74 test_expect_success 'last regexp must not be negated' '
75 echo "*.java diff=java" >.gitattributes &&
76 test_config diff.java.funcname "!static" &&
77 test_expect_code 128 git diff --no-index A.java B.java 2>msg &&
78 test_i18ngrep ": Last expression must not be negated:" msg
81 test_expect_success 'setup hunk header tests' '
82 for i in $diffpatterns
84 echo "$i-* diff=$i"
85 done > .gitattributes &&
87 # add all test files to the index
89 cd "$TEST_DIRECTORY"/t4018 &&
90 git --git-dir="$TRASH_DIRECTORY/.git" add .
91 ) &&
93 # place modified files in the worktree
94 for i in $(git ls-files)
96 sed -e "s/ChangeMe/IWasChanged/" <"$TEST_DIRECTORY/t4018/$i" >"$i" || return 1
97 done
100 # check each individual file
101 for i in $(git ls-files)
103 if grep broken "$i" >/dev/null 2>&1
104 then
105 result=failure
106 else
107 result=success
109 test_expect_$result "hunk header: $i" "
110 git diff -U1 $i >actual &&
111 grep '@@ .* @@.*RIGHT' actual
113 done
115 test_done