Permalink
Cannot retrieve contributors at this time
Fetching contributors…

#!/bin/sh | |
test_description='common tail optimization' | |
. ./test-lib.sh | |
z=zzzzzzzz ;# 8 | |
z="$z$z$z$z$z$z$z$z" ;# 64 | |
z="$z$z$z$z$z$z$z$z" ;# 512 | |
z="$z$z$z$z" ;# 2048 | |
z2047=$(expr "$z" : '.\(.*\)') ; #2047 | |
x=zzzzzzzzzz ;# 10 | |
y="$x$x$x$x$x$x$x$x$x$x" ;# 100 | |
z="$y$y$y$y$y$y$y$y$y$y" ;# 1000 | |
z1000=$z | |
z100=$y | |
z10=$x | |
zs() { | |
count="$1" | |
while test "$count" -ge 1000 | |
do | |
count=$(($count - 1000)) | |
printf "%s" $z1000 | |
done | |
while test "$count" -ge 100 | |
do | |
count=$(($count - 100)) | |
printf "%s" $z100 | |
done | |
while test "$count" -ge 10 | |
do | |
count=$(($count - 10)) | |
printf "%s" $z10 | |
done | |
while test "$count" -ge 1 | |
do | |
count=$(($count - 1)) | |
printf "z" | |
done | |
} | |
zc () { | |
sed -e "/^index/d" \ | |
-e "s/$z1000/Q/g" \ | |
-e "s/QQQQQQQQQ/Z9000/g" \ | |
-e "s/QQQQQQQQ/Z8000/g" \ | |
-e "s/QQQQQQQ/Z7000/g" \ | |
-e "s/QQQQQQ/Z6000/g" \ | |
-e "s/QQQQQ/Z5000/g" \ | |
-e "s/QQQQ/Z4000/g" \ | |
-e "s/QQQ/Z3000/g" \ | |
-e "s/QQ/Z2000/g" \ | |
-e "s/Q/Z1000/g" \ | |
-e "s/$z100/Q/g" \ | |
-e "s/QQQQQQQQQ/Z900/g" \ | |
-e "s/QQQQQQQQ/Z800/g" \ | |
-e "s/QQQQQQQ/Z700/g" \ | |
-e "s/QQQQQQ/Z600/g" \ | |
-e "s/QQQQQ/Z500/g" \ | |
-e "s/QQQQ/Z400/g" \ | |
-e "s/QQQ/Z300/g" \ | |
-e "s/QQ/Z200/g" \ | |
-e "s/Q/Z100/g" \ | |
-e "s/000Z//g" \ | |
-e "s/$z10/Q/g" \ | |
-e "s/QQQQQQQQQ/Z90/g" \ | |
-e "s/QQQQQQQQ/Z80/g" \ | |
-e "s/QQQQQQQ/Z70/g" \ | |
-e "s/QQQQQQ/Z60/g" \ | |
-e "s/QQQQQ/Z50/g" \ | |
-e "s/QQQQ/Z40/g" \ | |
-e "s/QQQ/Z30/g" \ | |
-e "s/QQ/Z20/g" \ | |
-e "s/Q/Z10/g" \ | |
-e "s/00Z//g" \ | |
-e "s/z/Q/g" \ | |
-e "s/QQQQQQQQQ/Z9/g" \ | |
-e "s/QQQQQQQQ/Z8/g" \ | |
-e "s/QQQQQQQ/Z7/g" \ | |
-e "s/QQQQQQ/Z6/g" \ | |
-e "s/QQQQQ/Z5/g" \ | |
-e "s/QQQQ/Z4/g" \ | |
-e "s/QQQ/Z3/g" \ | |
-e "s/QQ/Z2/g" \ | |
-e "s/Q/Z1/g" \ | |
-e "s/0Z//g" \ | |
; | |
} | |
expect_pattern () { | |
cnt="$1" | |
cat <<EOF | |
diff --git a/file-a$cnt b/file-a$cnt | |
--- a/file-a$cnt | |
+++ b/file-a$cnt | |
@@ -1 +1 @@ | |
-Z${cnt}a | |
+Z${cnt}A | |
diff --git a/file-b$cnt b/file-b$cnt | |
--- a/file-b$cnt | |
+++ b/file-b$cnt | |
@@ -1 +1 @@ | |
-b | |
+B | |
diff --git a/file-c$cnt b/file-c$cnt | |
--- a/file-c$cnt | |
+++ b/file-c$cnt | |
@@ -1 +1 @@ | |
-cZ$cnt | |
\ No newline at end of file | |
+CZ$cnt | |
\ No newline at end of file | |
diff --git a/file-d$cnt b/file-d$cnt | |
--- a/file-d$cnt | |
+++ b/file-d$cnt | |
@@ -1 +1 @@ | |
-d | |
+D | |
EOF | |
} | |
sample='1023 1024 1025 2047 4095' | |
test_expect_success setup ' | |
for n in $sample | |
do | |
( zs $n ; echo a ) >file-a$n && | |
( echo b; zs $n; echo ) >file-b$n && | |
( printf c; zs $n ) >file-c$n && | |
( echo d; zs $n ) >file-d$n && | |
git add file-a$n file-b$n file-c$n file-d$n && | |
( zs $n ; echo A ) >file-a$n && | |
( echo B; zs $n; echo ) >file-b$n && | |
( printf C; zs $n ) >file-c$n && | |
( echo D; zs $n ) >file-d$n && | |
expect_pattern $n || return 1 | |
done >expect | |
' | |
test_expect_success 'diff -U0' ' | |
for n in $sample | |
do | |
git diff -U0 file-?$n | |
done | zc >actual && | |
test_cmp expect actual | |
' | |
test_done |