t / t4130-apply-criss-cross-rename.shon commit Merge branch 'js/rev-parse-doc-fix' (8d19426)
   1#!/bin/sh
   2
   3test_description='git apply handling criss-cross rename patch.'
   4. ./test-lib.sh
   5
   6create_file() {
   7        cnt=0
   8        while test $cnt -le 100
   9        do
  10                cnt=$(($cnt + 1))
  11                echo "$2" >> "$1"
  12        done
  13}
  14
  15test_expect_success 'setup' '
  16        create_file file1 "File1 contents" &&
  17        create_file file2 "File2 contents" &&
  18        create_file file3 "File3 contents" &&
  19        git add file1 file2 file3 &&
  20        git commit -m 1
  21'
  22
  23test_expect_success 'criss-cross rename' '
  24        mv file1 tmp &&
  25        mv file2 file1 &&
  26        mv tmp file2 &&
  27        cp file1 file1-swapped &&
  28        cp file2 file2-swapped
  29'
  30
  31test_expect_success 'diff -M -B' '
  32        git diff -M -B > diff &&
  33        git reset --hard
  34
  35'
  36
  37test_expect_success 'apply' '
  38        git apply diff &&
  39        test_cmp file1 file1-swapped &&
  40        test_cmp file2 file2-swapped
  41'
  42
  43test_expect_success 'criss-cross rename' '
  44        git reset --hard &&
  45        mv file1 tmp &&
  46        mv file2 file1 &&
  47        mv file3 file2 &&
  48        mv tmp file3 &&
  49        cp file1 file1-swapped &&
  50        cp file2 file2-swapped &&
  51        cp file3 file3-swapped
  52'
  53
  54test_expect_success 'diff -M -B' '
  55        git diff -M -B > diff &&
  56        git reset --hard
  57'
  58
  59test_expect_success 'apply' '
  60        git apply diff &&
  61        test_cmp file1 file1-swapped &&
  62        test_cmp file2 file2-swapped &&
  63        test_cmp file3 file3-swapped
  64'
  65
  66test_done