(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'git apply should not get confused with type changes.\n'> <'\n'>)} spids: [13] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (C {<test_expect_success>} {(SQ <'setup repository and commits'>)} { (SQ <'\n'> <'\techo "hello world" > foo &&\n'> <'\techo "hi planet" > bar &&\n'> <'\tgit update-index --add foo bar &&\n'> <'\tgit commit -m initial &&\n'> <'\tgit branch initial &&\n'> <'\trm -f foo &&\n'> <'\ttest_ln_s_add bar foo &&\n'> <'\tgit commit -m "foo symlinked to bar" &&\n'> <'\tgit branch foo-symlinked-to-bar &&\n'> <'\tgit rm -f foo &&\n'> <'\techo "how far is the sun?" > foo &&\n'> <'\tgit update-index --add foo &&\n'> <'\tgit commit -m "foo back to file" &&\n'> <'\tgit branch foo-back-to-file &&\n'> <'\tprintf "\\0" > foo &&\n'> <'\tgit update-index foo &&\n'> <'\tgit commit -m "foo becomes binary" &&\n'> <'\tgit branch foo-becomes-binary &&\n'> <'\trm -f foo &&\n'> <'\tgit update-index --remove foo &&\n'> <'\tmkdir foo &&\n'> <'\techo "if only I knew" > foo/baz &&\n'> <'\tgit update-index --add foo/baz &&\n'> <'\tgit commit -m "foo becomes a directory" &&\n'> <'\tgit branch "foo-becomes-a-directory" &&\n'> <'\techo "hello world" > foo/baz &&\n'> <'\tgit update-index foo/baz &&\n'> <'\tgit commit -m "foo/baz is the original foo" &&\n'> <'\tgit branch foo-baz-renamed-from-foo\n'> <'\t'> ) } ) (C {<test_expect_success>} {(SQ <'file renamed from foo to foo/baz'>)} { (SQ <'\n'> <'\tgit checkout -f initial &&\n'> <'\tgit diff-tree -M -p HEAD foo-baz-renamed-from-foo > patch &&\n'> <'\tgit apply --index < patch\n'> <'\t'> ) } ) (C {<test_debug>} {(SQ <'cat patch'>)}) (C {<test_expect_success>} {(SQ <'file renamed from foo/baz to foo'>)} { (SQ <'\n'> <'\tgit checkout -f foo-baz-renamed-from-foo &&\n'> <'\tgit diff-tree -M -p HEAD initial > patch &&\n'> <'\tgit apply --index < patch\n'> <'\t'> ) } ) (C {<test_debug>} {(SQ <'cat patch'>)}) (C {<test_expect_success>} {(SQ <'directory becomes file'>)} { (SQ <'\n'> <'\tgit checkout -f foo-becomes-a-directory &&\n'> <'\tgit diff-tree -p HEAD initial > patch &&\n'> <'\tgit apply --index < patch\n'> <'\t'> ) } ) (C {<test_debug>} {(SQ <'cat patch'>)}) (C {<test_expect_success>} {(SQ <'file becomes directory'>)} { (SQ <'\n'> <'\tgit checkout -f initial &&\n'> <'\tgit diff-tree -p HEAD foo-becomes-a-directory > patch &&\n'> <'\tgit apply --index < patch\n'> <'\t'> ) } ) (C {<test_debug>} {(SQ <'cat patch'>)}) (C {<test_expect_success>} {(SQ <'file becomes symlink'>)} { (SQ <'\n'> <'\tgit checkout -f initial &&\n'> <'\tgit diff-tree -p HEAD foo-symlinked-to-bar > patch &&\n'> <'\tgit apply --index < patch\n'> <'\t'> ) } ) (C {<test_debug>} {(SQ <'cat patch'>)}) (C {<test_expect_success>} {(SQ <'symlink becomes file'>)} { (SQ <'\n'> <'\tgit checkout -f foo-symlinked-to-bar &&\n'> <'\tgit diff-tree -p HEAD foo-back-to-file > patch &&\n'> <'\tgit apply --index < patch\n'> <'\t'> ) } ) (C {<test_debug>} {(SQ <'cat patch'>)}) (C {<test_expect_success>} {(SQ <'binary file becomes symlink'>)} { (SQ <'\n'> <'\tgit checkout -f foo-becomes-binary &&\n'> <'\tgit diff-tree -p --binary HEAD foo-symlinked-to-bar > patch &&\n'> <'\tgit apply --index < patch\n'> <'\t'> ) } ) (C {<test_debug>} {(SQ <'cat patch'>)}) (C {<test_expect_success>} {(SQ <'symlink becomes binary file'>)} { (SQ <'\n'> <'\tgit checkout -f foo-symlinked-to-bar &&\n'> <'\tgit diff-tree -p --binary HEAD foo-becomes-binary > patch &&\n'> <'\tgit apply --index < patch\n'> <'\t'> ) } ) (C {<test_debug>} {(SQ <'cat patch'>)}) (C {<test_expect_success>} {(SQ <'symlink becomes directory'>)} { (SQ <'\n'> <'\tgit checkout -f foo-symlinked-to-bar &&\n'> <'\tgit diff-tree -p HEAD foo-becomes-a-directory > patch &&\n'> <'\tgit apply --index < patch\n'> <'\t'> ) } ) (C {<test_debug>} {(SQ <'cat patch'>)}) (C {<test_expect_success>} {(SQ <'directory becomes symlink'>)} { (SQ <'\n'> <'\tgit checkout -f foo-becomes-a-directory &&\n'> <'\tgit diff-tree -p HEAD foo-symlinked-to-bar > patch &&\n'> <'\tgit apply --index < patch\n'> <'\t'> ) } ) (C {<test_debug>} {(SQ <'cat patch'>)}) (C {<test_done>}) ] )