(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'compare address parsing with and without Mail::Address'>)} spids: [4] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children:[(C {<test_have_prereq>} {<PERL>})] negated:T) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip_all) op: assign_op.Equal rhs: {(SQ <'skipping perl interface tests, perl not available'>)} spids: [26] ) ] ) (C {<test_done>}) ] spids: [14 23] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{<perl>} {<-MTest> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <More>} {<-e>} {<0>}] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip_all) op: assign_op.Equal rhs: {(DQ <'Perl Test::More unavailable, skipping test'>)} spids: [56] ) ] ) (C {<test_done>}) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{<perl>} {<-MMail> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Address>} {<-e>} {<0>}] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip_all) op: assign_op.Equal rhs: {(DQ <'Perl Mail::Address unavailable, skipping test'>)} spids: [86] ) ] ) (C {<test_done>}) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_external_has_tap) op: assign_op.Equal rhs: {<1>} spids: [97] ) ] ) (C {<test_external_without_stderr>} {(SQ <'Perl address parsing function'>)} {<perl>} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) <'/t9000/test.pl'>} ) (C {<test_done>}) ] )