|  | #!/bin/sh | 
|  |  | 
|  | test_description='git ls-files --deduplicate test' | 
|  |  | 
|  | TEST_PASSES_SANITIZE_LEAK=true | 
|  | . ./test-lib.sh | 
|  |  | 
|  | test_expect_success 'setup' ' | 
|  | >a.txt && | 
|  | >b.txt && | 
|  | >delete.txt && | 
|  | git add a.txt b.txt delete.txt && | 
|  | git commit -m base && | 
|  | echo a >a.txt && | 
|  | echo b >b.txt && | 
|  | echo delete >delete.txt && | 
|  | git add a.txt b.txt delete.txt && | 
|  | git commit -m tip && | 
|  | git tag tip && | 
|  | git reset --hard HEAD^ && | 
|  | echo change >a.txt && | 
|  | git commit -a -m side && | 
|  | git tag side | 
|  | ' | 
|  |  | 
|  | test_expect_success 'git ls-files --deduplicate to show unique unmerged path' ' | 
|  | test_must_fail git merge tip && | 
|  | git ls-files --deduplicate >actual && | 
|  | cat >expect <<-\EOF && | 
|  | a.txt | 
|  | b.txt | 
|  | delete.txt | 
|  | EOF | 
|  | test_cmp expect actual && | 
|  | git merge --abort | 
|  | ' | 
|  |  | 
|  | test_expect_success 'git ls-files -d -m --deduplicate with different display options' ' | 
|  | git reset --hard side && | 
|  | test_must_fail git merge tip && | 
|  | rm delete.txt && | 
|  | git ls-files -d -m --deduplicate >actual && | 
|  | cat >expect <<-\EOF && | 
|  | a.txt | 
|  | delete.txt | 
|  | EOF | 
|  | test_cmp expect actual && | 
|  | git ls-files -d -m -t --deduplicate >actual && | 
|  | cat >expect <<-\EOF && | 
|  | C a.txt | 
|  | C a.txt | 
|  | C a.txt | 
|  | R delete.txt | 
|  | C delete.txt | 
|  | EOF | 
|  | test_cmp expect actual && | 
|  | git ls-files -d -m -c --deduplicate >actual && | 
|  | cat >expect <<-\EOF && | 
|  | a.txt | 
|  | b.txt | 
|  | delete.txt | 
|  | EOF | 
|  | test_cmp expect actual && | 
|  | git merge --abort | 
|  | ' | 
|  |  | 
|  | test_done |