(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'rumpsrv='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rumpsrv='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rumpsrv='> name:rumpsrv) op: assign_op.Equal rhs: {(SQ <'rump_server -lrumpvfs'>)} ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> <unix> <Id.Lit_Colon ':'> <'//csock'>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'exout='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exout='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exout='> name:exout) op: assign_op.Equal rhs: {(DQ <'this is the output you are looking for'>)} ) ] redirects: [] ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<runscript>} {<cleanup>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <runscript_head> name: runscript_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(DQ <'can run /bin/sh scripts from rumpfs'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <runscript_body> name: runscript_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {(${ Id.VSub_Name rumpsrv)} {(${ Id.VSub_Name RUMP_SERVER)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'echo '> ($ Id.VSub_DollarName exout))}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<thescript>})] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<mv>} {<thescript>} {<'/rump'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (DQ (${ Id.VSub_Name exout) <Id.Lit_BadBackslash '\\'> <n>) } {<-x>} {<sh>} {<'/rump/thescript'>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <runscript_cleanup> name: runscript_cleanup body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <rump.halt> more_env: [] words: [{<rump.halt>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<redirect>} {<cleanup>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <redirect_head> name: redirect_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'input/output redirection works with rumphijack'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <redirect_body> name: redirect_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {(${ Id.VSub_Name rumpsrv)} {(${ Id.VSub_Name RUMP_SERVER)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'echo '> ($ Id.VSub_DollarName exout) <' > /rump/thefile'>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<thescript>})] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-x>} {<sh>} {<thescript>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (DQ (${ Id.VSub_Name exout) <Id.Lit_BadBackslash '\\'> <n>) } {<cat>} {<'/rump/thefile'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'cat < /rump/thefile'>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<thescript>})] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (DQ (${ Id.VSub_Name exout) <Id.Lit_BadBackslash '\\'> <n>) } {<-x>} {<sh>} {<thescript>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <redirect_cleanup> name: redirect_cleanup body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <rump.halt> more_env: [] words: [{<rump.halt>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <atf_init_test_cases> name: atf_init_test_cases body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<runscript>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<redirect>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] )