Git fork
at reftables-rust 122 lines 3.4 kB view raw
1#!/bin/sh 2# 3# Copyright (c) 2007 Johannes E. Schindelin 4# 5 6test_description='Test custom diff function name patterns' 7 8. ./test-lib.sh 9 10test_expect_success 'setup' ' 11 # a non-trivial custom pattern 12 git config diff.custom1.funcname "!static 13!String 14[^ ].*s.*" && 15 16 # a custom pattern which matches to end of line 17 git config diff.custom2.funcname "......Beer\$" && 18 19 # alternation in pattern 20 git config diff.custom3.funcname "Beer$" && 21 git config diff.custom3.xfuncname "^[ ]*((public|static).*)$" && 22 23 # for regexp compilation tests 24 echo A >A.java && 25 echo B >B.java 26' 27 28test_expect_success 'setup: test-tool userdiff' ' 29 # Make sure additions to builtin_drivers are sorted 30 test_when_finished "rm builtin-drivers.sorted" && 31 test-tool userdiff list-builtin-drivers >builtin-drivers && 32 test_file_not_empty builtin-drivers && 33 sort <builtin-drivers >builtin-drivers.sorted && 34 test_cmp builtin-drivers.sorted builtin-drivers && 35 36 # Ditto, but "custom" requires the .git directory and config 37 # to be setup and read. 38 test_when_finished "rm custom-drivers.sorted" && 39 test-tool userdiff list-custom-drivers >custom-drivers && 40 test_file_not_empty custom-drivers && 41 sort <custom-drivers >custom-drivers.sorted && 42 test_cmp custom-drivers.sorted custom-drivers 43' 44 45diffpatterns=" 46 $(cat builtin-drivers) 47 $(cat custom-drivers) 48" 49 50for p in $diffpatterns 51do 52 test_expect_success "builtin $p pattern compiles" ' 53 echo "*.java diff=$p" >.gitattributes && 54 test_expect_code 1 git diff --no-index \ 55 A.java B.java 2>msg && 56 test_grep ! fatal msg && 57 test_grep ! error msg 58 ' 59 test_expect_success "builtin $p wordRegex pattern compiles" ' 60 echo "*.java diff=$p" >.gitattributes && 61 test_expect_code 1 git diff --no-index --word-diff \ 62 A.java B.java 2>msg && 63 test_grep ! fatal msg && 64 test_grep ! error msg 65 ' 66 67 test_expect_success "builtin $p pattern compiles on bare repo with --attr-source" ' 68 test_when_finished "rm -rf bare.git" && 69 git checkout -B master && 70 git add . && 71 echo "*.java diff=notexist" >.gitattributes && 72 git add .gitattributes && 73 git commit -am "changing gitattributes" && 74 git checkout -B branchA && 75 echo "*.java diff=$p" >.gitattributes && 76 git add .gitattributes && 77 git commit -am "changing gitattributes" && 78 git clone --bare --no-local . bare.git && 79 git -C bare.git symbolic-ref HEAD refs/heads/master && 80 test_expect_code 1 git -C bare.git --attr-source=branchA \ 81 diff --exit-code HEAD:A.java HEAD:B.java 2>msg && 82 test_grep ! fatal msg && 83 test_grep ! error msg 84 ' 85done 86 87test_expect_success 'last regexp must not be negated' ' 88 echo "*.java diff=java" >.gitattributes && 89 test_config diff.java.funcname "!static" && 90 test_expect_code 128 git diff --no-index A.java B.java 2>msg && 91 test_grep ": Last expression must not be negated:" msg 92' 93 94test_expect_success 'setup hunk header tests' ' 95 for i in $diffpatterns 96 do 97 echo "$i-* diff=$i" || return 1 98 done > .gitattributes && 99 100 # add all test files to the index 101 ( 102 cd "$TEST_DIRECTORY"/t4018 && 103 git --git-dir="$TRASH_DIRECTORY/.git" add . 104 ) && 105 106 # place modified files in the worktree 107 for i in $(git ls-files) 108 do 109 sed -e "s/ChangeMe/IWasChanged/" <"$TEST_DIRECTORY/t4018/$i" >"$i" || return 1 110 done 111' 112 113# check each individual file 114for i in $(git ls-files) 115do 116 test_expect_success "hunk header: $i" " 117 git diff -U1 $i >actual && 118 grep '@@ .* @@.*RIGHT' actual 119 " 120done 121 122test_done