Some steps don't have an input filename (like the Reconfig tasks) so it makes no sense to force setting FileName or FileType to a dummy value. However enum fields cannot be left undefined so add a 'none' value.
Signed-off-by: Francois Gouget fgouget@codeweavers.com ---
Note: This requires updating the database schema and then restarting the TestBot Engine and website.
testbot/bin/CheckForWinetestUpdate.pl | 3 +-- testbot/ddl/update35.sql | 5 +++++ testbot/ddl/winetestbot.sql | 4 ++-- testbot/lib/WineTestBot/Steps.pm | 11 +++++++++-- testbot/lib/WineTestBot/StepsTasks.pm | 4 +++- testbot/web/JobDetails.pl | 2 +- 6 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 testbot/ddl/update35.sql
diff --git a/testbot/bin/CheckForWinetestUpdate.pl b/testbot/bin/CheckForWinetestUpdate.pl index a79f60c71..f41148f12 100755 --- a/testbot/bin/CheckForWinetestUpdate.pl +++ b/testbot/bin/CheckForWinetestUpdate.pl @@ -251,8 +251,7 @@ sub AddReconfigJob() my $Steps = $NewJob->Steps; my $NewStep = $Steps->Add(); $NewStep->Type("reconfig"); - $NewStep->FileName("-"); - $NewStep->FileType("patchdlls"); + $NewStep->FileType("none"); $NewStep->InStaging(!1);
# Add a task for the build VM diff --git a/testbot/ddl/update35.sql b/testbot/ddl/update35.sql new file mode 100644 index 000000000..3ca3023f3 --- /dev/null +++ b/testbot/ddl/update35.sql @@ -0,0 +1,5 @@ +USE winetestbot; + +ALTER TABLE Steps + MODIFY FileName VARCHAR(100) NULL, + MODIFY FileType ENUM('none', 'exe32', 'exe64', 'patchdlls', 'patchprograms') NOT NULL; diff --git a/testbot/ddl/winetestbot.sql b/testbot/ddl/winetestbot.sql index 9ec428c04..9a28385a9 100644 --- a/testbot/ddl/winetestbot.sql +++ b/testbot/ddl/winetestbot.sql @@ -132,8 +132,8 @@ CREATE TABLE Steps PreviousNo INT(2) NULL, Type ENUM('suite', 'single', 'build', 'reconfig') NOT NULL, Status ENUM('queued', 'running', 'completed', 'badpatch', 'badbuild', 'boterror', 'canceled', 'skipped') NOT NULL, - FileName VARCHAR(100) NOT NULL, - FileType ENUM('exe32', 'exe64', 'patchdlls', 'patchprograms') NOT NULL, + FileName VARCHAR(100) NULL, + FileType ENUM('none', 'exe32', 'exe64', 'patchdlls', 'patchprograms') NOT NULL, InStaging ENUM('Y', 'N') NOT NULL, DebugLevel INT(2) NOT NULL, ReportSuccessfulTests ENUM('Y', 'N') NOT NULL, diff --git a/testbot/lib/WineTestBot/Steps.pm b/testbot/lib/WineTestBot/Steps.pm index 977419474..aea1aee04 100644 --- a/testbot/lib/WineTestBot/Steps.pm +++ b/testbot/lib/WineTestBot/Steps.pm @@ -89,6 +89,7 @@ sub InitializeNew($$)
$self->Status("queued"); $self->Type("single"); + $self->FileType("none"); $self->InStaging(1); $self->DebugLevel(1); $self->ReportSuccessfulTests(!1); @@ -117,6 +118,10 @@ sub Validate($) { return ("PreviousNo", "The previous step number must be less than this one's."); } + if (defined $self->FileName and $self->FileType eq "none") + { + return ("FileType", "A file has been specified but no FileType"); + } return $self->SUPER::Validate(); }
@@ -146,6 +151,8 @@ sub GetFullFileName($) { my ($self) = @_;
+ return undef if (!defined $self->FileName); + my ($JobId, $StepNo) = @{$self->GetMasterKey()}; # FIXME: Remove legacy support once no such job remains (so after # $JobPurgeDays). @@ -256,8 +263,8 @@ my @PropertyDescriptors = ( CreateBasicPropertyDescriptor("PreviousNo", "Previous step", !1, !1, "N", 2), CreateEnumPropertyDescriptor("Status", "Status", !1, 1, ['queued', 'running', 'completed', 'badpatch', 'badbuild', 'boterror', 'canceled', 'skipped']), CreateEnumPropertyDescriptor("Type", "Step type", !1, 1, ['suite', 'single', 'build', 'reconfig']), - CreateBasicPropertyDescriptor("FileName", "File name", !1, 1, "A", 100), - CreateEnumPropertyDescriptor("FileType", "File type", !1, 1, ['exe32', 'exe64', 'patchdlls', 'patchprograms']), + CreateBasicPropertyDescriptor("FileName", "File name", !1, !1, "A", 100), + CreateEnumPropertyDescriptor("FileType", "File type", !1, 1, ['none', 'exe32', 'exe64', 'patchdlls', 'patchprograms']), CreateBasicPropertyDescriptor("InStaging", "File is in staging area", !1, 1, "B", 1), CreateBasicPropertyDescriptor("DebugLevel", "Debug level (WINETEST_DEBUG)", !1, 1, "N", 2), CreateBasicPropertyDescriptor("ReportSuccessfulTests", "Report successful tests (WINETEST_REPORT_SUCCESS)", !1, 1, "B", 1), diff --git a/testbot/lib/WineTestBot/StepsTasks.pm b/testbot/lib/WineTestBot/StepsTasks.pm index b9f70d768..84c5a005f 100644 --- a/testbot/lib/WineTestBot/StepsTasks.pm +++ b/testbot/lib/WineTestBot/StepsTasks.pm @@ -44,6 +44,8 @@ sub GetFullFileName($) { my ($self) = @_;
+ return undef if (!defined $self->FileName); + my ($JobId, $_StepTaskId) = @{$self->GetMasterKey()}; # FIXME: Remove legacy support once no such job remains (so after # $JobPurgeDays). @@ -189,7 +191,7 @@ my @PropertyDescriptors = ( CreateBasicPropertyDescriptor("Status", "Status", !1, 1, "A", 32), CreateItemrefPropertyDescriptor("VM", "VM", !1, 1, &CreateVMs, ["VMName"]), CreateBasicPropertyDescriptor("Timeout", "Timeout", !1, 1, "N", 4), - CreateBasicPropertyDescriptor("FileName", "File name", !1, 1, "A", 100), + CreateBasicPropertyDescriptor("FileName", "File name", !1, !1, "A", 100), CreateBasicPropertyDescriptor("FileType", "File Type", !1, 1, "A", 32), CreateBasicPropertyDescriptor("CmdLineArg", "Command line args", !1, !1, "A", 256), CreateBasicPropertyDescriptor("Started", "Execution started", !1, !1, "DT", 19), diff --git a/testbot/web/JobDetails.pl b/testbot/web/JobDetails.pl index 6bf4a12e8..3e638f717 100644 --- a/testbot/web/JobDetails.pl +++ b/testbot/web/JobDetails.pl @@ -486,7 +486,7 @@ sub GenerateDataCell($$$$$) elsif ($PropertyName eq "FileName") { my $FileName = $StepTask->GetFullFileName(); - if (-r $FileName) + if ($FileName and -r $FileName) { my $URI = "/GetFile.pl?JobKey=" . uri_escape($self->{JobId}) . "&StepKey=" . uri_escape($StepTask->StepNo);