(List (= scope= flags=0 words=[] bindings=[('test_description', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ./test-lib.sh]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS NOT_EXPENSIVE]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub GIT_NOTES_TIMING_TESTS]]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS EXPENSIVE]} ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[LIT_CHARS /usr/bin/time]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS USR_BIN_TIME]} ) ) (FunctionDef create_repo [] (List (= scope= flags=0 words=[] bindings=[('number_of_commits', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('nr', {[LIT_CHARS 0]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[LIT_CHARS .git]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS init]} ) (AndOr OP_AND_IF (Pipeline (Subshell (AndOr OP_AND_IF (While (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub nr]} {[LIT_CHARS -lt]} {[VarSub number_of_commits]} {[LIT_DBRACKET_LIKE "]"]} ) (List (= scope= flags=0 words=[] bindings=[('nr', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub nr]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (= scope= flags=0 words=[] bindings=[('mark', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub nr]}} {A Atom NODE_ARITH_WORD {[VarSub nr]}}}]})]) (= scope= flags=0 words=[] bindings=[('notemark', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub mark]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test_tick]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/heads/master\n"][LIT_CHARS "mark :"][VarSub mark][LIT_CHARS "\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), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "N :"][VarSub notemark][LIT_CHARS " :"][VarSub mark]]} < (FilenameRedirectNode filename={[LIT_CHARS note_commit]} >"> 1), > ) ) ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test_tick]} ) (AndOr OP_AND_IF (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), > ) (Com {[LIT_CHARS cat]} {[LIT_CHARS note_commit]} ) ) ) ) ) (Com {[LIT_CHARS git]} {[LIT_CHARS fast-import]} {[LIT_CHARS --quiet]} ) ) (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS core.notesRef]} {[LIT_CHARS refs/notes/commits]} ) ) ) ) ) ) (FunctionDef test_notes [] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('count', {[VarSub 1]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS core.notesRef]} {[LIT_CHARS refs/notes/commits]} ) (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 count]})]) (AndOr OP_AND_IF (While (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub i]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} {[LIT_DBRACKET_LIKE "]"]} ) (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 cat]} < (FilenameRedirectNode filename={[LIT_CHARS time_notes]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "\tmode=$1\n"] [LIT_CHARS "\ti=1\n"] [LIT_CHARS "\twhile [ $i -lt $2 ]; do\n"] [LIT_CHARS "\t\tcase $1 in\n"] [LIT_CHARS "\t\tno-notes)\n"] [LIT_CHARS "\t\t\tGIT_NOTES_REF=non-existing; export GIT_NOTES_REF\n"] [LIT_CHARS "\t\t;;\n"] [LIT_CHARS "\t\tnotes)\n"] [LIT_CHARS "\t\t\tunset GIT_NOTES_REF\n"] [LIT_CHARS "\t\t;;\n"] [LIT_CHARS "\t\tesac\n"] [LIT_CHARS "\t\tgit log >/dev/null\n"] [LIT_CHARS "\t\ti=$(($i+1))\n"] [LIT_CHARS "\tdone\n"]} 0), > ) (FunctionDef time_notes [] (For mode [{[LIT_CHARS no-notes]}, {[LIT_CHARS notes]}]) (List (Com {[LIT_CHARS echo]} {[VarSub mode]} ) (Com {[LIT_CHARS /usr/bin/time]} {[DQ [VarSub SHELL_PATH]]} {[LIT_CHARS ../time_notes]} {[VarSub mode]} {[VarSub 1]} ) ) ) ) (FunctionDef do_tests [] (List (= scope= flags=0 words=[] bindings=[('pr', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('count', {[VarSub 2]})]) (Com {[LIT_CHARS test_expect_success]} {[VarSub pr]} {[SQ ]} {[SQ ]} ) (Com {[LIT_CHARS test_expect_success]} {[VarSub pr]} {[DQ [LIT_CHARS "setup "][VarSub count]]} {[DQ [LIT_CHARS "create_repo "][VarSub count]]} ) (Com {[LIT_CHARS test_expect_success]} {[VarSub pr]} {[SQ ]} {[DQ [LIT_CHARS "test_notes "][VarSub count]]} ) (Com {[LIT_CHARS test_expect_success]} {[LIT_CHARS USR_BIN_TIME] [LIT_COMMA ","] [VarSub pr]} {[SQ ]} {[DQ [LIT_CHARS "time_notes 100"]]} ) (Com {[LIT_CHARS test_expect_success]} {[VarSub pr]} {[SQ ]} {[SQ ]} ) ) ) (Com {[LIT_CHARS do_tests]} {[LIT_CHARS NOT_EXPENSIVE]} {[LIT_CHARS 10]} ) (For count [{[LIT_CHARS 100]}, {[LIT_CHARS 1000]}, {[LIT_CHARS 10000]}]) (Com {[LIT_CHARS do_tests]} {[LIT_CHARS EXPENSIVE]} {[VarSub count]} ) ) (Com {[LIT_CHARS test_done]} ) )