t / t4128-apply-root.shon commit Merge branch 'jc/maint-clean-nested-dir-safety' into maint (b813234)
   1#!/bin/sh
   2
   3test_description='apply same filename'
   4
   5. ./test-lib.sh
   6
   7test_expect_success 'setup' '
   8
   9        mkdir -p some/sub/dir &&
  10        echo Hello > some/sub/dir/file &&
  11        git add some/sub/dir/file &&
  12        git commit -m initial &&
  13        git tag initial
  14
  15'
  16
  17cat > patch << EOF
  18diff a/bla/blub/dir/file b/bla/blub/dir/file
  19--- a/bla/blub/dir/file
  20+++ b/bla/blub/dir/file
  21@@ -1,1 +1,1 @@
  22-Hello
  23+Bello
  24EOF
  25
  26test_expect_success 'apply --directory -p (1)' '
  27
  28        git apply --directory=some/sub -p3 --index patch &&
  29        test Bello = $(git show :some/sub/dir/file) &&
  30        test Bello = $(cat some/sub/dir/file)
  31
  32'
  33
  34test_expect_success 'apply --directory -p (2) ' '
  35
  36        git reset --hard initial &&
  37        git apply --directory=some/sub/ -p3 --index patch &&
  38        test Bello = $(git show :some/sub/dir/file) &&
  39        test Bello = $(cat some/sub/dir/file)
  40
  41'
  42
  43cat > patch << EOF
  44diff --git a/newfile b/newfile
  45new file mode 100644
  46index 0000000..d95f3ad
  47--- /dev/null
  48+++ b/newfile
  49@@ -0,0 +1 @@
  50+content
  51EOF
  52
  53test_expect_success 'apply --directory (new file)' '
  54        git reset --hard initial &&
  55        git apply --directory=some/sub/dir/ --index patch &&
  56        test content = $(git show :some/sub/dir/newfile) &&
  57        test content = $(cat some/sub/dir/newfile)
  58'
  59
  60cat > patch << EOF
  61diff --git a/delfile b/delfile
  62deleted file mode 100644
  63index d95f3ad..0000000
  64--- a/delfile
  65+++ /dev/null
  66@@ -1 +0,0 @@
  67-content
  68EOF
  69
  70test_expect_success 'apply --directory (delete file)' '
  71        git reset --hard initial &&
  72        echo content >some/sub/dir/delfile &&
  73        git add some/sub/dir/delfile &&
  74        git apply --directory=some/sub/dir/ --index patch &&
  75        ! (git ls-files | grep delfile)
  76'
  77
  78cat > patch << 'EOF'
  79diff --git "a/qu\157tefile" "b/qu\157tefile"
  80new file mode 100644
  81index 0000000..d95f3ad
  82--- /dev/null
  83+++ "b/qu\157tefile"
  84@@ -0,0 +1 @@
  85+content
  86EOF
  87
  88test_expect_success 'apply --directory (quoted filename)' '
  89        git reset --hard initial &&
  90        git apply --directory=some/sub/dir/ --index patch &&
  91        test content = $(git show :some/sub/dir/quotefile) &&
  92        test content = $(cat some/sub/dir/quotefile)
  93'
  94
  95test_done