(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'GIT_EDITOR, core.editor, and stuff'>)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(unset)} {(EDITOR)} {(VISUAL)} {(GIT_EDITOR)}) (C {(test_expect_success)} {(SQ <'determine default editor'>)} { (SQ <'\n'> <'\n'> <'\tvi=$(TERM=vt100 git var GIT_EDITOR) &&\n'> <'\ttest -n "$vi"\n'> <'\n'>) } ) (If arms: [ (if_arm cond: [ (Pipeline children: [ (SimpleCommand words: [{(expr)} {(DQ ($ VSub_Name '$vi'))} {(Lit_Other ':')} {(SQ <'[a-z]*$'>)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[55])] ) ] negated: True ) ] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:vi) op:Equal rhs:{(SQ )} spids:[61])] spids: [61] ) ] spids: [-1 58] ) ] spids: [-1 63] ) (ForEach iter_name: i iter_words: [{(GIT_EDITOR)} {(core_editor)} {(EDITOR)} {(VISUAL)} {($ VSub_Name '$vi')}] do_arg_iter: False body: (DoGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(e-) ($ VSub_Name '$i') (.sh)} spids: [87] ) (HereDoc op_id: Redir_DLessDash fd: -1 body: { (DQ ('#!') ($ VSub_Name '$SHELL_PATH') ('\n') ('echo ') (Right_DoubleQuote '"') ('Edited by ') ($ VSub_Name '$i') (Right_DoubleQuote '"') (' >') (Right_DoubleQuote '"') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (1) (Right_DoubleQuote '"') ('\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [92] ) ] ) (C {(chmod)} {(Lit_Other '+') (x)} {(e-) ($ VSub_Name '$i') (.sh)}) ] spids: [82 119] ) spids: [71 -1] ) (If arms: [ (if_arm cond: [(Pipeline children:[(C {(test)} {(-z)} {(DQ ($ VSub_Name '$vi'))})] negated:True)] action: [(C {(mv)} {(e-) ($ VSub_Name '$vi') (.sh)} {($ VSub_Name '$vi')})] spids: [-1 134] ) ] spids: [-1 145] ) (C {(test_expect_success)} {(setup)} { (SQ <'\n'> <'\n'> <'\tmsg="Hand-edited" &&\n'> <'\ttest_commit "$msg" &&\n'> <'\techo "$msg" >expect &&\n'> <'\tgit show -s --format=%s > actual &&\n'> <'\ttest_cmp actual expect\n'> <'\n'> ) } ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:TERM) op:Equal rhs:{(dumb)} spids:[164])] spids: [164] ) (C {(export)} {(TERM)}) (C {(test_expect_success)} {(SQ <'dumb should error out when falling back on vi'>)} { (SQ <'\n'> <'\n'> <'\tif git commit --amend\n'> <'\tthen\n'> <'\t\techo "Oops?"\n'> <'\t\tfalse\n'> <'\telse\n'> <'\t\t: happy\n'> <'\tfi\n'> ) } ) (C {(test_expect_success)} {(SQ <'dumb should prefer EDITOR to VISUAL'>)} { (SQ <'\n'> <'\n'> <'\tEDITOR=./e-EDITOR.sh &&\n'> <'\tVISUAL=./e-VISUAL.sh &&\n'> <'\texport EDITOR VISUAL &&\n'> <'\tgit commit --amend &&\n'> <'\ttest "$(git show -s --format=%s)" = "Edited by EDITOR"\n'> <'\n'> ) } ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:TERM) op:Equal rhs:{(vt100)} spids:[208])] spids: [208] ) (C {(export)} {(TERM)}) (ForEach iter_name: i iter_words: [{($ VSub_Name '$vi')} {(EDITOR)} {(VISUAL)} {(core_editor)} {(GIT_EDITOR)}] do_arg_iter: False body: (DoGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ('Edited by ') ($ VSub_Name '$i'))}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[241])] ) (C {(unset)} {(EDITOR)} {(VISUAL)} {(GIT_EDITOR)}) (C {(git)} {(config)} {(--unset-all)} {(core.editor)}) (Case to_match: {(DQ ($ VSub_Name '$i'))} arms: [ (case_arm pat_list: [{(core_editor)}] action: [(C {(git)} {(config)} {(core.editor)} {(./e-core_editor.sh)})] spids: [272 273 285 -1] ) (case_arm pat_list: [{(Lit_Other '[') (A-Z) (Lit_Other ']') (Lit_Other '*')}] action: [ (C {(eval)} {(DQ ($ VSub_Name '$i') ('=./e-') ($ VSub_Name '$i') (.sh))}) (C {(export)} {($ VSub_Name '$i')}) ] spids: [288 292 310 -1] ) ] spids: [263 269 313] ) (C {(test_expect_success)} {(DQ ('Using ') ($ VSub_Name '$i'))} { (SQ <'\n'> <'\t\tgit --exec-path=. commit --amend &&\n'> <'\t\tgit show -s --pretty=oneline |\n'> <'\t\tsed -e "s/^[0-9a-f]* //" >actual &&\n'> <'\t\ttest_cmp actual expect\n'> <'\t'> ) } ) ] spids: [231 332] ) spids: [220 -1] ) (C {(unset)} {(EDITOR)} {(VISUAL)} {(GIT_EDITOR)}) (C {(git)} {(config)} {(--unset-all)} {(core.editor)}) (ForEach iter_name: i iter_words: [{($ VSub_Name '$vi')} {(EDITOR)} {(VISUAL)} {(core_editor)} {(GIT_EDITOR)}] do_arg_iter: False body: (DoGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ('Edited by ') ($ VSub_Name '$i'))}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[377])] ) (Case to_match: {(DQ ($ VSub_Name '$i'))} arms: [ (case_arm pat_list: [{(core_editor)}] action: [(C {(git)} {(config)} {(core.editor)} {(./e-core_editor.sh)})] spids: [390 391 403 -1] ) (case_arm pat_list: [{(Lit_Other '[') (A-Z) (Lit_Other ']') (Lit_Other '*')}] action: [ (C {(eval)} {(DQ ($ VSub_Name '$i') ('=./e-') ($ VSub_Name '$i') (.sh))}) (C {(export)} {($ VSub_Name '$i')}) ] spids: [406 410 428 -1] ) ] spids: [381 387 431] ) (C {(test_expect_success)} {(DQ ('Using ') ($ VSub_Name '$i') (' (override)'))} { (SQ <'\n'> <'\t\tgit --exec-path=. commit --amend &&\n'> <'\t\tgit show -s --pretty=oneline |\n'> <'\t\tsed -e "s/^[0-9a-f]* //" >actual &&\n'> <'\t\ttest_cmp actual expect\n'> <'\t'> ) } ) ] spids: [367 451] ) spids: [356 -1] ) (If arms: [ (if_arm cond: [ (SimpleCommand words: [{(echo)} {(SQ <'echo space > "$1"'>)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(DQ ('e space.sh'))} spids:[462])] ) ] action: [(C {(test_set_prereq)} {(SPACES_IN_FILENAMES)})] spids: [-1 468] ) ] spids: [-1 479] ) (C {(test_expect_success)} {(SPACES_IN_FILENAMES)} {(SQ <'editor with a space'>)} { (SQ <'\n'> <'\n'> <'\tchmod a+x "e space.sh" &&\n'> <'\tGIT_EDITOR="./e\\ space.sh" git commit --amend &&\n'> <'\ttest space = "$(git show -s --pretty=format:%s)"\n'> <'\n'> ) } ) (C {(unset)} {(GIT_EDITOR)}) (C {(test_expect_success)} {(SPACES_IN_FILENAMES)} {(SQ <'core.editor with a space'>)} { (SQ <'\n'> <'\n'> <'\tgit config core.editor \\"./e\\ space.sh\\" &&\n'> <'\tgit commit --amend &&\n'> <'\ttest space = "$(git show -s --pretty=format:%s)"\n'> <'\n'> ) } ) (C {(test_done)}) ] )