t / t6035-merge-dir-to-symlink.shon commit test-lib: use subshell instead of cd $new && .. && cd $old (0d314ce)
   1#!/bin/sh
   2
   3test_description='merging when a directory was replaced with a symlink'
   4. ./test-lib.sh
   5
   6test_expect_success SYMLINKS 'create a commit where dir a/b changed to symlink' '
   7        mkdir -p a/b/c a/b-2/c &&
   8        > a/b/c/d &&
   9        > a/b-2/c/d &&
  10        > a/x &&
  11        git add -A &&
  12        git commit -m base &&
  13        git tag start &&
  14        rm -rf a/b &&
  15        ln -s b-2 a/b &&
  16        git add -A &&
  17        git commit -m "dir to symlink"
  18'
  19
  20test_expect_success SYMLINKS 'keep a/b-2/c/d across checkout' '
  21        git checkout HEAD^0 &&
  22        git reset --hard master &&
  23        git rm --cached a/b &&
  24        git commit -m "untracked symlink remains" &&
  25         git checkout start^0 &&
  26         test -f a/b-2/c/d
  27'
  28
  29test_expect_success SYMLINKS 'checkout should not have deleted a/b-2/c/d' '
  30        git checkout HEAD^0 &&
  31        git reset --hard master &&
  32         git checkout start^0 &&
  33         test -f a/b-2/c/d
  34'
  35
  36test_expect_success SYMLINKS 'setup for merge test' '
  37        git reset --hard &&
  38        test -f a/b-2/c/d &&
  39        echo x > a/x &&
  40        git add a/x &&
  41        git commit -m x &&
  42        git tag baseline
  43'
  44
  45test_expect_success SYMLINKS 'do not lose a/b-2/c/d in merge (resolve)' '
  46        git reset --hard &&
  47        git checkout baseline^0 &&
  48        git merge -s resolve master &&
  49        test -h a/b &&
  50        test -f a/b-2/c/d
  51'
  52
  53test_expect_failure 'do not lose a/b-2/c/d in merge (recursive)' '
  54        git reset --hard &&
  55        git checkout baseline^0 &&
  56        git merge -s recursive master &&
  57        test -h a/b &&
  58        test -f a/b-2/c/d
  59'
  60
  61test_expect_success SYMLINKS 'setup a merge where dir a/b-2 changed to symlink' '
  62        git reset --hard &&
  63        git checkout start^0 &&
  64        rm -rf a/b-2 &&
  65        ln -s b a/b-2 &&
  66        git add -A &&
  67        git commit -m "dir a/b-2 to symlink" &&
  68        git tag test2
  69'
  70
  71test_expect_success SYMLINKS 'merge should not have conflicts (resolve)' '
  72        git reset --hard &&
  73        git checkout baseline^0 &&
  74        git merge -s resolve test2 &&
  75        test -h a/b-2 &&
  76        test -f a/b/c/d
  77'
  78
  79test_expect_failure 'merge should not have conflicts (recursive)' '
  80        git reset --hard &&
  81        git checkout baseline^0 &&
  82        git merge -s recursive test2 &&
  83        test -h a/b-2 &&
  84        test -f a/b/c/d
  85'
  86
  87test_done