(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'stash apply can handle submodules' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-submodule-update.sh)}) (command.ShFunction name: git_stash body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [{(git)} {(status)} {(-su)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:36) fd: -1 arg_word: {(expect)} ) ] ) (command.Simple words: [{(ls)} {(-1pR)} {(Id.Lit_Star '*')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:48) fd: -1 arg_word: {(expect)} ) ] ) (C {(git)} {(read-tree)} {(-u)} {(-m)} {(DQ ($ Id.VSub_Number '$1'))}) (C {(git)} {(stash)}) (command.Simple words: [{(git)} {(status)} {(-su)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:82) fd: -1 arg_word: {(actual)} ) ] ) (command.Simple words: [{(ls)} {(-1pR)} {(Id.Lit_Star '*')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:94) fd: -1 arg_word: {(actual)} ) ] ) (C {(test_cmp)} {(expect)} {(actual)}) (C {(git)} {(stash)} {(apply)}) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KNOWN_FAILURE_STASH_DOES_IGNORE_SUBMODULE_CHANGES) op: assign_op.Equal rhs: {(1)} spids: [118] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT) op: assign_op.Equal rhs: {(1)} spids: [121] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR) op: assign_op.Equal rhs: {(1)} spids: [124] ) ] ) (C {(test_submodule_switch)} {(DQ (git_stash))}) (C {(test_done)}) ] )