summaryrefslogtreecommitdiffstats
path: root/tools/run_tests.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/run_tests.pl')
-rw-r--r--tools/run_tests.pl90
1 files changed, 90 insertions, 0 deletions
diff --git a/tools/run_tests.pl b/tools/run_tests.pl
new file mode 100644
index 00000000..c0a34cd1
--- /dev/null
+++ b/tools/run_tests.pl
@@ -0,0 +1,90 @@
+use Cwd;
+use Cwd 'abs_path';
+use File::Basename;
+use File::Copy;
+use feature "switch";
+use lib 'tools';
+use Jobs;
+
+# read command line params
+my $jobname = shift;
+
+# read ini file
+my $inifile = File::Basename::dirname($0) . "/jobs.ini";
+my %job = Jobs::get($inifile, $jobname);
+
+# set/get paths
+my $root_path = abs_path();
+my $bin_path = "$root_path/bin/";
+my $reports_path = "test-reports";
+
+# create reports path
+mkdir $reports_path;
+
+# setup environment for running tests
+given ($job{'Platform'}) {
+
+ when ("Win7") {
+ # Add qtdir to path
+ $ENV{'PATH'} .= ";" . $job{'QtDir'} . "\\bin";
+
+ # replace / -> \
+ $ENV{'PATH'} =~ s/\//\\/g;
+ }
+
+ when ("Linux") {
+ # Add qtdir to path
+ $ENV{'PATH'} = $job{'QtDir'} . "/bin:" . $ENV{'PATH'};
+
+ # If this is not set we get "cannot connect to X server" errors
+ $ENV{'DISPLAY'} = ":0.0";
+ }
+}
+
+# Go through all the files in the test folder
+# autotest is an executable beginning with "tst_"
+my $script_exit_status = 0;
+opendir (TESTAPPDIR, "$bin_path") or die "Couldn't open test app dir";
+@files = <TESTAPPDIR>;
+while ($testapp = readdir TESTAPPDIR) {
+ if (index($testapp, "tst_") == 0) {
+ if (-x "$bin_path$testapp") {
+ my $status = executeTestApp($testapp);
+ if ($status != 0) {
+ $script_exit_status = $status;
+ }
+ } else {
+ #print "file $testapp not executable\n";
+ }
+ }
+}
+closedir TESTAPPDIR;
+
+print "\n*** script exit status : $script_exit_status ***\n\n";
+exit($script_exit_status);
+
+
+sub executeTestApp($) {
+ my $testapp = $_[0];
+
+ # On OSX the actual test binary is in a sub folder
+ my $cmd_postfix = "";
+ if ($^O eq "darwin") {
+ $cmd_postfix = "/Contents/MacOS/$testapp";
+ $cmd_postfix = substr($cmd_postfix, 0, rindex($cmd_postfix, ".app"));
+ }
+
+ my $cmd = "$bin_path$testapp$cmd_postfix -xunitxml -o $reports_path/$testapp.xml";
+ print "executing: $cmd\n";
+ system($cmd);
+
+ # From http://perldoc.perl.org/perlvar.html about $?:
+ # The upper eight bits reflect specific error conditions encountered by the
+ # program (the program's exit() value). The lower eight bits reflect
+ # mode of failure, like signal death and core dump information.
+ # See wait(2) for details.
+ my $exit_status = $? >> 8;
+ print "\texit status: $exit_status\n";
+
+ return $exit_status;
+}