(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"TREESAME and limiting">)} spids: [37] ) ] spids: [37] ) (C {(.)} {(./test-lib.sh)}) (FuncDef name: note body: (BraceGroup children:[(C {(git)} {(tag)} {(DQ ($ VSub_Number "$1"))})] spids:[53]) spids: [48 52] ) (FuncDef name: unnote body: (BraceGroup children: [ (Pipeline children: [ (C {(git)} {(name-rev)} {(--tags)} {(--stdin)}) (C {(sed)} {(-e)} { (DQ ("s|") ($ VSub_Name "$_x40") (" (tags/") (EscapedLiteralPart token:<Lit_EscapedChar "\\(">) ("[^)]*") (EscapedLiteralPart token:<Lit_EscapedChar "\\)">) (")") (EscapedLiteralPart token:<Lit_EscapedChar "\\(">) ("[ \t]") (EscapedLiteralPart token:<Lit_EscapedChar "\\)">) ("|") (EscapedLiteralPart token:<Lit_EscapedChar "\\1">) (EscapedLiteralPart token:<Lit_EscapedChar "\\2">) ("|g") ) } ) ] negated: False ) ] spids: [72] ) spids: [67 71] ) (C {(test_expect_success)} {(setup)} { (SQ <"\n"> <"\ttest_commit \"Initial file\" file \"Hi there\" A &&\n"> <"\tgit branch other-branch &&\n"> <"\n"> <"\ttest_commit \"file=Hello\" file \"Hello\" B &&\n"> <"\tgit branch third-branch &&\n"> <"\n"> <"\tgit checkout other-branch &&\n"> <"\ttest_commit \"Added other\" other \"Hello\" C &&\n"> <"\n"> <"\tgit checkout master &&\n"> <"\ttest_merge D other-branch &&\n"> <"\n"> <"\tgit checkout third-branch &&\n"> <"\ttest_commit \"Third file\" third \"Nothing\" E &&\n"> <"\n"> <"\tgit checkout master &&\n"> <"\ttest_commit \"file=Blah\" file \"Blah\" F &&\n"> <"\n"> <"\ttest_tick && git merge --no-commit third-branch &&\n"> <"\tgit checkout third-branch file &&\n"> <"\tgit commit &&\n"> <"\tnote G &&\n"> <"\tgit branch fiddler-branch &&\n"> <"\n"> <"\tgit checkout -b part2-branch &&\n"> <"\ttest_commit \"file=Part 2\" file \"Part 2\" H &&\n"> <"\n"> <"\tgit checkout fiddler-branch &&\n"> <"\ttest_commit \"Bad commit\" file \"Silly\" I &&\n"> <"\n"> <"\ttest_tick && git revert I && note J &&\n"> <"\n"> <"\tgit checkout master &&\n"> <"\ttest_tick && git merge --no-ff fiddler-branch &&\n"> <"\tnote K &&\n"> <"\n"> <"\ttest_commit \"file=Part 1\" file \"Part 1\" L &&\n"> <"\n"> <"\ttest_tick && test_must_fail git merge part2-branch &&\n"> <"\ttest_commit M file \"Parts 1+2\"\n"> ) } ) (FuncDef name: check_outcome body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:outcome) op: Equal rhs: {($ VSub_Number "$1")} spids: [166] ) ] spids: [166] ) (C {(shift)}) (AndOr children: [ (Case to_match: {(DQ ($ VSub_Number "$1"))} arms: [ (case_arm pat_list: [{(Lit_Other "*") (DQ ("(")) (Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FMT) op: Equal rhs: {(DQ ("%P\t%H | %s"))} spids: [191] ) ] spids: [191] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:munge_actual) op: Equal rhs: { (DQ ("\n") ("\t\t\ts/^") (EscapedLiteralPart token: <Lit_EscapedChar "\\("> ) ("[^\t]*") (EscapedLiteralPart token:<Lit_EscapedChar "\\)">) ("\t") (EscapedLiteralPart token: <Lit_EscapedChar "\\("> ) ("[^ ]*") (EscapedLiteralPart token:<Lit_EscapedChar "\\)">) (" .*/(") (EscapedLiteralPart token: <Lit_EscapedChar "\\1"> ) (")") (EscapedLiteralPart token:<Lit_EscapedChar "\\2">) ("/\n") ("\t\t\ts/ //g\n") ("\t\t\ts/()//\n") ("\t\t") ) } spids: [197] ) ] spids: [197] ) ] spids: [183 188 219 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FMT) op: Equal rhs: {(DQ ("%H | %s"))} spids: [226] ) ] spids: [226] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:munge_actual) op: Equal rhs: { (DQ ("s/^") (EscapedLiteralPart token:<Lit_EscapedChar "\\(">) ("[^ ]*") (EscapedLiteralPart token:<Lit_EscapedChar "\\)">) (" .*/") (EscapedLiteralPart token: <Lit_EscapedChar "\\1"> ) (/) ) } spids: [232] ) ] spids: [232] ) ] spids: [222 223 244 -1] ) ] spids: [174 180 247] ) (AndOr children: [ (SimpleCommand words: [ {(printf)} {(DQ ("%s") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} {($ VSub_Number "$1")} ] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[261])] ) (C {(shift)}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:param) op: Equal rhs: {(DQ ($ VSub_Star "$*"))} spids: [271] ) ] spids: [271] ) (C {(test_expect_) ($ VSub_Name "$outcome")} {(DQ ("log ") ($ VSub_Name "$param"))} { (SQ <"\n"> <"\t\tgit log --format=\"$FMT\" $param |\n"> <"\t\tunnote >actual &&\n"> <"\t\tsed -e \"$munge_actual\" <actual >check &&\n"> <"\t\ttest_cmp expect check\n"> <"\t"> ) } ) ] op_id: Op_DAmp ) ] spids: [163] ) spids: [158 162] ) (FuncDef name: check_result body: (BraceGroup children: [(C {(check_outcome)} {(success)} {(DQ ($ VSub_At "$@"))})] spids: [304] ) spids: [299 303] ) (C {(check_result)} {(SQ <"M L K J I H G F E D C B A">)}) (C {(check_result)} {(SQ <"(LH)M (K)L (GJ)K (I)J (G)I (G)H (FE)G (D)F (B)E (BC)D (A)C (A)B A">)}) (C {(check_result)} {(SQ <"M H L K J I G E F D C B A">)} {(--topo-order)}) (C {(check_result)} {(SQ <"M L H B A">)} {(--)} {(file)}) (C {(check_result)} {(SQ <"(LH)M (B)L (B)H (A)B A">)} {(--parents)} {(--)} {(file)}) (C {(check_result)} {(SQ <"M L J I H G F D B A">)} {(--full-history)} {(--)} {(file)}) (C {(check_result)} {(SQ <"(LH)M (K)L (GJ)K (I)J (G)I (G)H (FB)G (D)F (BA)D (A)B A">)} {(--full-history)} {(--parents)} {(--)} {(file)} ) (C {(check_result)} {(SQ <"(LH)M (G)H (J)L (I)J (G)I (FB)G (B)F (A)B A">)} {(--simplify-merges)} {(--)} {(file)} ) (C {(check_result)} {(SQ <"M L K G F D B A">)} {(--first-parent)}) (C {(check_result)} {(SQ <"M L G F B A">)} {(--first-parent)} {(--)} {(file)}) (C {(check_result)} {(SQ <"M L K J I H G E">)} {(F..M)}) (C {(check_result)} {(SQ <"M H L K J I G E">)} {(F..M)} {(--topo-order)}) (C {(check_result)} {(SQ <"M L H">)} {(F..M)} {(--)} {(file)}) (C {(check_result)} {(SQ <"(LH)M (B)L (B)H">)} {(--parents)} {(F..M)} {(--)} {(file)}) (C {(check_result)} {(SQ <"M L J I H G">)} {(F..M)} {(--full-history)} {(--)} {(file)}) (C {(check_result)} {(SQ <"(LH)M (K)L (GJ)K (I)J (G)I (G)H (FB)G">)} {(F..M)} {(--full-history)} {(--parents)} {(--)} {(file)} ) (C {(check_result)} {(SQ <"(LH)M (G)H (J)L (I)J (G)I (FB)G">)} {(F..M)} {(--simplify-merges)} {(--)} {(file)} ) (C {(check_result)} {(SQ <"M L K J I H G">)} {(F..M)} {(--ancestry-path)}) (C {(check_result)} {(SQ <"M L J I H G">)} {(F..M)} {(--ancestry-path)} {(--)} {(file)}) (C {(check_result)} {(SQ <"(LH)M (K)L (GJ)K (I)J (G)I (G)H (FE)G">)} {(F..M)} {(--ancestry-path)} {(--parents)} {(--)} {(file)} ) (C {(check_result)} {(SQ <"(LH)M (G)H (J)L (I)J (G)I (FE)G">)} {(F..M)} {(--ancestry-path)} {(--simplify-merges)} {(--)} {(file)} ) (C {(check_result)} {(SQ <"M L K G">)} {(F..M)} {(--first-parent)}) (C {(check_result)} {(SQ <"M L G">)} {(F..M)} {(--first-parent)} {(--)} {(file)}) (C {(check_result)} {(SQ <"M L K J I H G">)} {(E..M)} {(--ancestry-path)}) (C {(check_result)} {(SQ <"M L J I H">)} {(E..M)} {(--ancestry-path)} {(--)} {(file)}) (C {(check_result)} {(SQ <"(LH)M (K)L (EJ)K (I)J (E)I (E)H">)} {(E..M)} {(--ancestry-path)} {(--parents)} {(--)} {(file)} ) (C {(check_result)} {(SQ <"(LH)M (E)H (J)L (I)J (E)I">)} {(E..M)} {(--ancestry-path)} {(--simplify-merges)} {(--)} {(file)} ) (C {(check_result)} {(SQ <"M L K J I H">)} {(G..M)}) (C {(check_result)} {(SQ <"M H L K J I">)} {(G..M)} {(--topo-order)}) (C {(check_result)} {(SQ <"M L H">)} {(G..M)} {(--)} {(file)}) (C {(check_result)} {(SQ <"(LH)M (G)L (G)H">)} {(G..M)} {(--parents)} {(--)} {(file)}) (C {(check_result)} {(SQ <"M L J I H">)} {(G..M)} {(--full-history)} {(--)} {(file)}) (C {(check_result)} {(SQ <"M L K J I H">)} {(G..M)} {(--full-history)} {(--parents)} {(--)} {(file)}) (C {(check_result)} {(SQ <"M H L J I">)} {(G..M)} {(--simplify-merges)} {(--)} {(file)}) (C {(check_result)} {(SQ <"M L K J I H">)} {(G..M)} {(--ancestry-path)}) (C {(check_result)} {(SQ <"M L J I H">)} {(G..M)} {(--ancestry-path)} {(--)} {(file)}) (C {(check_result)} {(SQ <"M L K J I H">)} {(G..M)} {(--ancestry-path)} {(--parents)} {(--)} {(file)}) (C {(check_result)} {(SQ <"M H L J I">)} {(G..M)} {(--ancestry-path)} {(--simplify-merges)} {(--)} {(file)} ) (C {(check_result)} {(SQ <"F D C">)} {(B..F)}) (C {(check_result)} {(SQ <F>)} {(B..F)} {(--)} {(file)}) (C {(check_result)} {(SQ <"(B)F">)} {(B..F)} {(--parents)} {(--)} {(file)}) (C {(check_result)} {(SQ <"F D">)} {(B..F)} {(--full-history)} {(--)} {(file)}) (C {(check_result)} {(SQ <"(D)F (BA)D">)} {(B..F)} {(--full-history)} {(--parents)} {(--)} {(file)}) (C {(check_result)} {(SQ <"(B)F">)} {(B..F)} {(--simplify-merges)} {(--)} {(file)}) (C {(check_result)} {(SQ <"F D">)} {(B..F)} {(--ancestry-path)}) (C {(check_result)} {(SQ <F>)} {(B..F)} {(--ancestry-path)} {(--)} {(file)}) (C {(check_result)} {(SQ <F>)} {(B..F)} {(--ancestry-path)} {(--parents)} {(--)} {(file)}) (C {(check_result)} {(SQ <F>)} {(B..F)} {(--ancestry-path)} {(--simplify-merges)} {(--)} {(file)}) (C {(check_result)} {(SQ <"F D">)} {(B..F)} {(--first-parent)}) (C {(check_result)} {(SQ <F>)} {(B..F)} {(--first-parent)} {(--)} {(file)}) (C {(check_result)} {(SQ <F>)} {(E)} {(F)} {(Lit_Other "^") (B)} {(--)} {(file)}) (C {(check_result)} {(SQ <F>)} {(E...F)} {(--)} {(file)}) (C {(check_result)} {(SQ <"F D B">)} {(C..F)}) (C {(check_result)} {(SQ <"F B">)} {(C..F)} {(--)} {(file)}) (C {(check_result)} {(SQ <"(B)F (A)B">)} {(C..F)} {(--parents)} {(--)} {(file)}) (C {(check_result)} {(SQ <"F D B">)} {(C..F)} {(--full-history)} {(--)} {(file)}) (C {(check_result)} {(SQ <"(D)F (BC)D (A)B">)} {(C..F)} {(--full-history)} {(--parents)} {(--)} {(file)}) (C {(check_result)} {(SQ <"(D)F (BC)D (A)B">)} {(C..F)} {(--simplify-merges)} {(--)} {(file)}) (C {(check_result)} {(SQ <"F D">)} {(C..F)} {(--ancestry-path)}) (C {(check_result)} {(SQ <"F D">)} {(C..F)} {(--ancestry-path)} {(--)} {(file)}) (C {(check_result)} {(SQ <"F D">)} {(C..F)} {(--ancestry-path)} {(--parents)} {(--)} {(file)}) (C {(check_result)} {(SQ <"F D">)} {(C..F)} {(--ancestry-path)} {(--simplify-merges)} {(--)} {(file)}) (C {(check_result)} {(SQ <"F D B">)} {(C..F)} {(--first-parent)}) (C {(check_result)} {(SQ <"F B">)} {(C..F)} {(--first-parent)} {(--)} {(file)}) (C {(test_done)}) ] )