(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)}) ] )