(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"Intent to add">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ <"intent to add">)} { (SQ <"\n"> <"\ttest_commit 1 &&\n"> <"\tgit rm 1.t &&\n"> <"\techo hello >1.t &&\n"> <"\techo hello >file &&\n"> <"\techo hello >elif &&\n"> <"\tgit add -N file &&\n"> <"\tgit add elif &&\n"> <"\tgit add -N 1.t\n"> ) } ) (C {(test_expect_success)} {(SQ <"git status">)} { (SQ <"\n"> <"\tgit status --porcelain | grep -v actual >actual &&\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\tDA 1.t\n"> <"\tA elif\n"> <"\t A file\n"> <"\tEOF\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"check result of \"add -N\"">)} { (SQ <"\n"> <"\tgit ls-files -s file >actual &&\n"> <"\tempty=$(git hash-object --stdin </dev/null) &&\n"> <"\techo \"100644 $empty 0\tfile\" >expect &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"intent to add is just an ordinary empty blob">)} { (SQ <"\n"> <"\tgit add -u &&\n"> <"\tgit ls-files -s file >actual &&\n"> <"\tgit ls-files -s elif | sed -e \"s/elif/file/\" >expect &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"intent to add does not clobber existing paths">)} { (SQ <"\n"> <"\tgit add -N file elif &&\n"> <"\tempty=$(git hash-object --stdin </dev/null) &&\n"> <"\tgit ls-files -s >actual &&\n"> <"\t! grep \"$empty\" actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"i-t-a entry is simply ignored">)} { (SQ <"\n"> <"\ttest_tick &&\n"> <"\tgit commit -a -m initial &&\n"> <"\tgit reset --hard &&\n"> <"\n"> <"\techo xyzzy >rezrov &&\n"> <"\techo frotz >nitfol &&\n"> <"\tgit add rezrov &&\n"> <"\tgit add -N nitfol &&\n"> <"\tgit commit -m second &&\n"> <"\ttest $(git ls-tree HEAD -- nitfol | wc -l) = 0 &&\n"> <"\ttest $(git diff --name-only HEAD -- nitfol | wc -l) = 1 &&\n"> <"\ttest $(git diff --name-only --ita-invisible-in-index HEAD -- nitfol | wc -l) = 0 &&\n"> <"\ttest $(git diff --name-only --ita-invisible-in-index -- nitfol | wc -l) = 1\n"> ) } ) (C {(test_expect_success)} {(SQ <"can commit with an unrelated i-t-a entry in index">)} { (SQ <"\n"> <"\tgit reset --hard &&\n"> <"\techo bozbar >rezrov &&\n"> <"\techo frotz >nitfol &&\n"> <"\tgit add rezrov &&\n"> <"\tgit add -N nitfol &&\n"> <"\tgit commit -m partial rezrov\n"> ) } ) (C {(test_expect_success)} {(SQ <"can \"commit -a\" with an i-t-a entry">)} { (SQ <"\n"> <"\tgit reset --hard &&\n"> <"\t: >nitfol &&\n"> <"\tgit add -N nitfol &&\n"> <"\tgit commit -a -m all\n"> ) } ) (C {(test_expect_success)} {(SQ <"cache-tree invalidates i-t-a paths">)} { (SQ <"\n"> <"\tgit reset --hard &&\n"> <"\tmkdir dir &&\n"> <"\t: >dir/foo &&\n"> <"\tgit add dir/foo &&\n"> <"\tgit commit -m foo &&\n"> <"\n"> <"\t: >dir/bar &&\n"> <"\tgit add -N dir/bar &&\n"> <"\tgit diff --cached --name-only >actual &&\n"> <"\techo dir/bar >expect &&\n"> <"\ttest_cmp expect actual &&\n"> <"\n"> <"\tgit write-tree >/dev/null &&\n"> <"\n"> <"\tgit diff --cached --name-only >actual &&\n"> <"\techo dir/bar >expect &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"cache-tree does not ignore dir that has i-t-a entries">)} { (SQ <"\n"> <"\tgit init ita-in-dir &&\n"> <"\t(\n"> <"\t\tcd ita-in-dir &&\n"> <"\t\tmkdir 2 &&\n"> <"\t\tfor f in 1 2/1 2/2 3\n"> <"\t\tdo\n"> <"\t\t\techo \"$f\" >\"$f\"\n"> <"\t\tdone &&\n"> <"\t\tgit add 1 2/2 3 &&\n"> <"\t\tgit add -N 2/1 &&\n"> <"\t\tgit commit -m committed &&\n"> <"\t\tgit ls-tree -r HEAD >actual &&\n"> <"\t\tgrep 2/2 actual\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"cache-tree does skip dir that becomes empty">)} { (SQ <"\n"> <"\trm -fr ita-in-dir &&\n"> <"\tgit init ita-in-dir &&\n"> <"\t(\n"> <"\t\tcd ita-in-dir &&\n"> <"\t\tmkdir -p 1/2/3 &&\n"> <"\t\techo 4 >1/2/3/4 &&\n"> <"\t\tgit add -N 1/2/3/4 &&\n"> <"\t\tgit write-tree >actual &&\n"> <"\t\techo $EMPTY_TREE >expected &&\n"> <"\t\ttest_cmp expected actual\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"commit: ita entries ignored in empty intial commit check">)} { (SQ <"\n"> <"\tgit init empty-intial-commit &&\n"> <"\t(\n"> <"\t\tcd empty-intial-commit &&\n"> <"\t\t: >one &&\n"> <"\t\tgit add -N one &&\n"> <"\t\ttest_must_fail git commit -m nothing-new-here\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"commit: ita entries ignored in empty commit check">)} { (SQ <"\n"> <"\tgit init empty-subsequent-commit &&\n"> <"\t(\n"> <"\t\tcd empty-subsequent-commit &&\n"> <"\t\ttest_commit one &&\n"> <"\t\t: >two &&\n"> <"\t\tgit add -N two &&\n"> <"\t\ttest_must_fail git commit -m nothing-new-here\n"> <"\t)\n"> ) } ) (C {(test_done)}) ] )