(command.CommandList children: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-euo>} {<pipefail>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'THIS_DIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'THIS_DIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'THIS_DIR='> name:THIS_DIR) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <dirname> more_env: [] words: [ {<dirname>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <readlink> more_env: [] words: [ {<readlink>} {<-f>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name BASH_SOURCE> var_name: BASH_SOURCE bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(DQ ($ Id.VSub_DollarName THIS_DIR))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <'../shell/test-packages.sh'> more_env: [] words: [{<'../shell/test-packages.sh'>} {<-f>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [ {<export>} {<Id.Lit_VarLike 'SANDSTORM_DIR='> (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name SANDSTORM_DIR> var_name: SANDSTORM_DIR suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<Id.Lit_Slash '/'> <opt> <Id.Lit_Slash '/'> <sandstorm>} ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-e>} {<'assets/ssjekyll5.spk'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <curl> more_env: [] words: [{<curl>} {<https> <Id.Lit_Colon ':'> <'//sandstorm.io/apps/ssjekyll5.spk'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'assets/ssjekyll5.spk'>} ) ] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-e>} {<'assets/ssjekyll6.spk'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <curl> more_env: [] words: [{<curl>} {<https> <Id.Lit_Colon ':'> <'//sandstorm.io/apps/ssjekyll6.spk'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'assets/ssjekyll6.spk'>} ) ] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-e>} {<'assets/ssjekyll7.spk'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <curl> more_env: [] words: [{<curl>} {<https> <Id.Lit_Colon ':'> <'//sandstorm.io/apps/ssjekyll7.spk'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'assets/ssjekyll7.spk'>} ) ] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TESTCASE> var_name: TESTCASE suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty)) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<TESTFILE>} {<TESTNAME>}] redirects: [ (Redir op: <Id.Redir_TLess '<<<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName TESTCASE))} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName TESTNAME))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NIGHTWATCH_PARAMS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NIGHTWATCH_PARAMS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NIGHTWATCH_PARAMS='> name: NIGHTWATCH_PARAMS ) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [{<-t>} {($ Id.VSub_DollarName TESTFILE)}] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) ] spids: [209 222] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NIGHTWATCH_PARAMS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NIGHTWATCH_PARAMS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NIGHTWATCH_PARAMS='> name: NIGHTWATCH_PARAMS ) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [ {<-t>} {($ Id.VSub_DollarName TESTFILE)} {<--testcase>} {(DQ ($ Id.VSub_DollarName TESTNAME))} ] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SKIP_UNITTESTS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SKIP_UNITTESTS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SKIP_UNITTESTS='> name:SKIP_UNITTESTS) op: assign_op.Equal rhs: {<true>} ) ] redirects: [] ) ] spids: [163 181] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name LAUNCH_URL> var_name: LAUNCH_URL suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty)) right: <Id.Right_DollarBrace '}'> ) ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name SKIP_UNITTESTS> var_name: SKIP_UNITTESTS suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty)) right: <Id.Right_DollarBrace '}'> ) ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <nightwatch> more_env: [] words: [ {<nightwatch>} {<-e>} {<unittests>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name NIGHTWATCH_PARAMS> var_name: NIGHTWATCH_PARAMS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty)) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) ] spids: [278 294] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <nightwatch> more_env: [] words: [ {<nightwatch>} {<-e>} {<default>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name NIGHTWATCH_PARAMS> var_name: NIGHTWATCH_PARAMS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty)) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) ] spids: [259 275] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (DQ <'s|.*launch_url.*|'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <launch_url> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' : '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName LAUNCH_URL) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <',|g'> ) } {<nightwatch.json>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<nightwatch.tmp.json>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name SKIP_UNITTESTS> var_name: SKIP_UNITTESTS suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty)) right: <Id.Right_DollarBrace '}'> ) ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <nightwatch> more_env: [] words: [ {<nightwatch>} {<-e>} {<unittests>} {<-c>} {<'./nightwatch.tmp.json'>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name NIGHTWATCH_PARAMS> var_name: NIGHTWATCH_PARAMS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty)) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) ] spids: [357 373] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <nightwatch> more_env: [] words: [ {<nightwatch>} {<-e>} {<default>} {<-c>} {<'./nightwatch.tmp.json'>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name NIGHTWATCH_PARAMS> var_name: NIGHTWATCH_PARAMS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty)) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] )