t / t4120-apply-popt.shon commit Merge branch 'maint' (7505ae2)
   1#!/bin/sh
   2#
   3# Copyright (c) 2007 Shawn O. Pearce
   4#
   5
   6test_description='git apply -p handling.'
   7
   8. ./test-lib.sh
   9
  10test_expect_success setup '
  11        mkdir sub &&
  12        echo A >sub/file1 &&
  13        cp sub/file1 file1.saved &&
  14        git add sub/file1 &&
  15        echo B >sub/file1 &&
  16        git diff >patch.file &&
  17        git checkout -- sub/file1 &&
  18        git mv sub süb &&
  19        echo B >süb/file1 &&
  20        git diff >patch.escaped &&
  21        grep "[\]" patch.escaped &&
  22        rm süb/file1 &&
  23        rmdir süb
  24'
  25
  26test_expect_success 'apply git diff with -p2' '
  27        cp file1.saved file1 &&
  28        git apply -p2 patch.file
  29'
  30
  31test_expect_success 'apply with too large -p' '
  32        cp file1.saved file1 &&
  33        test_must_fail git apply --stat -p3 patch.file 2>err &&
  34        grep "removing 3 leading" err
  35'
  36
  37test_expect_success 'apply (-p2) traditional diff with funny filenames' '
  38        cat >patch.quotes <<-\EOF &&
  39        diff -u "a/"sub/file1 "b/"sub/file1
  40        --- "a/"sub/file1
  41        +++ "b/"sub/file1
  42        @@ -1 +1 @@
  43        -A
  44        +B
  45        EOF
  46        echo B >expected &&
  47
  48        cp file1.saved file1 &&
  49        git apply -p2 patch.quotes &&
  50        test_cmp expected file1
  51'
  52
  53test_expect_success 'apply with too large -p and fancy filename' '
  54        cp file1.saved file1 &&
  55        test_must_fail git apply --stat -p3 patch.escaped 2>err &&
  56        grep "removing 3 leading" err
  57'
  58
  59test_done