#!/bin/sh global test_description := ''read-tree -u --reset'' source ./test-lib.sh source "$TEST_DIRECTORY"/lib-read-tree.sh # two-tree test test_expect_success 'setup' ' git init && mkdir df && echo content >df/file && git add df/file && git commit -m one && git ls-files >expect && rm -rf df && echo content >df && git add df && echo content >new && git add new && git commit -m two ' test_expect_success 'reset should work' ' read_tree_u_must_succeed -u --reset HEAD^ && git ls-files >actual && test_cmp expect actual ' test_expect_success 'reset should remove remnants from a failed merge' ' read_tree_u_must_succeed --reset -u HEAD && git ls-files -s >expect && sha1=$(git rev-parse :new) && ( echo "100644 $sha1 1 old" echo "100644 $sha1 3 old" ) | git update-index --index-info && >old && git ls-files -s && read_tree_u_must_succeed --reset -u HEAD && git ls-files -s >actual && ! test -f old ' test_expect_success 'two-way reset should remove remnants too' ' read_tree_u_must_succeed --reset -u HEAD && git ls-files -s >expect && sha1=$(git rev-parse :new) && ( echo "100644 $sha1 1 old" echo "100644 $sha1 3 old" ) | git update-index --index-info && >old && git ls-files -s && read_tree_u_must_succeed --reset -u HEAD HEAD && git ls-files -s >actual && ! test -f old ' test_expect_success 'Porcelain reset should remove remnants too' ' read_tree_u_must_succeed --reset -u HEAD && git ls-files -s >expect && sha1=$(git rev-parse :new) && ( echo "100644 $sha1 1 old" echo "100644 $sha1 3 old" ) | git update-index --index-info && >old && git ls-files -s && git reset --hard && git ls-files -s >actual && ! test -f old ' test_expect_success 'Porcelain checkout -f should remove remnants too' ' read_tree_u_must_succeed --reset -u HEAD && git ls-files -s >expect && sha1=$(git rev-parse :new) && ( echo "100644 $sha1 1 old" echo "100644 $sha1 3 old" ) | git update-index --index-info && >old && git ls-files -s && git checkout -f && git ls-files -s >actual && ! test -f old ' test_expect_success 'Porcelain checkout -f HEAD should remove remnants too' ' read_tree_u_must_succeed --reset -u HEAD && git ls-files -s >expect && sha1=$(git rev-parse :new) && ( echo "100644 $sha1 1 old" echo "100644 $sha1 3 old" ) | git update-index --index-info && >old && git ls-files -s && git checkout -f HEAD && git ls-files -s >actual && ! test -f old ' test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"read-tree -u --reset">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ VSub_Name "$TEST_DIRECTORY")) (/lib-read-tree.sh)}) (C {(test_expect_success)} {(SQ )} { (SQ <"\n"> <"\tgit init &&\n"> <"\tmkdir df &&\n"> <"\techo content >df/file &&\n"> <"\tgit add df/file &&\n"> <"\tgit commit -m one &&\n"> <"\tgit ls-files >expect &&\n"> <"\trm -rf df &&\n"> <"\techo content >df &&\n"> <"\tgit add df &&\n"> <"\techo content >new &&\n"> <"\tgit add new &&\n"> <"\tgit commit -m two\n"> ) } ) (C {(test_expect_success)} {(SQ <"reset should work">)} { (SQ <"\n"> <"\tread_tree_u_must_succeed -u --reset HEAD^ &&\n"> <"\tgit ls-files >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"reset should remove remnants from a failed merge">)} { (SQ <"\n"> <"\tread_tree_u_must_succeed --reset -u HEAD &&\n"> <"\tgit ls-files -s >expect &&\n"> <"\tsha1=$(git rev-parse :new) &&\n"> <"\t(\n"> <"\t\techo \"100644 $sha1 1\told\"\n"> <"\t\techo \"100644 $sha1 3\told\"\n"> <"\t) | git update-index --index-info &&\n"> <"\t>old &&\n"> <"\tgit ls-files -s &&\n"> <"\tread_tree_u_must_succeed --reset -u HEAD &&\n"> <"\tgit ls-files -s >actual &&\n"> <"\t! test -f old\n"> ) } ) (C {(test_expect_success)} {(SQ <"two-way reset should remove remnants too">)} { (SQ <"\n"> <"\tread_tree_u_must_succeed --reset -u HEAD &&\n"> <"\tgit ls-files -s >expect &&\n"> <"\tsha1=$(git rev-parse :new) &&\n"> <"\t(\n"> <"\t\techo \"100644 $sha1 1\told\"\n"> <"\t\techo \"100644 $sha1 3\told\"\n"> <"\t) | git update-index --index-info &&\n"> <"\t>old &&\n"> <"\tgit ls-files -s &&\n"> <"\tread_tree_u_must_succeed --reset -u HEAD HEAD &&\n"> <"\tgit ls-files -s >actual &&\n"> <"\t! test -f old\n"> ) } ) (C {(test_expect_success)} {(SQ <"Porcelain reset should remove remnants too">)} { (SQ <"\n"> <"\tread_tree_u_must_succeed --reset -u HEAD &&\n"> <"\tgit ls-files -s >expect &&\n"> <"\tsha1=$(git rev-parse :new) &&\n"> <"\t(\n"> <"\t\techo \"100644 $sha1 1\told\"\n"> <"\t\techo \"100644 $sha1 3\told\"\n"> <"\t) | git update-index --index-info &&\n"> <"\t>old &&\n"> <"\tgit ls-files -s &&\n"> <"\tgit reset --hard &&\n"> <"\tgit ls-files -s >actual &&\n"> <"\t! test -f old\n"> ) } ) (C {(test_expect_success)} {(SQ <"Porcelain checkout -f should remove remnants too">)} { (SQ <"\n"> <"\tread_tree_u_must_succeed --reset -u HEAD &&\n"> <"\tgit ls-files -s >expect &&\n"> <"\tsha1=$(git rev-parse :new) &&\n"> <"\t(\n"> <"\t\techo \"100644 $sha1 1\told\"\n"> <"\t\techo \"100644 $sha1 3\told\"\n"> <"\t) | git update-index --index-info &&\n"> <"\t>old &&\n"> <"\tgit ls-files -s &&\n"> <"\tgit checkout -f &&\n"> <"\tgit ls-files -s >actual &&\n"> <"\t! test -f old\n"> ) } ) (C {(test_expect_success)} {(SQ <"Porcelain checkout -f HEAD should remove remnants too">)} { (SQ <"\n"> <"\tread_tree_u_must_succeed --reset -u HEAD &&\n"> <"\tgit ls-files -s >expect &&\n"> <"\tsha1=$(git rev-parse :new) &&\n"> <"\t(\n"> <"\t\techo \"100644 $sha1 1\told\"\n"> <"\t\techo \"100644 $sha1 3\told\"\n"> <"\t) | git update-index --index-info &&\n"> <"\t>old &&\n"> <"\tgit ls-files -s &&\n"> <"\tgit checkout -f HEAD &&\n"> <"\tgit ls-files -s >actual &&\n"> <"\t! test -f old\n"> ) } ) (C {(test_done)}) ] )