Android: Check XML output and optionally stop on fail.
The failures will be printed in red color. Use -f param to stop on fail. Change-Id: Ife58f9264a9ac859d739842c6d1359acde807ce7 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
This commit is contained in:
parent
16c32c6dfb
commit
af32727362
@ -40,6 +40,8 @@ use File::Temp 'tempdir';
|
||||
use File::Path 'remove_tree';
|
||||
use Getopt::Long;
|
||||
use Pod::Usage;
|
||||
use XML::Simple;
|
||||
use Term::ANSIColor;
|
||||
|
||||
### default options
|
||||
my @stack = cwd;
|
||||
@ -53,6 +55,7 @@ my $testsubset = "";
|
||||
my $man = 0;
|
||||
my $help = 0;
|
||||
my $make_clean = 0;
|
||||
my $stop_on_fail = 0;
|
||||
my $time_out=400;
|
||||
my $android_toolchain_version = "4.8";
|
||||
my $host_arch = "linux-x86";
|
||||
@ -89,6 +92,7 @@ GetOptions('h|help' => \$help
|
||||
, 'strip=s' => \$strip_tool
|
||||
, 'readelf=s' => \$readelf_tool
|
||||
, 'testcase=s' => \$testcase
|
||||
, 'f|fail' => sub { $stop_on_fail = 1 }
|
||||
, 'silent' => sub { $silent = 1 }
|
||||
, 'ci' => sub { $ci_use = 1 }
|
||||
, 'uninstall' => sub { $uninstall = 1 }
|
||||
@ -311,6 +315,37 @@ if ($output =~ m/.*\[ro.build.version.sdk\]: \[(\d+)\]/)
|
||||
$sdk_api=9 if ($sdk_api>9);
|
||||
}
|
||||
|
||||
sub checkXMLOutput
|
||||
{
|
||||
print color 'bold red';
|
||||
my $fileName = shift;
|
||||
my $XMLOutput = eval { XMLin($fileName, ForceArray => 1) };
|
||||
if (!defined($XMLOutput)) {
|
||||
print "Can't parse the $fileName file, probably the test crased.\n";
|
||||
print color 'reset';
|
||||
die "Stopping\n" if $stop_on_fail;
|
||||
return;
|
||||
}
|
||||
my $testName = $XMLOutput->{name};
|
||||
my $fail = 0;
|
||||
while (my($node_key, $node_valule) = each (%{$XMLOutput})) {
|
||||
next if $node_key ne "TestFunction";
|
||||
while (my($function_key, $function_valule) = each (%{$node_valule})) {
|
||||
while (my($test_key, $test_valule) = each (%{$function_valule})) {
|
||||
next if $test_key ne "Incident";
|
||||
for my $incident (@{$test_valule}) {
|
||||
if ($incident->{type} ne "pass") {
|
||||
print "test $testName::$function_key failed $incident->{file}:$incident->{line}\n";
|
||||
$fail = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
print color 'reset';
|
||||
die "Stopping\n" if $stop_on_fail and $fail;
|
||||
}
|
||||
|
||||
sub startTest
|
||||
{
|
||||
my $testName = shift;
|
||||
@ -352,6 +387,7 @@ sub startTest
|
||||
sleep(3);
|
||||
|
||||
system("$adb_tool $device_serial pull /data/data/$packageName/output.xml $output_dir/$output_file.xml") if ($get_xml);
|
||||
|
||||
system("$adb_tool $device_serial pull /data/data/$packageName/output.txt $output_dir/$output_file.txt") if ($get_txt);
|
||||
if ($get_txt){
|
||||
print "Tesresults for $packageName:\n";
|
||||
@ -359,6 +395,8 @@ sub startTest
|
||||
print_output("$output_dir/$output_file.txt", $packageName, $insignificance);
|
||||
}
|
||||
system("$adb_tool $device_serial uninstall $packageName") if ($uninstall);
|
||||
|
||||
checkXMLOutput("$output_dir/$output_file.xml") if ($get_xml);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -439,6 +477,9 @@ runtests.pl [options]
|
||||
=head1 OPTIONS
|
||||
|
||||
=over 8
|
||||
=item B<-f --fail>
|
||||
|
||||
Stop the script when test fails. Default 0
|
||||
|
||||
=item B<-s --serial = serial>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user