(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:srcdir) op: assign_op.Equal rhs: {<..>} spids: [79] ) ] ) (command.ShFunction name: merge_backslash body: (BraceGroup children: [ (C {<sed>} { (SQ <'\n'> <': again\n'> <'/\\\\$/ {\n'> <' N\n'> <' s/\\\\\\n//\n'> <' t again\n'> <'}\n'> ) } {(DQ ($ Id.VSub_Number '$1'))} ) ] ) ) (command.ShFunction name: run_and_check_prep body: (BraceGroup children: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'name='> (DQ (${ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (C {<mkdir>} {<-p>} {<compile>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:srcdir) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<atf_get_srcdir>}) ) ) } spids: [135] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ (${ Id.VSub_Name srcdir) <'/support'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:srcdir) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {(DQ (${ Id.VSub_Name srcdir))}) ) ) } spids: [164] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ (${ Id.VSub_Name srcdir) <'/support'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_fail>} {(DQ <'bad source directory '> (${ Id.VSub_Name srcdir))}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [178 196] ) ] ) ] spids: [143 161] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:supportdir) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name srcdir) <'/support'>)} spids: [220] ) ] ) (C {<local>} {<config_str>}) (C {<eval>} {<Id.Lit_VarLike 'config_str='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) (${ Id.VSub_Name name) <_config_str> } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$config_str'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:config) op: assign_op.Equal rhs: {(DQ <d_> (${ Id.VSub_Name name))} spids: [261] ) ] ) (command.Simple words: [{<printf>} {(DQ ($ Id.VSub_DollarName '$config_str'))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ (${ Id.VSub_Name config))} ) ] do_fork: T ) ] spids: [245 258] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:config) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name srcdir) <'/d_'> (${ Id.VSub_Name name))} spids: [287] ) ] ) ] ) ] ) ) (command.ShFunction name: run_and_check_pass body: (BraceGroup children: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'name='> (DQ (${ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (C {<run_and_check_prep>} {(DQ (${ Id.VSub_Name name))}) (C {<atf_check>} {<-o>} {<ignore>} {<-s>} {<eq> <Id.Lit_Colon ':'> <0>} {<config>} {<-s>} {(DQ (${ Id.VSub_Name supportdir))} {<-b>} {(DQ <'compile/'> (${ Id.VSub_Name name))} {(DQ (${ Id.VSub_Name config))} ) ] ) ) (command.ShFunction name: run_and_check_warn body: (BraceGroup children: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'name='> (DQ (${ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (C {<run_and_check_prep>} {(DQ (${ Id.VSub_Name name))}) (C {<local>} {<stderr>}) (C {<eval>} {<Id.Lit_VarLike 'stderr='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) (${ Id.VSub_Name name) <_stderr> } ) (C {<atf_check>} {<-o>} {<ignore>} {<-e>} {(DQ (${ Id.VSub_Name stderr))} {<-s>} {<eq> <Id.Lit_Colon ':'> <0>} {<config>} {<-s>} {(DQ (${ Id.VSub_Name supportdir))} {<-b>} {(DQ <'compile/'> (${ Id.VSub_Name name))} {(DQ (${ Id.VSub_Name config))} ) ] ) ) (command.ShFunction name: run_and_check_fail body: (BraceGroup children: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'name='> (DQ (${ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (C {<run_and_check_prep>} {(DQ (${ Id.VSub_Name name))}) (C {<atf_check>} {<-o>} {<ignore>} {<-e>} {<ignore>} {<-s>} {<ne> <Id.Lit_Colon ':'> <0>} {<config>} {<-s>} {(DQ (${ Id.VSub_Name supportdir))} {<-b>} {(DQ <'compile/'> (${ Id.VSub_Name name))} {(DQ (${ Id.VSub_Name config))} ) ] ) ) (command.ShFunction name: test_output body: (BraceGroup children: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'name='> (DQ (${ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (C {<local>} {<Id.Lit_VarLike 'res='> <1>}) (C {<run_and_check_prep>} {(DQ (${ Id.VSub_Name name))}) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [ {<config>} {<-s>} {(DQ (${ Id.VSub_Name supportdir))} {<-b>} {<'compile/'> (DQ (${ Id.VSub_Name name))} {(DQ (${ Id.VSub_Name config))} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<cd>} {<'compile/'> (DQ (${ Id.VSub_Name name))}) (C {<check_> (${ Id.VSub_Name name)}) (C {<cd>} {($ Id.VSub_DollarName '$OLDPWD')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:res) op: assign_op.Equal rhs: {<0>} spids: [645] ) ] ) ] ) (C {<atf_check>} {<test>} {($ Id.VSub_DollarName '$res')} {<-eq>} {<0>}) ] ) ) (command.ShFunction name: test_case body: (BraceGroup children: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'name='> (DQ (${ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'type='> (DQ (${ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (C {<local>} {<Id.Lit_VarLike 'descr='> (DQ (${ Id.VSub_Star '*'))}) (C {<atf_test_case>} {(DQ (${ Id.VSub_Name name))}) (C {<eval>} { (DQ (${ Id.VSub_Name name) <'_head() { '> <'\t\tatf_set descr '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name descr) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'; '> <'\t\tatf_set require.progs '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <config> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'; '> <'\t}'> ) } ) (C {<eval>} { (DQ (${ Id.VSub_Name name) <'_body() { '> <'\t\trun_and_check_'> (${ Id.VSub_Name type) <' \''> (${ Id.VSub_Name name) <'\'; '> <'\t}'> ) } ) ] ) ) (C {<test_case>} {<shadow_instance>} {<pass>} {(DQ <'Checks correct handling of shadowed instances'>)}) (C {<test_case>} {<loop>} {<pass>} {(DQ <'Checks correct handling of loops'>)}) (C {<test_case>} {<loop2>} {<pass>} {(DQ <'Checks correct handling of devices that can be their'>)} {(DQ <'own parents'>)} ) (C {<test_case>} {<pseudo_parent>} {<pass>} {(DQ <'Checks correct handling of children of pseudo'>)} {(DQ <'devices (PR/32329)'>)} ) (C {<test_case>} {<postponed_orphan>} {<fail>} {(DQ <'Checks that config catches adding an'>)} {(DQ <'instance of a child of a negated instance as error'>)} ) (C {<test_case>} {<no_pseudo>} {<fail>} {(DQ <'Checks that config catches ommited \'pseudo-device\''>)} {(DQ <'as error (PR/34111)'>)} ) (C {<test_case>} {<deffs_redef>} {<fail>} {(DQ <'Checks that config doesn\'t allow a deffs to use'>)} {(DQ <'the same name as a previous defflag/defparam'>)} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:undefined_opt_config_str) op: assign_op.Equal rhs: { (DQ <'\n'> <'include '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name srcdir) <'/d_min'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'options UNDEFINED\n'> ) } spids: [873] ) ] ) (C {<test_case>} {<undefined_opt>} {<pass>} {(DQ <'Checks that config allows a selection for an undefined options'>)} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:no_undefined_opt_config_str) op: assign_op.Equal rhs: { (DQ <'\n'> <'include '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name srcdir) <'/d_min'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'no options UNDEFINED\n'> ) } spids: [903] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:no_undefined_opt_stderr) op: assign_op.Equal rhs: {(SQ <'match:UNDEFINED'>)} spids: [917] ) ] ) (C {<test_case>} {<no_undefined_opt>} {<warn>} {(DQ <'Checks that config allows a negation for an undefined options'>)} ) (C {<test_case>} {<select>} {<pass>} {(DQ <'Attribute selection'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:select_config_str) op: assign_op.Equal rhs: { (DQ <'\n'> <'include '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name srcdir) <'/d_min'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'select c\n'> ) } spids: [948] ) ] ) (command.ShFunction name: check_select body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'f='> <Makefile>}) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {<grep>} {<-q>} {(SQ <'^\ta\\.c '>)} {($ Id.VSub_DollarName '$f')}) (C {<grep>} {<-q>} {(SQ <'^\tb\\.c '>)} {($ Id.VSub_DollarName '$f')}) (C {<grep>} {<-q>} {(SQ <'^\tc\\.c '>)} {($ Id.VSub_DollarName '$f')}) (C {<Id.Lit_Colon ':'>}) ] ) ] ) ) (command.ShFunction name: select_body body: (BraceGroup children:[(C {<test_output>} {<select>})]) ) (C {<test_case>} {<no_select>} {<pass>} {(DQ <'Attribute negation'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:no_select_config_str) op: assign_op.Equal rhs: { (DQ <'\n'> <'include '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name srcdir) <'/d_min'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'select c\n'> <'no select a\n'> ) } spids: [1046] ) ] ) (command.ShFunction name: check_no_select body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'f='> <Makefile>}) (command.Simple words: [{<Id.Lit_Colon ':'>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<tmp>})] do_fork: T ) (command.Simple words: [{<grep>} {<-q>} {(SQ <'^a\\.o:'>)} {($ Id.VSub_DollarName '$f')}] redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<tmp>})] do_fork: T ) (command.Simple words: [{<grep>} {<-q>} {(SQ <'^b\\.o:'>)} {($ Id.VSub_DollarName '$f')}] redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<tmp>})] do_fork: T ) (command.Simple words: [{<grep>} {<-q>} {(SQ <'^c\\.o:'>)} {($ Id.VSub_DollarName '$f')}] redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<tmp>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-s>} {<tmp>} {<Id.Lit_RBracket ']'>}) (C {<Id.Lit_Colon ':'>}) ] ) ] ) ) (command.ShFunction name: no_select_body body: (BraceGroup children:[(C {<test_output>} {<no_select>})]) ) (C {<test_case>} {<devi>} {<pass>} {(DQ <'Device instance'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:devi_config_str) op: assign_op.Equal rhs: { (DQ <'\n'> <'include '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name srcdir) <'/d_min'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'d0 at root\n'> ) } spids: [1168] ) ] ) (command.ShFunction name: check_devi body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'f='> <ioconf.c>}) (command.Simple words: [ {<sed>} {<-ne>} {(SQ <'/^struct cfdriver \\* const cfdriver_list_initial\\[\\]/,/^};/p'>)} {($ Id.VSub_DollarName '$f')} ] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<tmp.cfdriver>})] do_fork: T ) (command.Simple words: [ {<sed>} {<-ne>} {(SQ <'/^struct cfdata cfdata\\[\\]/,/^};/p'>)} {($ Id.VSub_DollarName '$f')} ] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<tmp.cfdata>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {<grep>} {<-q>} {(SQ <'^CFDRIVER_DECL(d, '>)} {($ Id.VSub_DollarName '$f')}) (C {<grep>} {<-q>} {(SQ <'&d_cd,'>)} {<tmp.cfdriver>}) (C {<grep>} {<-q>} {(SQ <'^extern struct cfattach d_ca;$'>)} {($ Id.VSub_DollarName '$f')} ) (C {<grep>} {<-q>} {(SQ <'^static const struct cfiattrdata \\* const d_attrs\\[\\]'>)} {($ Id.VSub_DollarName '$f')} ) (C {<grep>} {<-q>} {(SQ <'^static const struct cfiattrdata icf_iattrdata'>)} {($ Id.VSub_DollarName '$f')} ) (C {<grep>} {<-q>} {(SQ <'{ "d",'>)} {<tmp.cfdata>}) (C {<Id.Lit_Colon ':'>}) ] ) ] ) ) (command.ShFunction name:devi_body body:(BraceGroup children:[(C {<test_output>} {<devi>})])) (C {<test_case>} {<min>} {<pass>} {(DQ <'Minimal config'>)}) (command.ShFunction name: check_min_files body: (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 ] children: [ (C {<test>} {<-e>} {<Makefile>}) (C {<test>} {<-e>} {<config_file.h>}) (C {<test>} {<-e>} {<config_time.src>}) (C {<test>} {<-e>} {<ioconf.c>}) (C {<test>} {<-e>} {<ioconf.h>}) (C {<test>} {<-e>} {<locators.h>}) (C {<test>} {<-e>} {<swapregress.c>}) (C {<test>} {<-h>} {<machine>}) (C {<test>} {<-h>} {<regress>}) (C {<Id.Lit_Colon ':'>}) ] ) ] ) ) (command.ShFunction name: check_min_makefile body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'f='> <Makefile>}) (command.Simple words: [{<grep>} {<-q>} {(SQ <'^%'>)} {($ Id.VSub_DollarName '$f')}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<tmp.template>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {<grep>} {<-q>} {(SQ <'^MACHINE=regress$'>)} {($ Id.VSub_DollarName '$f')}) (command.Subshell child: (command.Pipeline children: [ (C {<merge_backslash>} {($ Id.VSub_DollarName '$f')}) (C {<grep>} {<-q>} {(SQ <'^IDENT=[ \t]*-DMAXUSERS="4"'>)}) ] negated: F ) ) (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-s>} {<tmp.template>} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_Colon ':'>}) ] ) ] ) ) (command.ShFunction name: check_min body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [(C {<check_min_files>}) (C {<check_min_makefile>}) (C {<Id.Lit_Colon ':'>})] ) ] ) ) (command.ShFunction name:min_body body:(BraceGroup children:[(C {<test_output>} {<min>})])) (command.ShFunction name: atf_init_test_cases body: (BraceGroup children: [ (C {<atf_add_test_case>} {<shadow_instance>}) (C {<atf_add_test_case>} {<loop>}) (C {<atf_add_test_case>} {<loop2>}) (C {<atf_add_test_case>} {<pseudo_parent>}) (C {<atf_add_test_case>} {<postponed_orphan>}) (C {<atf_add_test_case>} {<no_pseudo>}) (C {<atf_add_test_case>} {<deffs_redef>}) (C {<atf_add_test_case>} {<undefined_opt>}) (C {<atf_add_test_case>} {<no_undefined_opt>}) (C {<atf_add_test_case>} {<select>}) (C {<atf_add_test_case>} {<no_select>}) (C {<atf_add_test_case>} {<devi>}) (C {<atf_add_test_case>} {<min>}) ] ) ) ] )