t / t7609-merge-co-error-msgs.shon commit Improve documentation and comments regarding directory traversal API (95a6834)
   1#!/bin/sh
   2
   3test_description='unpack-trees error messages'
   4
   5. ./test-lib.sh
   6
   7
   8test_expect_success 'setup' '
   9        echo one >one &&
  10        git add one &&
  11        git commit -a -m First &&
  12
  13        git checkout -b branch &&
  14        echo two >two &&
  15        echo three >three &&
  16        echo four >four &&
  17        echo five >five &&
  18        git add two three four five &&
  19        git commit -m Second &&
  20
  21        git checkout master &&
  22        echo other >two &&
  23        echo other >three &&
  24        echo other >four &&
  25        echo other >five
  26'
  27
  28cat >expect <<\EOF
  29error: The following untracked working tree files would be overwritten by merge:
  30        five
  31        four
  32        three
  33        two
  34Please move or remove them before you can merge.
  35Aborting
  36EOF
  37
  38test_expect_success 'untracked files overwritten by merge (fast and non-fast forward)' '
  39        test_must_fail git merge branch 2>out &&
  40        test_cmp out expect &&
  41        git commit --allow-empty -m empty &&
  42        (
  43                GIT_MERGE_VERBOSITY=0 &&
  44                export GIT_MERGE_VERBOSITY &&
  45                test_must_fail git merge branch 2>out2
  46        ) &&
  47        test_cmp out2 expect &&
  48        git reset --hard HEAD^
  49'
  50
  51cat >expect <<\EOF
  52error: Your local changes to the following files would be overwritten by merge:
  53        four
  54        three
  55        two
  56Please, commit your changes or stash them before you can merge.
  57error: The following untracked working tree files would be overwritten by merge:
  58        five
  59Please move or remove them before you can merge.
  60Aborting
  61EOF
  62
  63test_expect_success 'untracked files or local changes ovewritten by merge' '
  64        git add two &&
  65        git add three &&
  66        git add four &&
  67        test_must_fail git merge branch 2>out &&
  68        test_cmp out expect
  69'
  70
  71cat >expect <<\EOF
  72error: Your local changes to the following files would be overwritten by checkout:
  73        rep/one
  74        rep/two
  75Please, commit your changes or stash them before you can switch branches.
  76Aborting
  77EOF
  78
  79test_expect_success 'cannot switch branches because of local changes' '
  80        git add five &&
  81        mkdir rep &&
  82        echo one >rep/one &&
  83        echo two >rep/two &&
  84        git add rep/one rep/two &&
  85        git commit -m Fourth &&
  86        git checkout master &&
  87        echo uno >rep/one &&
  88        echo dos >rep/two &&
  89        test_must_fail git checkout branch 2>out &&
  90        test_cmp out expect
  91'
  92
  93cat >expect <<\EOF
  94error: Your local changes to the following files would be overwritten by checkout:
  95        rep/one
  96        rep/two
  97Please, commit your changes or stash them before you can switch branches.
  98Aborting
  99EOF
 100
 101test_expect_success 'not uptodate file porcelain checkout error' '
 102        git add rep/one rep/two &&
 103        test_must_fail git checkout branch 2>out &&
 104        test_cmp out expect
 105'
 106
 107cat >expect <<\EOF
 108error: Updating the following directories would lose untracked files in it:
 109        rep
 110        rep2
 111
 112Aborting
 113EOF
 114
 115test_expect_success 'not_uptodate_dir porcelain checkout error' '
 116        git init uptodate &&
 117        cd uptodate &&
 118        mkdir rep &&
 119        mkdir rep2 &&
 120        touch rep/foo &&
 121        touch rep2/foo &&
 122        git add rep/foo rep2/foo &&
 123        git commit -m init &&
 124        git checkout -b branch &&
 125        git rm rep -r &&
 126        git rm rep2 -r &&
 127        >rep &&
 128        >rep2 &&
 129        git add rep rep2&&
 130        git commit -m "added test as a file" &&
 131        git checkout master &&
 132        >rep/untracked-file &&
 133        >rep2/untracked-file &&
 134        test_must_fail git checkout branch 2>out &&
 135        test_cmp out ../expect
 136'
 137
 138test_done