diff options
Diffstat (limited to 'NPTest.pm')
-rw-r--r-- | NPTest.pm | 53 |
1 files changed, 33 insertions, 20 deletions
@@ -44,23 +44,17 @@ default via the C<use NPTest;> statement. =over -=item C<getTestParameter(...)> +=item getTestParameter( "ENV_VARIABLE", $brief_description, $default ) -A flexible and user override-able method of collecting, storing and -retrieving test parameters. This function allows the test harness +This function allows the test harness developer to interactively request test parameter information from the -user, when the no means of obtaining the information automatically has -been successful. The user is provided with the option of accepting -test harness developer's default value for the parameter, if a suggested -default is provided. - -User supplied responses are stored in an external (file-based) -cache. These values are retrieved on subsequent runs alleviating the -user of reconfirming the previous entered responses. The user is able -to override the value of a parameter on any given run by setting the -associated environment variable. These environment variable based -overrides are not stored in the cache, allowing one-time and what-if -based tests on the command line without polluting the cache. +user. The user can accept the developer's default value or reply "none" +which will then be returned as "" for the test to skip if appropriate. + +Responses are stored in an external, file-based +cache so subsequent test runs will use these values. The user is able +to change the values by amending the values in the file /var/tmp/NPTest.pm, +or by setting the appropriate environment variable before running the test. The option exists to store parameters in a scoped means, allowing a test harness to a localise a parameter should the need arise. This @@ -73,7 +67,7 @@ called "check_disk.t" requesting the parameter "mountpoint_valid", the cache is first searched for "check_disk"/"mountpoint_valid", if this fails, then a search is conducted for "mountpoint_valid". -The facilitate quick testing setup, it is possible to accept all the +To facilitate quick testing setup, it is possible to accept all the developer provided defaults by setting the environment variable "NPTEST_ACCEPTDEFAULT" to "1" (or any other perl truth value). Note that, such defaults are not stored in the cache, as there is currently @@ -306,7 +300,16 @@ sub skipMissingCmd sub getTestParameter { - my( $param, $envvar, $default, $brief, $scoped ) = @_; + my( $param, $envvar, $default, $brief, $scoped ); + my $new_style; + if (scalar @_ == 3) { + ($param, $brief, $default) = @_; + $envvar = $param; + $new_style = 1; + } else { + ( $param, $envvar, $default, $brief, $scoped ) = @_; + $new_style = 0; + } # Apply default values for optional arguments $scoped = ( defined( $scoped ) && $scoped ); @@ -319,8 +322,13 @@ sub getTestParameter } my $cachedValue = SearchCache( $param, $testharness ); - if ( defined( $cachedValue ) && $cachedValue ) + if ( defined( $cachedValue ) ) { + # This save required to convert to new style because the key required is + # changing to the environment variable + if ($new_style == 0) { + SetCacheParameter( $envvar, undef, $cachedValue ); + } return $cachedValue; } @@ -339,9 +347,9 @@ sub getTestParameter print STDERR "\n"; print STDERR "Test Harness : $testharness\n"; print STDERR "Test Parameter : $param\n"; - print STDERR "Environment Variable : $envvar\n"; + print STDERR "Environment Variable : $envvar\n" if ($param ne $envvar); print STDERR "Brief Description : $brief\n"; - print STDERR "Enter value ", ($defaultValid ? "[${default}]" : "[]"), " => "; + print STDERR "Enter value (or 'none') ", ($defaultValid ? "[${default}]" : "[]"), " => "; $userResponse = <STDIN>; $userResponse = "" if ! defined( $userResponse ); # Handle EOF chomp( $userResponse ); @@ -353,6 +361,10 @@ sub getTestParameter print STDERR "\n"; + if ($userResponse =~ /^(na|none)$/) { + $userResponse = ""; + } + # define all user responses at global scope SetCacheParameter( $param, ( $scoped ? $testharness : undef ), $userResponse ); @@ -378,6 +390,7 @@ sub SearchCache { return $CACHE{$param}; } + return undef; # Need this to say "nothing found" } sub SetCacheParameter |