(List (= scope= flags=0 words=[] bindings=[('test_description', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ./test-lib.sh]} ) (FunctionDef f [] (List (Com {[LIT_CHARS echo]} {[VarSub 1]} ) (= scope= flags=0 words=[] bindings=[('i', {[LIT_CHARS 1]})]) (While (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -le]} {[VarSub 2]} ) (List (Com {[LIT_CHARS echo]} {[VarSub i]} ) (= scope= flags=0 words=[] bindings=[('i', {[ComSub (Com {[LIT_CHARS expr]} {[VarSub i]} {[LIT_OTHER "+"]} {[LIT_CHARS 1]})]})]) ) ) (Com {[LIT_CHARS echo]} {[VarSub 3]} ) ) ) (FunctionDef t [] (List (Case to_match={[VarSub #]}, pat_word_list=[[{[LIT_CHARS 4]}], [{[LIT_CHARS 5]}]] (List (= scope= flags=0 words=[] bindings=[('hunks', {[VarSub 4]})]) (= scope= flags=0 words=[] bindings=[('cmd', {[DQ [LIT_CHARS "diff -U"][VarSub 3]]})]) ) (List (= scope= flags=0 words=[] bindings=[('hunks', {[VarSub 5]})]) (= scope= flags=0 words=[] bindings=[('cmd', {[DQ [LIT_CHARS "diff -U"][VarSub 3][LIT_CHARS " --inter-hunk-context="][VarSub 4]]})]) ) ) (= scope= flags=0 words=[] bindings=[('label', {[DQ [VarSub cmd][LIT_CHARS ", "][VarSub 1][LIT_CHARS " common "][VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('file', {[LIT_CHARS f] [VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('expected', {[LIT_CHARS expected.] [VarSub file] [LIT_CHARS .] [VarSub 3] [LIT_CHARS .] [VarSub hunks]})]) (If (Pipeline! (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[VarSub file]} ) ) (List (Com {[LIT_CHARS f]} {[LIT_CHARS A]} {[VarSub 1]} {[LIT_CHARS B]} < (FilenameRedirectNode filename={[VarSub file]} "> 1), > ) (Com {[LIT_CHARS git]} {[LIT_CHARS add]} {[VarSub file]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS -q]} {[LIT_CHARS -m.]} {[VarSub file]} ) (Com {[LIT_CHARS f]} {[LIT_CHARS X]} {[VarSub 1]} {[LIT_CHARS Y]} < (FilenameRedirectNode filename={[VarSub file]} "> 1), > ) ) ) (Com {[LIT_CHARS test_expect_success]} {[DQ [VarSub label][LIT_CHARS ": count hunks ("][VarSub hunks][LIT_CHARS ")"]]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\t\ttest "][ComSub (Pipeline (Com {[LIT_CHARS git]} {[VarSub cmd]} {[VarSub file]}) (Com {[LIT_CHARS grep]} {[SQ ]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )][LIT_CHARS " = "][VarSub hunks][LIT_CHARS "\n"][LIT_CHARS "\t"]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[VarSub expected]} ) (Com {[LIT_CHARS test_expect_success]} {[DQ [VarSub label][LIT_CHARS ": check output"]]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\t\tgit "][VarSub cmd][LIT_CHARS " "][VarSub file][LIT_CHARS " | grep -v '^index ' >actual &&\n"][LIT_CHARS "\t\ttest_cmp "][VarSub expected][LIT_CHARS " actual\n"][LIT_CHARS "\t"]]} ) ) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "diff --git a/f1 b/f1\n"][LIT_CHARS "--- a/f1\n"][LIT_CHARS "+++ b/f1\n"][LIT_CHARS "@@ -1,3 +1,3 @@\n"][LIT_CHARS "-A\n"][LIT_CHARS "+X\n"][LIT_CHARS " 1\n"][LIT_CHARS "-B\n"][LIT_CHARS "+Y\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS expected.f1.0.1]} "> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "diff --git a/f1 b/f1\n"][LIT_CHARS "--- a/f1\n"][LIT_CHARS "+++ b/f1\n"][LIT_CHARS "@@ -1 +1 @@\n"][LIT_CHARS "-A\n"][LIT_CHARS "+X\n"][LIT_CHARS "@@ -3 +3 @@ A\n"][LIT_CHARS "-B\n"][LIT_CHARS "+Y\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS expected.f1.0.2]} "> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) (Com {[LIT_CHARS t]} {[LIT_CHARS 1]} {[LIT_CHARS line]} {[LIT_CHARS 0]} {[LIT_CHARS 2]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 1]} {[LIT_CHARS line]} {[LIT_CHARS 0]} {[LIT_CHARS 0]} {[LIT_CHARS 2]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 1]} {[LIT_CHARS line]} {[LIT_CHARS 0]} {[LIT_CHARS 1]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 1]} {[LIT_CHARS line]} {[LIT_CHARS 0]} {[LIT_CHARS 2]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 1]} {[LIT_CHARS line]} {[LIT_CHARS 1]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 2]} {[LIT_CHARS lines]} {[LIT_CHARS 0]} {[LIT_CHARS 2]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 2]} {[LIT_CHARS lines]} {[LIT_CHARS 0]} {[LIT_CHARS 0]} {[LIT_CHARS 2]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 2]} {[LIT_CHARS lines]} {[LIT_CHARS 0]} {[LIT_CHARS 1]} {[LIT_CHARS 2]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 2]} {[LIT_CHARS lines]} {[LIT_CHARS 0]} {[LIT_CHARS 2]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 2]} {[LIT_CHARS lines]} {[LIT_CHARS 1]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 3]} {[LIT_CHARS lines]} {[LIT_CHARS 1]} {[LIT_CHARS 2]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 3]} {[LIT_CHARS lines]} {[LIT_CHARS 1]} {[LIT_CHARS 0]} {[LIT_CHARS 2]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 3]} {[LIT_CHARS lines]} {[LIT_CHARS 1]} {[LIT_CHARS 1]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 3]} {[LIT_CHARS lines]} {[LIT_CHARS 1]} {[LIT_CHARS 2]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 9]} {[LIT_CHARS lines]} {[LIT_CHARS 3]} {[LIT_CHARS 2]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 9]} {[LIT_CHARS lines]} {[LIT_CHARS 3]} {[LIT_CHARS 2]} {[LIT_CHARS 2]} ) (Com {[LIT_CHARS t]} {[LIT_CHARS 9]} {[LIT_CHARS lines]} {[LIT_CHARS 3]} {[LIT_CHARS 3]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS test_done]} ) )