-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'cb/diff-fname-optim' into maint
* cb/diff-fname-optim: diff: avoid repeated scanning while looking for funcname do not search functions for patch ID add rebase patch id tests
- Loading branch information
Showing
3 changed files
with
124 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
#!/bin/bash | ||
|
||
test_description='git rebase - test patch id computation' | ||
|
||
. ./test-lib.sh | ||
|
||
test_set_prereq NOT_EXPENSIVE | ||
test -n "$GIT_PATCHID_TIMING_TESTS" && test_set_prereq EXPENSIVE | ||
test -x /usr/bin/time && test_set_prereq USR_BIN_TIME | ||
|
||
count() | ||
{ | ||
i=0 | ||
while test $i -lt $1 | ||
do | ||
echo "$i" | ||
i=$(($i+1)) | ||
done | ||
} | ||
|
||
scramble() | ||
{ | ||
i=0 | ||
while read x | ||
do | ||
if test $i -ne 0 | ||
then | ||
echo "$x" | ||
fi | ||
i=$(((i+1) % 10)) | ||
done < "$1" > "$1.new" | ||
mv -f "$1.new" "$1" | ||
} | ||
|
||
run() | ||
{ | ||
echo \$ "$@" | ||
/usr/bin/time "$@" >/dev/null | ||
} | ||
|
||
test_expect_success 'setup' ' | ||
git commit --allow-empty -m initial | ||
git tag root | ||
' | ||
|
||
do_tests() | ||
{ | ||
pr=$1 | ||
nlines=$2 | ||
|
||
test_expect_success $pr "setup: $nlines lines" " | ||
rm -f .gitattributes && | ||
git checkout -q -f master && | ||
git reset --hard root && | ||
count $nlines >file && | ||
git add file && | ||
git commit -q -m initial && | ||
git branch -f other && | ||
scramble file && | ||
git add file && | ||
git commit -q -m 'change big file' && | ||
git checkout -q other && | ||
: >newfile && | ||
git add newfile && | ||
git commit -q -m 'add small file' && | ||
git cherry-pick master >/dev/null 2>&1 | ||
" | ||
|
||
test_debug " | ||
run git diff master^\! | ||
" | ||
|
||
test_expect_success $pr 'setup attributes' " | ||
echo 'file binary' >.gitattributes | ||
" | ||
|
||
test_debug " | ||
run git format-patch --stdout master && | ||
run git format-patch --stdout --ignore-if-in-upstream master | ||
" | ||
|
||
test_expect_success $pr 'detect upstream patch' " | ||
git checkout -q master && | ||
scramble file && | ||
git add file && | ||
git commit -q -m 'change big file again' && | ||
git checkout -q other^{} && | ||
git rebase master && | ||
test_must_fail test -n \"\$(git rev-list master...HEAD~)\" | ||
" | ||
|
||
test_expect_success $pr 'do not drop patch' " | ||
git branch -f squashed master && | ||
git checkout -q -f squashed && | ||
git reset -q --soft HEAD~2 && | ||
git commit -q -m squashed && | ||
git checkout -q other^{} && | ||
test_must_fail git rebase squashed && | ||
rm -rf .git/rebase-apply | ||
" | ||
} | ||
|
||
do_tests NOT_EXPENSIVE 500 | ||
do_tests EXPENSIVE 50000 | ||
|
||
test_done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters