Skip to content

Commit

Permalink
[PATCH] Add more tests for read-tree --emu23.
Browse files Browse the repository at this point in the history
This adds more tests for --emu23.  One is to show how it can
carry forward more local changes than the straightforward
two-way fast forward, and another is to show the recent
overeager optimization of directory/file conflict check broke
things, which will be fixed in the next commit.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Junio C Hamano authored and Linus Torvalds committed Jun 25, 2005
1 parent 59e6b23 commit 1abb3f1
Show file tree
Hide file tree
Showing 2 changed files with 150 additions and 14 deletions.
70 changes: 63 additions & 7 deletions t/t1001-read-tree-m-2way.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ read_tree_twoway () {
_x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
compare_change () {
cat current
sed -n >current \
-e '/^--- /d; /^+++ /d; /^@@ /d;' \
-e 's/^\([-+][0-7][0-7][0-7][0-7][0-7][0-7]\) '"$_x40"' /\1 X /p' \
Expand All @@ -51,19 +50,30 @@ check_cache_at () {
esac
}

cat >bozbar-old <<\EOF
This is a sample file used in two-way fast forward merge
tests. Its second line ends with a magic word bozbar
which will be modified by the merged head to gnusto.
It has some extra lines so that external tools can
successfully merge independent changes made to later
lines (such as this one), avoiding line conflicts.
EOF

sed -e 's/bozbar/gnusto (earlier bozbar)/' bozbar-old >bozbar-new

test_expect_success \
setup \
'echo frotz >frotz &&
echo nitfol >nitfol &&
echo bozbar >bozbar &&
cat bozbar-old >bozbar &&
echo rezrov >rezrov &&
echo yomin >yomin &&
git-update-cache --add nitfol bozbar rezrov &&
treeH=`git-write-tree` &&
echo treeH $treeH &&
git-ls-tree $treeH &&
echo gnusto >bozbar &&
cat bozbar-new >bozbar &&
git-update-cache --add frotz bozbar --force-remove rezrov &&
git-ls-files --stage >M.out &&
treeM=`git-write-tree` &&
Expand All @@ -86,6 +96,8 @@ echo '+100644 X 0 yomin' >expected
test_expect_success \
'4 - carry forward local addition.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
git-update-cache --add yomin &&
read_tree_twoway $treeH $treeM &&
git-ls-files --stage >4.out || exit
Expand All @@ -96,6 +108,8 @@ test_expect_success \
test_expect_success \
'5 - carry forward local addition.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
echo yomin >yomin &&
git-update-cache --add yomin &&
echo yomin yomin >yomin &&
Expand All @@ -108,6 +122,8 @@ test_expect_success \
test_expect_success \
'6 - local addition already has the same.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
git-update-cache --add frotz &&
read_tree_twoway $treeH $treeM &&
git-ls-files --stage >6.out &&
Expand All @@ -117,6 +133,8 @@ test_expect_success \
test_expect_success \
'7 - local addition already has the same.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
echo frotz >frotz &&
git-update-cache --add frotz &&
echo frotz frotz >frotz &&
Expand All @@ -128,13 +146,17 @@ test_expect_success \
test_expect_success \
'8 - conflicting addition.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
echo frotz frotz >frotz &&
git-update-cache --add frotz &&
if read_tree_twoway $treeH $treeM; then false; else :; fi'

test_expect_success \
'9 - conflicting addition.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
echo frotz frotz >frotz &&
git-update-cache --add frotz &&
echo frotz >frotz &&
Expand All @@ -143,6 +165,8 @@ test_expect_success \
test_expect_success \
'10 - path removed.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
echo rezrov >rezrov &&
git-update-cache --add rezrov &&
read_tree_twoway $treeH $treeM &&
Expand All @@ -152,6 +176,8 @@ test_expect_success \
test_expect_success \
'11 - dirty path removed.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
echo rezrov >rezrov &&
git-update-cache --add rezrov &&
echo rezrov rezrov >rezrov &&
Expand All @@ -160,13 +186,17 @@ test_expect_success \
test_expect_success \
'12 - unmatching local changes being removed.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
echo rezrov rezrov >rezrov &&
git-update-cache --add rezrov &&
if read_tree_twoway $treeH $treeM; then false; else :; fi'

test_expect_success \
'13 - unmatching local changes being removed.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
echo rezrov rezrov >rezrov &&
git-update-cache --add rezrov &&
echo rezrov >rezrov &&
Expand All @@ -180,6 +210,8 @@ EOF
test_expect_success \
'14 - unchanged in two heads.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
echo nitfol nitfol >nitfol &&
git-update-cache --add nitfol &&
read_tree_twoway $treeH $treeM &&
Expand All @@ -191,6 +223,8 @@ test_expect_success \
test_expect_success \
'15 - unchanged in two heads.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
echo nitfol nitfol >nitfol &&
git-update-cache --add nitfol &&
echo nitfol nitfol nitfol >nitfol &&
Expand All @@ -203,13 +237,17 @@ test_expect_success \
test_expect_success \
'16 - conflicting local change.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
echo bozbar bozbar >bozbar &&
git-update-cache --add bozbar &&
if read_tree_twoway $treeH $treeM; then false; else :; fi'

test_expect_success \
'17 - conflicting local change.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
echo bozbar bozbar >bozbar &&
git-update-cache --add bozbar &&
echo bozbar bozbar bozbar >bozbar &&
Expand All @@ -218,7 +256,9 @@ test_expect_success \
test_expect_success \
'18 - local change already having a good result.' \
'rm -f .git/index &&
echo gnusto >bozbar &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
cat bozbar-new >bozbar &&
git-update-cache --add bozbar &&
read_tree_twoway $treeH $treeM &&
git-ls-files --stage >18.out &&
Expand All @@ -228,7 +268,9 @@ test_expect_success \
test_expect_success \
'19 - local change already having a good result, further modified.' \
'rm -f .git/index &&
echo gnusto >bozbar &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
cat bozbar-new >bozbar &&
git-update-cache --add bozbar &&
echo gnusto gnusto >bozbar &&
read_tree_twoway $treeH $treeM &&
Expand All @@ -239,7 +281,9 @@ test_expect_success \
test_expect_success \
'20 - no local change, use new tree.' \
'rm -f .git/index &&
echo bozbar >bozbar &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
cat bozbar-old >bozbar &&
git-update-cache --add bozbar &&
read_tree_twoway $treeH $treeM &&
git-ls-files --stage >20.out &&
Expand All @@ -249,11 +293,23 @@ test_expect_success \
test_expect_success \
'21 - no local change, dirty cache.' \
'rm -f .git/index &&
echo bozbar >bozbar &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
cat bozbar-old >bozbar &&
git-update-cache --add bozbar &&
echo gnusto gnusto >bozbar &&
if read_tree_twoway $treeH $treeM; then false; else :; fi'

# This fails with straight two-way fast forward.
test_expect_success \
'22 - local change cache updated.' \
'rm -f .git/index &&
git-read-tree $treeH &&
git-checkout-cache -u -f -q -a &&
sed -e "s/such as/SUCH AS/" bozbar-old >bozbar &&
git-update-cache --add bozbar &&
if read_tree_twoway $treeH $treeM; then false; else :; fi'

# Also make sure we did not break DF vs DF/DF case.
test_expect_success \
'DF vs DF/DF case setup.' \
Expand Down
Loading

0 comments on commit 1abb3f1

Please sign in to comment.