#!/bin/sh test_description='basic work tree status reporting' . ./test-lib.sh test_expect_success setup ' test_commit A && test_commit B oneside added && git checkout A^0 && test_commit C oneside created ' test_expect_success 'A/A conflict' ' git checkout B^0 && test_must_fail git merge C ' test_expect_success 'Report path with conflict' ' git diff --cached --name-status >actual && echo "U oneside" >expect && test_cmp expect actual ' test_expect_success 'Report new path with conflict' ' git diff --cached --name-status HEAD^ >actual && echo "U oneside" >expect && test_cmp expect actual ' cat >expect <..." as appropriate to mark resolution) # # deleted by us: foo # no changes added to commit (use "git add" and/or "git commit -a") EOF test_expect_success 'M/D conflict does not segfault' ' mkdir mdconflict && ( cd mdconflict && git init && test_commit initial foo "" && test_commit modify foo foo && git checkout -b side HEAD^ && git rm foo && git commit -m delete && test_must_fail git merge master && test_must_fail git commit --dry-run >../actual && test_cmp ../expect ../actual && git status >../actual && test_cmp ../expect ../actual ) ' test_expect_success 'rename & unmerged setup' ' git rm -f -r . && cat "$TEST_DIRECTORY/README" >ONE && git add ONE && test_tick && git commit -m "One commit with ONE" && echo Modified >TWO && cat ONE >>TWO && cat ONE >>THREE && git add TWO THREE && sha1=$(git rev-parse :ONE) && git rm --cached ONE && ( echo "100644 $sha1 1 ONE" && echo "100644 $sha1 2 ONE" && echo "100644 $sha1 3 ONE" ) | git update-index --index-info && echo Further >>THREE ' test_expect_success 'rename & unmerged status' ' git status -suno >actual && cat >expect <<-EOF && UU ONE AM THREE A TWO EOF test_cmp expect actual ' test_expect_success 'git diff-index --cached shows 2 added + 1 unmerged' ' cat >expected <<-EOF && U ONE A THREE A TWO EOF git diff-index --cached --name-status HEAD >actual && test_cmp expected actual ' test_expect_success 'git diff-index --cached -M shows 2 added + 1 unmerged' ' cat >expected <<-EOF && U ONE A THREE A TWO EOF git diff-index --cached -M --name-status HEAD >actual && test_cmp expected actual ' test_expect_success 'git diff-index --cached -C shows 2 copies + 1 unmerged' ' cat >expected <<-EOF && U ONE C ONE THREE C ONE TWO EOF git diff-index --cached -C --name-status HEAD | sed "s/^C[0-9]*/C/g" >actual && test_cmp expected actual ' test_done