(List (= scope= flags=0 words=[] bindings=[('test_description', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ./test-lib.sh]}) (= scope= flags=0 words=[] bindings=[('number_of_commits', {[LIT_CHARS 100]})]) (FunctionDef start_note_commit [] (AndOr OP_AND_IF (Com {[LIT_CHARS test_tick]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/commits\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data < 0), > ) ) ) (FunctionDef verify_notes [] (AndOr OP_AND_IF (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS log]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "^ "]]} < (FilenameRedirectNode filename={[LIT_CHARS output]} "> 1), > ) ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('i', {[VarSub number_of_commits]})]) (AndOr OP_AND_IF (While (Com {[LIT_OTHER "["]} {[VarSub i]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " commit #"][VarSub i]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " note for commit #"][VarSub i]]}) (= scope= flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) ) (Com {[LIT_CHARS test_cmp]} {[LIT_CHARS expect]} {[LIT_CHARS output]}) ) ) ) ) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "setup: create a couple of commits"]]} {[SQ input &&\n"> $GIT_COMMITTER_DATE\n"> >input &&\n"> $GIT_COMMITTER_DATE\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "create a notes tree with both notes and non-notes"]]} {[SQ input &&\n"> $GIT_COMMITTER_DATE\n"> >input &&\n"> $GIT_COMMITTER_DATE\n"> >input &&\n"> $GIT_COMMITTER_DATE\n"> ]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} "> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS " commit #2\n"][LIT_CHARS " edited note for commit #2\n"][LIT_CHARS " commit #1\n"][LIT_CHARS " edited note for commit #1\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "verify contents of notes"]]} {[SQ actual &&\n"> ]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect_nn1]} "> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "A non-note in a notes tree\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect_nn2]} "> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "non-note with SHA1-like name\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect_nn3]} "> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "another non-note with SHA1-like name\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect_nn4]} "> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "yet another non-note with SHA1-like name\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "verify contents of non-notes"]]} {[SQ actual_nn1 &&\n"> actual_nn2 &&\n"> actual_nn3 &&\n"> actual_nn4 &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "git-notes preserves non-notes"]]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "verify contents of non-notes after git-notes"]]} {[SQ actual_nn1 &&\n"> actual_nn2 &&\n"> actual_nn3 &&\n"> actual_nn4 &&\n"> ]}) (Com {[LIT_CHARS test_done]}) )