#!/bin/sh test_description='apply same filename' . ./test-lib.sh test_expect_success 'setup' ' mkdir -p some/sub/dir && echo Hello > some/sub/dir/file && git add some/sub/dir/file && git commit -m initial && git tag initial ' cat > patch << EOF diff a/bla/blub/dir/file b/bla/blub/dir/file --- a/bla/blub/dir/file +++ b/bla/blub/dir/file @@ -1,1 +1,1 @@ -Hello +Bello EOF test_expect_success 'apply --directory -p (1)' ' git apply --directory=some/sub -p3 --index patch && echo Bello >expect && git show :some/sub/dir/file >actual && test_cmp expect actual && test_cmp expect some/sub/dir/file ' test_expect_success 'apply --directory -p (2) ' ' git reset --hard initial && git apply --directory=some/sub/ -p3 --index patch && echo Bello >expect && git show :some/sub/dir/file >actual && test_cmp expect actual && test_cmp expect some/sub/dir/file ' cat > patch << EOF diff --git a/newfile b/newfile new file mode 100644 index 0000000..d95f3ad --- /dev/null +++ b/newfile @@ -0,0 +1 @@ +content EOF test_expect_success 'apply --directory (new file)' ' git reset --hard initial && git apply --directory=some/sub/dir/ --index patch && echo content >expect && git show :some/sub/dir/newfile >actual && test_cmp expect actual && test_cmp expect some/sub/dir/newfile ' cat > patch << EOF diff --git a/c/newfile2 b/c/newfile2 new file mode 100644 index 0000000..d95f3ad --- /dev/null +++ b/c/newfile2 @@ -0,0 +1 @@ +content EOF test_expect_success 'apply --directory -p (new file)' ' git reset --hard initial && git apply -p2 --directory=some/sub/dir/ --index patch && echo content >expect && git show :some/sub/dir/newfile2 >actual && test_cmp expect actual && test_cmp expect some/sub/dir/newfile2 ' cat > patch << EOF diff --git a/delfile b/delfile deleted file mode 100644 index d95f3ad..0000000 --- a/delfile +++ /dev/null @@ -1 +0,0 @@ -content EOF test_expect_success 'apply --directory (delete file)' ' git reset --hard initial && echo content >some/sub/dir/delfile && git add some/sub/dir/delfile && git apply --directory=some/sub/dir/ --index patch && ! (git ls-files | grep delfile) ' cat > patch << 'EOF' diff --git "a/qu\157tefile" "b/qu\157tefile" new file mode 100644 index 0000000..d95f3ad --- /dev/null +++ "b/qu\157tefile" @@ -0,0 +1 @@ +content EOF test_expect_success 'apply --directory (quoted filename)' ' git reset --hard initial && git apply --directory=some/sub/dir/ --index patch && echo content >expect && git show :some/sub/dir/quotefile >actual && test_cmp expect actual && test_cmp expect some/sub/dir/quotefile ' test_done