(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'revert can handle submodules'>)} spids: [4] ) ] ) (C {<.>} {<./test-lib.sh>}) (C {<.>} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) </lib-submodule-update.sh>}) (command.ShFunction name: git_revert 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 Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp ] children: [ (command.Simple words: [{<git>} {<status>} {<-su>}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<expect>})] ) (command.Simple words: [{<ls>} {<-1pR>} {<Id.Lit_Star '*'>}] redirects: [(redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{<expect>})] ) (C {<tar>} {<cf>} {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') </tmp.tar>)} {<Id.Lit_Star '*'>} ) (C {<git>} {<checkout>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<git>} {<revert>} {<HEAD>}) (C {<rm>} {<-rf>} {<Id.Lit_Star '*'>}) (C {<tar>} {<xf>} {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') </tmp.tar>)}) (command.Simple words: [{<git>} {<status>} {<-su>}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<actual>})] ) (command.Simple words: [{<ls>} {<-1pR>} {<Id.Lit_Star '*'>}] redirects: [(redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{<actual>})] ) (C {<test_cmp>} {<expect>} {<actual>}) (C {<git>} {<revert>} {<HEAD>}) ] ) ] ) ) (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: [169] ) ] ) (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: [172] ) ] ) (C {<test_submodule_switch>} {(DQ <git_revert>)}) (C {<test_done>}) ] )