runtest: allow passing a sub directory to search in.
Resolves #134
diff --git a/regress/CMakeLists.txt b/regress/CMakeLists.txt
index d301c0b..47c25d8 100644
--- a/regress/CMakeLists.txt
+++ b/regress/CMakeLists.txt
@@ -209,7 +209,7 @@
string(REPLACE ";" "\\;" path "${path}")
FOREACH(CASE ${EXTRA_TESTS})
- ADD_TEST(NAME ${CASE} COMMAND perl ${CMAKE_CURRENT_BINARY_DIR}/runtest ${CMAKE_CURRENT_SOURCE_DIR}/${CASE})
+ ADD_TEST(NAME ${CASE} COMMAND perl ${CMAKE_CURRENT_BINARY_DIR}/runtest --bin-sub-directory $<CONFIG> ${CMAKE_CURRENT_SOURCE_DIR}/${CASE})
SET_TESTS_PROPERTIES(${CASE} PROPERTIES SKIP_RETURN_CODE 77)
SET_TESTS_PROPERTIES(${CASE} PROPERTIES ENVIRONMENT "PATH=${path}")
ENDFOREACH()
diff --git a/regress/NiHTest.pm b/regress/NiHTest.pm
index 2fce7f4..66c2f0c 100644
--- a/regress/NiHTest.pm
+++ b/regress/NiHTest.pm
@@ -420,6 +420,7 @@
@ARGV = @argv;
my $ok = GetOptions(
'help|h' => \my $help,
+ 'bin-sub-directory=s' => \$self->{bin_sub_directory},
'keep-broken|k' => \$self->{keep_broken},
'no-cleanup' => \$self->{no_cleanup},
# 'run-gdb' => \$self->{run_gdb},
@@ -430,7 +431,7 @@
@ARGV = @save_argv;
if (!$ok || scalar(@argv) != 1 || $help) {
- print STDERR "Usage: $0 [-hv] [--keep-broken] [--no-cleanup] [--setup-only] testcase\n";
+ print STDERR "Usage: $0 [-hv] [--bin-sub-directory DIR] [--keep-broken] [--no-cleanup] [--setup-only] testcase\n";
exit(1);
}
@@ -601,7 +602,7 @@
while (scalar(@dirs) > 0) {
my $dir = shift @dirs;
-
+
opendir($ls, $dir);
unless ($ls) {
# TODO: handle error
@@ -611,7 +612,7 @@
if ($dir eq '.') {
$file = $entry;
}
-
+
if (-f $file) {
push @files, "$file";
}
@@ -1138,13 +1139,18 @@
sub find_program() {
- my ($self, $pname) = @_;
+ my ($self, $pname) = @_;
- for my $up (('.', '..', '../..', '../../..', '../../../..')) {
+ my @directories = (".");
+ if ($self->{bin_sub_directory}) {
+ push @directories, $self->{bin_sub_directory};
+ }
+
+ for my $up (('.', '..', '../..', '../../..')) {
for my $sub (('.', 'src')) {
- for my $conf (('.', 'Debug', 'Release', 'Relwithdebinfo', 'Minsizerel')) {
+ for my $dir (@directories) {
for my $ext (('', '.exe')) {
- my $f = "$up/$sub/$conf/$pname$ext";
+ my $f = "$up/$sub/$dir/$pname$ext";
return $f if (-f $f);
}
}