(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'Test diff indent heuristic.\n'> <'\n'>)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ VSub_Name '$TEST_DIRECTORY')) (/diff-lib.sh)}) (FuncDef name: compare_diff body: (BraceGroup children: [ (SimpleCommand words: [{(sed)} {(-e)} {(DQ ('/^index /d'))}] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(DQ ($ VSub_Number '$1'))} spids: [44] ) (Redir op_id:Redir_Great fd:16777215 arg_word:{(.tmp-1)} spids:[49]) ] ) (SimpleCommand words: [{(sed)} {(-e)} {(DQ ('/^index /d'))}] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(DQ ($ VSub_Number '$2'))} spids: [61] ) (Redir op_id:Redir_Great fd:16777215 arg_word:{(.tmp-2)} spids:[66]) ] ) (AndOr ops: [Op_DAmp] children: [(C {(test_cmp)} {(.tmp-1)} {(.tmp-2)}) (C {(rm)} {(-f)} {(.tmp-1)} {(.tmp-2)})] ) ] spids: [33] ) spids: [28 32] ) (FuncDef name: compare_blame body: (BraceGroup children: [ (SimpleCommand words: [{(sed)} {(-n)} {(-e)} {(DQ ('1,4d'))} {(-e)} {(DQ ('s/^') (Lit_Other '\\') ('+//p'))}] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(DQ ($ VSub_Number '$1'))} spids: [121] ) (Redir op_id:Redir_Great fd:16777215 arg_word:{(.tmp-1)} spids:[126]) ] ) (SimpleCommand words: [{(sed)} {(-ne)} {(DQ ('s/^[^^][^)]*) *//p'))}] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(DQ ($ VSub_Number '$2'))} spids: [138] ) (Redir op_id:Redir_Great fd:16777215 arg_word:{(.tmp-2)} spids:[143]) ] ) (AndOr ops: [Op_DAmp] children: [(C {(test_cmp)} {(.tmp-1)} {(.tmp-2)}) (C {(rm)} {(-f)} {(.tmp-1)} {(.tmp-2)})] ) ] spids: [100] ) spids: [95 99] ) (C {(test_expect_success)} {(SQ <prepare>)} { (SQ <'\n'> <'\tcat <<-\\EOF >spaces.txt &&\n'> <'\t1\n'> <'\t2\n'> <'\ta\n'> <'\n'> <'\tb\n'> <'\t3\n'> <'\t4\n'> <'\tEOF\n'> <'\n'> <'\tcat <<-\\EOF >functions.c &&\n'> <'\t1\n'> <'\t2\n'> <'\t/* function */\n'> <'\tfoo() {\n'> <'\t foo\n'> <'\t}\n'> <'\n'> <'\t3\n'> <'\t4\n'> <'\tEOF\n'> <'\n'> <'\tgit add spaces.txt functions.c &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m initial &&\n'> <'\tgit branch old &&\n'> <'\n'> <'\tcat <<-\\EOF >spaces.txt &&\n'> <'\t1\n'> <'\t2\n'> <'\ta\n'> <'\n'> <'\tb\n'> <'\ta\n'> <'\n'> <'\tb\n'> <'\t3\n'> <'\t4\n'> <'\tEOF\n'> <'\n'> <'\tcat <<-\\EOF >functions.c &&\n'> <'\t1\n'> <'\t2\n'> <'\t/* function */\n'> <'\tbar() {\n'> <'\t foo\n'> <'\t}\n'> <'\n'> <'\t/* function */\n'> <'\tfoo() {\n'> <'\t foo\n'> <'\t}\n'> <'\n'> <'\t3\n'> <'\t4\n'> <'\tEOF\n'> <'\n'> <'\tgit add spaces.txt functions.c &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m initial &&\n'> <'\tgit branch new &&\n'> <'\n'> <'\ttr "_" " " <<-\\EOF >spaces-expect &&\n'> <'\tdiff --git a/spaces.txt b/spaces.txt\n'> <'\t--- a/spaces.txt\n'> <'\t+++ b/spaces.txt\n'> <'\t@@ -3,5 +3,8 @@\n'> <'\t a\n'> <'\t_\n'> <'\t b\n'> <'\t+a\n'> <'\t+\n'> <'\t+b\n'> <'\t 3\n'> <'\t 4\n'> <'\tEOF\n'> <'\n'> <'\ttr "_" " " <<-\\EOF >spaces-compacted-expect &&\n'> <'\tdiff --git a/spaces.txt b/spaces.txt\n'> <'\t--- a/spaces.txt\n'> <'\t+++ b/spaces.txt\n'> <'\t@@ -2,6 +2,9 @@\n'> <'\t 2\n'> <'\t a\n'> <'\t_\n'> <'\t+b\n'> <'\t+a\n'> <'\t+\n'> <'\t b\n'> <'\t 3\n'> <'\t 4\n'> <'\tEOF\n'> <'\n'> <'\ttr "_" " " <<-\\EOF >functions-expect &&\n'> <'\tdiff --git a/functions.c b/functions.c\n'> <'\t--- a/functions.c\n'> <'\t+++ b/functions.c\n'> <'\t@@ -1,6 +1,11 @@\n'> <'\t 1\n'> <'\t 2\n'> <'\t /* function */\n'> <'\t+bar() {\n'> <'\t+ foo\n'> <'\t+}\n'> <'\t+\n'> <'\t+/* function */\n'> <'\t foo() {\n'> <'\t foo\n'> <'\t }\n'> <'\tEOF\n'> <'\n'> <'\ttr "_" " " <<-\\EOF >functions-compacted-expect\n'> <'\tdiff --git a/functions.c b/functions.c\n'> <'\t--- a/functions.c\n'> <'\t+++ b/functions.c\n'> <'\t@@ -1,5 +1,10 @@\n'> <'\t 1\n'> <'\t 2\n'> <'\t+/* function */\n'> <'\t+bar() {\n'> <'\t+ foo\n'> <'\t+}\n'> <'\t+\n'> <'\t /* function */\n'> <'\t foo() {\n'> <'\t foo\n'> <'\tEOF\n'> ) } ) (C {(test_expect_success)} {(SQ <'diff: ugly spaces'>)} { (SQ <'\n'> <'\tgit diff old new -- spaces.txt >out &&\n'> <'\tcompare_diff spaces-expect out\n'> ) } ) (C {(test_expect_success)} {(SQ <'diff: nice spaces with --indent-heuristic'>)} { (SQ <'\n'> <'\tgit diff --indent-heuristic old new -- spaces.txt >out-compacted &&\n'> <'\tcompare_diff spaces-compacted-expect out-compacted\n'> ) } ) (C {(test_expect_success)} {(SQ <'diff: nice spaces with diff.indentHeuristic'>)} { (SQ <'\n'> <'\tgit -c diff.indentHeuristic=true diff old new -- spaces.txt >out-compacted2 &&\n'> <'\tcompare_diff spaces-compacted-expect out-compacted2\n'> ) } ) (C {(test_expect_success)} {(SQ <'diff: --no-indent-heuristic overrides config'>)} { (SQ <'\n'> < '\tgit -c diff.indentHeuristic=true diff --no-indent-heuristic old new -- spaces.txt >out2 &&\n' > <'\tcompare_diff spaces-expect out2\n'> ) } ) (C {(test_expect_success)} {(SQ <'diff: --indent-heuristic with --patience'>)} { (SQ <'\n'> <'\tgit diff --indent-heuristic --patience old new -- spaces.txt >out-compacted3 &&\n'> <'\tcompare_diff spaces-compacted-expect out-compacted3\n'> ) } ) (C {(test_expect_success)} {(SQ <'diff: --indent-heuristic with --histogram'>)} { (SQ <'\n'> <'\tgit diff --indent-heuristic --histogram old new -- spaces.txt >out-compacted4 &&\n'> <'\tcompare_diff spaces-compacted-expect out-compacted4\n'> ) } ) (C {(test_expect_success)} {(SQ <'diff: ugly functions'>)} { (SQ <'\n'> <'\tgit diff old new -- functions.c >out &&\n'> <'\tcompare_diff functions-expect out\n'> ) } ) (C {(test_expect_success)} {(SQ <'diff: nice functions with --indent-heuristic'>)} { (SQ <'\n'> <'\tgit diff --indent-heuristic old new -- functions.c >out-compacted &&\n'> <'\tcompare_diff functions-compacted-expect out-compacted\n'> ) } ) (C {(test_expect_success)} {(SQ <'blame: ugly spaces'>)} { (SQ <'\n'> <'\tgit blame old..new -- spaces.txt >out-blame &&\n'> <'\tcompare_blame spaces-expect out-blame\n'> ) } ) (C {(test_expect_success)} {(SQ <'blame: nice spaces with --indent-heuristic'>)} { (SQ <'\n'> <'\tgit blame --indent-heuristic old..new -- spaces.txt >out-blame-compacted &&\n'> <'\tcompare_blame spaces-compacted-expect out-blame-compacted\n'> ) } ) (C {(test_expect_success)} {(SQ <'blame: nice spaces with diff.indentHeuristic'>)} { (SQ <'\n'> < '\tgit -c diff.indentHeuristic=true blame old..new -- spaces.txt >out-blame-compacted2 &&\n' > <'\tcompare_blame spaces-compacted-expect out-blame-compacted2\n'> ) } ) (C {(test_expect_success)} {(SQ <'blame: --no-indent-heuristic overrides config'>)} { (SQ <'\n'> < '\tgit -c diff.indentHeuristic=true blame --no-indent-heuristic old..new -- spaces.txt >out-blame2 &&\n' > <'\tgit blame old..new -- spaces.txt >out-blame &&\n'> <'\tcompare_blame spaces-expect out-blame2\n'> ) } ) (C {(test_done)}) ] )