Apropos of my previous post: attached is a small file which describes the various prompts posed in the 'inter::' configuration steps. On the basis of the file's contents, I suspect it would not be difficult to put them all into a method which, if the --ask option were specified, would be called within Configure.pl after command-line options have been processed but before Parrot::Configure::runstep() has executed. This would mean that all user-supplied data needed for configuration would be available before runsteps() and that we could write tests which supply each individual step's runstep() method with all the data the user wants/needs it to have.
config/inter/charset.pm:54: $charset_list = prompt( prompt supplies list of available charsets from glob "./src/charset/*.c"
config/inter/encoding.pm:54: $encoding_list = prompt( prompt supplies list of available encodings from glob "./src/encodings/*.c" config/inter/lex.pm:44: my $prompt = "Do you have a lexical analyzer generator like flex or lex?"; config/inter/lex.pm:82: $prog = prompt( $prompt, $prog ? $prog : $conf->data->get($util) ); prompt supplies list 'flex lex' config/inter/libparrot.pm:50: $parrot_is_shared = prompt( prompt offers y/n config/inter/make.pm:35: my $prompt = "Do you have a make utility like 'gmake' or 'make'?"; config/inter/make.pm:52: ? prompt( $prompt, $prog ? $prog : $conf->data->get($util) ) prompt offers first available from 'gmake', 'mingw32-make', 'nmake', 'make' config/inter/progs.pm:61: $cc = prompt( "What C compiler do you want to use?", $cc ) prompt offers dominant of %Config and options config/inter/progs.pm:66: $link = prompt( "How about your linker?", $link ) if $ask; prompt offers dominant of %Config and options config/inter/progs.pm:70: $ld = prompt( "What program do you want to use to build shared libraries?", $ld ) if $ask; prompt offers dominant of %Config and options config/inter/progs.pm:79: $ccflags = prompt( "What flags should your C compiler receive?", $ccflags ) prompt from %Config is cleaned up before presentation to user config/inter/progs.pm:88: $linkflags = prompt( "And your linker?", $linkflags ) if $ask; prompt from %Config is cleaned up before presentation to user config/inter/progs.pm:94: $ldflags = prompt( "And your $ld for building shared libraries?", $ldflags ) prompt from %Config is cleaned up before presentation to user config/inter/progs.pm:102: $libs = prompt( "What libraries should your C compiler use?", $libs ) if $ask; prompt from %Config is cleaned up before presentation to user config/inter/progs.pm:106: $cxx = prompt( "What C++ compiler do you want to use?", $cxx ) if $ask; prompt offers dominant of %Config and options config/inter/progs.pm:111: $debug = prompt( "Do you want a debugging build of Parrot?", $debug ) prompt is y/n depending on whether --debugging option was selected config/inter/shlibs.pm:43: $cc_shared = prompt( prompt offers dominant of %Config and options config/inter/types.pm:42: $intval = prompt( "\n\nHow big would you like your integers to be?", $intval ); prompt offers choice of option and 'long' config/inter/types.pm:43: $floatval = prompt( "And your floats?", $floatval ); prompt offers choice of option and 'double' config/inter/types.pm:44: $opcode = prompt( "What's your native opcode type?", $opcode ); prompt offers choice of option and 'long' config/inter/yacc.pm:44: my $prompt = "Do you have a parser generator, like bison or yacc?"; config/inter/yacc.pm:84: $prog = prompt( $prompt, $prog ? $prog : $conf->data->get($util) ); prompt offers choice from list: 'bison -v -y', 'yacc', 'byacc'