Francois Gouget : testbot/TestWTBS: Allow restricting the range of jobs to check.
Alexandre Julliard
julliard at winehq.org
Wed Jan 20 16:57:47 CST 2021
Module: tools
Branch: master
Commit: a693b1d7751c5a40e7008137937c188b7e4e33f9
URL: https://source.winehq.org/git/tools.git/?a=commit;h=a693b1d7751c5a40e7008137937c188b7e4e33f9
Author: Francois Gouget <fgouget at codeweavers.com>
Date: Wed Jan 20 13:56:57 2021 +0100
testbot/TestWTBS: Allow restricting the range of jobs to check.
This allows ignoring a previous test run that produced buggy results.
Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
testbot/tests/TestWTBS | 69 ++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 67 insertions(+), 2 deletions(-)
diff --git a/testbot/tests/TestWTBS b/testbot/tests/TestWTBS
index 786d369..6e1e7ed 100755
--- a/testbot/tests/TestWTBS
+++ b/testbot/tests/TestWTBS
@@ -87,10 +87,33 @@ p tests.TestFailures 1
=cut
my $Usage;
+sub check_opt_val($$)
+{
+ my ($option, $val) = @_;
+
+ if (defined $val)
+ {
+ error("$option can only be specified once\n");
+ $Usage = 2; # but continue processing this option
+ }
+ if (!@ARGV)
+ {
+ error("missing value for $option\n");
+ $Usage = 2;
+ return undef;
+ }
+ return shift @ARGV;
+}
+
+my $OptJobs;
while (@ARGV)
{
my $Arg = shift @ARGV;
- if ($Arg eq "--help")
+ if ($Arg eq "--jobs")
+ {
+ $OptJobs = check_opt_val($Arg, $OptJobs);
+ }
+ elsif ($Arg eq "--help")
{
$Usage = 0;
}
@@ -101,6 +124,30 @@ while (@ARGV)
}
}
+my @JobRanges;
+if (!defined $Usage)
+{
+ if (defined $OptJobs)
+ {
+ foreach my $Range (split /,+/, $OptJobs)
+ {
+ if ($Range =~ /^([0-9]+)$/)
+ {
+ push @JobRanges, [$1, $1];
+ }
+ elsif ($Range =~ /^([0-9]*)\.\.([0-9]*)/)
+ {
+ push @JobRanges, [$1 || 0, $2 || 0];
+ }
+ else
+ {
+ error("'$Range' is not a valid job range\n");
+ $Usage = 2;
+ }
+ }
+ }
+}
+
if (defined $Usage)
{
if ($Usage)
@@ -108,11 +155,15 @@ if (defined $Usage)
error("try '$name0 --help' for more information\n");
exit $Usage;
}
- print "Usage: $name0 [--help]\n";
+ print "Usage: $name0 [--jobs RANGES] [--help]\n";
print "\n";
print "Tests the Patches subject parser.\n";
print "\n";
print "Where:\n";
+ print " --jobs RANGES Only check the jobs in one of the specified comma-separated\n";
+ print " job id ranges. Each range is either a single job id, or of the\n";
+ print " form 'FIRST..LAST' where FIRST and LAST are either the empty\n";
+ print " string or a job id.\n";
print " --help Shows this usage message.\n";
exit 0;
}
@@ -369,6 +420,19 @@ sub CheckJob($$)
}
}
+sub IsJobInRange($)
+{
+ my ($Job) = @_;
+
+ return 1 if (!@JobRanges);
+ foreach my $Range (@JobRanges)
+ {
+ return 1 if (($Range->[0] == 0 or $Range->[0] <= $Job->Id) and
+ ($Range->[1] == 0 or $Job->Id <= $Range->[1]));
+ }
+ return 0;
+}
+
=pod
=item <tasks.HasTask>
@@ -388,6 +452,7 @@ p win.HasTask 0
sub CheckJobTree($)
{
my ($Job) = @_;
+ return if (!IsJobInRange($Job));
my ($TestInfo, $HasTask);
More information about the wine-cvs
mailing list