You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
2.7 KiB
157 lines
2.7 KiB
#!/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 || break |
|
|
|
done >expect |
|
' |
|
|
|
test_expect_success 'diff -U0' ' |
|
|
|
for n in $sample |
|
do |
|
git diff -U0 file-?$n |
|
done | zc >actual && |
|
diff -u expect actual |
|
|
|
' |
|
|
|
test_done
|
|
|