|
|
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/" . $job{'Config'} . "/";
|
|
|
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";
|
|
|
}
|
|
|
|
|
|
when ("Mac") {
|
|
|
# Set QML_IMPORT_PATH point to QML plugin dir
|
|
|
$ENV{'QML_IMPORT_PATH'} = $bin_path;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
# 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;
|
|
|
|
|
|
# Do not return error codes for bamboo.
|
|
|
# Bamboo will determine test failures by parsing the xml logs.
|
|
|
exit(0);
|
|
|
|
|
|
|
|
|
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;
|
|
|
}
|
|
|
|