#!/bin/sh # # Copyright (c) 2005 Junio C Hamano # global test_description := ''More rename detection tests. The rename detection logic should be able to detect pure rename or copy of symbolic links, but should not produce rename/copy followed by an edit for them. '' source ./test-lib.sh source "$TEST_DIRECTORY"/diff-lib.sh test_expect_success SYMLINKS \ 'prepare reference tree' \ 'echo xyzzy | tr -d ''\''\''012 >yomin && ln -s xyzzy frotz && git update-index --add frotz yomin && tree=$(git write-tree) && echo $tree' test_expect_success SYMLINKS \ 'prepare work tree' \ 'mv frotz rezrov && rm -f yomin && ln -s xyzzy nitfol && ln -s xzzzy bozbar && git update-index --add --remove frotz rezrov nitfol bozbar yomin' # tree has frotz pointing at xyzzy, and yomin that contains xyzzy to # confuse things. work tree has rezrov (xyzzy) nitfol (xyzzy) and # bozbar (xzzzy). # rezrov and nitfol are rename/copy of frotz and bozbar should be # a new creation. test_expect_success SYMLINKS 'setup diff output' " GIT_DIFF_OPTS=--unified=0 git diff-index -C -p $tree >current && cat >expected <<\EOF diff --git a/bozbar b/bozbar new file mode 120000 --- /dev/null +++ b/bozbar @@ -0,0 +1 @@ +xzzzy \ No newline at end of file diff --git a/frotz b/nitfol similarity index 100% copy from frotz copy to nitfol diff --git a/frotz b/rezrov similarity index 100% rename from frotz rename to rezrov diff --git a/yomin b/yomin deleted file mode 100644 --- a/yomin +++ /dev/null @@ -1 +0,0 @@ -xyzzy \ No newline at end of file EOF " test_expect_success SYMLINKS \ 'validate diff output' \ 'compare_diff_patch current expected' test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: { (SQ <"More rename detection tests.\n"> <"\n"> <"The rename detection logic should be able to detect pure rename or\n"> <"copy of symbolic links, but should not produce rename/copy followed\n"> <"by an edit for them.\n"> ) } spids: [13] ) ] spids: [13] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ VSub_Name "$TEST_DIRECTORY")) (/diff-lib.sh)}) (C {(test_expect_success)} {(SYMLINKS)} {(SQ <"prepare reference tree">)} {(SQ <"echo xyzzy | tr -d ">) (EscapedLiteralPart token:) (EscapedLiteralPart token:) (SQ <"012 >yomin &&\n"> <" ln -s xyzzy frotz &&\n"> <" git update-index --add frotz yomin &&\n"> <" tree=$(git write-tree) &&\n"> <" echo $tree"> ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ <"prepare work tree">)} { (SQ <"mv frotz rezrov &&\n"> <" rm -f yomin &&\n"> <" ln -s xyzzy nitfol &&\n"> <" ln -s xzzzy bozbar &&\n"> <" git update-index --add --remove frotz rezrov nitfol bozbar yomin"> ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ <"setup diff output">)} { (DQ ("\n") (" GIT_DIFF_OPTS=--unified=0 git diff-index -C -p ") ($ VSub_Name "$tree") (" >current &&\n") (" cat >expected <<") (EscapedLiteralPart token:) ("OF\n") ("diff --git a/bozbar b/bozbar\n") ("new file mode 120000\n") ("--- /dev/null\n") ("+++ b/bozbar\n") ("@@ -0,0 +1 @@\n") ("+xzzzy\n") (EscapedLiteralPart token:) ("No newline at end of file\n") ("diff --git a/frotz b/nitfol\n") ("similarity index 100%\n") ("copy from frotz\n") ("copy to nitfol\n") ("diff --git a/frotz b/rezrov\n") ("similarity index 100%\n") ("rename from frotz\n") ("rename to rezrov\n") ("diff --git a/yomin b/yomin\n") ("deleted file mode 100644\n") ("--- a/yomin\n") ("+++ /dev/null\n") ("@@ -1 +0,0 @@\n") ("-xyzzy\n") (EscapedLiteralPart token:) ("No newline at end of file\n") ("EOF\n") ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ <"validate diff output">)} {(SQ <"compare_diff_patch current expected">)} ) (C {(test_done)}) ] )