(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'Test git notes prune' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: create a few commits with notes' span_id:18))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) (Token id:Id.Lit_Chars val:'\n' span_id:23) (Token id:Id.Lit_Chars val:'\t: > file1 &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit add file1 &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tgit commit -m 1st &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\tgit notes add -m "Note #1" &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\t: > file2 &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\tgit add file2 &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\tgit commit -m 2nd &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit notes add -m "Note #2" &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\t: > file3 &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit add file3 &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit commit -m 3rd &&\n' span_id:37) (Token id: Id.Lit_Chars val: '\tCOMMIT_FILE=.git/objects/5e/e1c35e83ea47cd3cc4f8cbee0568915fbbbd29 &&\n' span_id: 38 ) (Token id:Id.Lit_Chars val:'\ttest -f $COMMIT_FILE &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\ttest-chmtime =+0 $COMMIT_FILE &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\tgit notes add -m "Note #3"\n' span_id:41) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:47) fd:-1 arg_word:{(expect)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:51) fd: -1 here_begin: {(END_OF_LOG)} here_end_span_id: 81 stdin_parts: [ ('commit 5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29\n') ('Author: A U Thor <author@example.com>\n') ('Date: Thu Apr 7 15:15:13 2005 -0700\n') ('\n') (' 3rd\n') ('\n') ('Notes:\n') (' Note #3\n') ('\n') ('commit 08341ad9e94faa089d60fd3f523affb25c6da189\n') ('Author: A U Thor <author@example.com>\n') ('Date: Thu Apr 7 15:14:13 2005 -0700\n') ('\n') (' 2nd\n') ('\n') ('Notes:\n') (' Note #2\n') ('\n') ('commit ab5f302035f2e7aaf04265f08b42034c23256e1f\n') ('Author: A U Thor <author@example.com>\n') ('Date: Thu Apr 7 15:13:13 2005 -0700\n') ('\n') (' 1st\n') ('\n') ('Notes:\n') (' Note #1\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'verify commits and notes' span_id:86))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:90) (Token id:Id.Lit_Chars val:'\n' span_id:91) (Token id:Id.Lit_Chars val:'\tgit log > actual &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:93) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'remove some commits' span_id:100))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:104) (Token id:Id.Lit_Chars val:'\n' span_id:105) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD~1 &&\n' span_id:106) (Token id:Id.Lit_Chars val:'\tgit reflog expire --expire=now HEAD &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\tgit gc --prune=now\n' span_id:108) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'verify that commits are gone' span_id:115))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:119) (Token id:Id.Lit_Chars val:'\n' span_id:120) (Token id: Id.Lit_Chars val: '\ttest_must_fail git cat-file -p 5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29 &&\n' span_id: 121 ) (Token id: Id.Lit_Chars val: '\tgit cat-file -p 08341ad9e94faa089d60fd3f523affb25c6da189 &&\n' span_id: 122 ) (Token id: Id.Lit_Chars val: '\tgit cat-file -p ab5f302035f2e7aaf04265f08b42034c23256e1f\n' span_id: 123 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'verify that notes are still present' span_id:130))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:134) (Token id:Id.Lit_Chars val:'\n' span_id:135) (Token id: Id.Lit_Chars val: '\tgit notes show 5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29 &&\n' span_id: 136 ) (Token id: Id.Lit_Chars val: '\tgit notes show 08341ad9e94faa089d60fd3f523affb25c6da189 &&\n' span_id: 137 ) (Token id:Id.Lit_Chars val:'\tgit notes show ab5f302035f2e7aaf04265f08b42034c23256e1f\n' span_id:138) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prune -n does not remove notes' span_id:145))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:149) (Token id:Id.Lit_Chars val:'\n' span_id:150) (Token id:Id.Lit_Chars val:'\tgit notes list > expect &&\n' span_id:151) (Token id:Id.Lit_Chars val:'\tgit notes prune -n &&\n' span_id:152) (Token id:Id.Lit_Chars val:'\tgit notes list > actual &&\n' span_id:153) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:154) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:160) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:164) fd: -1 here_begin: {(EOF)} here_end_span_id: 169 stdin_parts: [('5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prune -n lists prunable notes' span_id:174))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:178) (Token id:Id.Lit_Chars val:'\n' span_id:179) (Token id:Id.Lit_Chars val:'\n' span_id:180) (Token id:Id.Lit_Chars val:'\tgit notes prune -n > actual &&\n' span_id:181) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:182) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prune notes' span_id:190))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:194) (Token id:Id.Lit_Chars val:'\n' span_id:195) (Token id:Id.Lit_Chars val:'\tgit notes prune\n' span_id:196) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'verify that notes are gone' span_id:203))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:207) (Token id:Id.Lit_Chars val:'\n' span_id:208) (Token id: Id.Lit_Chars val: '\ttest_must_fail git notes show 5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29 &&\n' span_id: 209 ) (Token id: Id.Lit_Chars val: '\tgit notes show 08341ad9e94faa089d60fd3f523affb25c6da189 &&\n' span_id: 210 ) (Token id:Id.Lit_Chars val:'\tgit notes show ab5f302035f2e7aaf04265f08b42034c23256e1f\n' span_id:211) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'remove some commits' span_id:218))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:222) (Token id:Id.Lit_Chars val:'\n' span_id:223) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD~1 &&\n' span_id:224) (Token id:Id.Lit_Chars val:'\tgit reflog expire --expire=now HEAD &&\n' span_id:225) (Token id:Id.Lit_Chars val:'\tgit gc --prune=now\n' span_id:226) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:232) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:236) fd: -1 here_begin: {(EOF)} here_end_span_id: 241 stdin_parts: [('08341ad9e94faa089d60fd3f523affb25c6da189\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prune -v notes' span_id:246))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:250) (Token id:Id.Lit_Chars val:'\n' span_id:251) (Token id:Id.Lit_Chars val:'\tgit notes prune -v > actual &&\n' span_id:252) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:253) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'verify that notes are gone' span_id:260))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:264) (Token id:Id.Lit_Chars val:'\n' span_id:265) (Token id: Id.Lit_Chars val: '\ttest_must_fail git notes show 5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29 &&\n' span_id: 266 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git notes show 08341ad9e94faa089d60fd3f523affb25c6da189 &&\n' span_id: 267 ) (Token id:Id.Lit_Chars val:'\tgit notes show ab5f302035f2e7aaf04265f08b42034c23256e1f\n' span_id:268) ) } ) (C {(test_done)}) ] )