forked from lix-project/hydra
t/Setup: move subs calling hydra-* programs to a CliPrograms module
Makes it so HydraTestContext can call them without an import loop
This commit is contained in:
parent
1fa141229f
commit
3238496b3d
50
t/lib/CliRunners.pm
Normal file
50
t/lib/CliRunners.pm
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
use warnings;
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
package CliRunners;
|
||||||
|
our @ISA = qw(Exporter);
|
||||||
|
our @EXPORT = qw(
|
||||||
|
evalSucceeds runBuild sendNotifications
|
||||||
|
captureStdoutStderr);
|
||||||
|
|
||||||
|
|
||||||
|
sub captureStdoutStderr {
|
||||||
|
# "Lazy"-load Hydra::Helper::Nix to avoid the compile-time
|
||||||
|
# import of Hydra::Model::DB. Early loading of the DB class
|
||||||
|
# causes fixation of the DSN, and we need to fixate it after
|
||||||
|
# the temporary DB is setup.
|
||||||
|
require Hydra::Helper::Nix;
|
||||||
|
return Hydra::Helper::Nix::captureStdoutStderr(@_)
|
||||||
|
}
|
||||||
|
|
||||||
|
sub evalSucceeds {
|
||||||
|
my ($jobset) = @_;
|
||||||
|
my ($res, $stdout, $stderr) = captureStdoutStderr(60, ("hydra-eval-jobset", $jobset->project->name, $jobset->name));
|
||||||
|
$jobset->discard_changes; # refresh from DB
|
||||||
|
chomp $stdout; chomp $stderr;
|
||||||
|
print STDERR "Evaluation errors for jobset ".$jobset->project->name.":".$jobset->name.": \n".$jobset->errormsg."\n" if $jobset->errormsg;
|
||||||
|
print STDERR "STDOUT: $stdout\n" if $stdout ne "";
|
||||||
|
print STDERR "STDERR: $stderr\n" if $stderr ne "";
|
||||||
|
return !$res;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub runBuild {
|
||||||
|
my ($build) = @_;
|
||||||
|
my ($res, $stdout, $stderr) = captureStdoutStderr(60, ("hydra-queue-runner", "-vvvv", "--build-one", $build->id));
|
||||||
|
if ($res) {
|
||||||
|
print STDERR "Queue runner stdout: $stdout\n" if $stdout ne "";
|
||||||
|
print STDERR "Queue runner stderr: $stderr\n" if $stderr ne "";
|
||||||
|
}
|
||||||
|
return !$res;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub sendNotifications() {
|
||||||
|
my ($res, $stdout, $stderr) = captureStdoutStderr(60, ("hydra-notify", "--queued-only"));
|
||||||
|
if ($res) {
|
||||||
|
print STDERR "hydra notify stdout: $stdout\n" if $stdout ne "";
|
||||||
|
print STDERR "hydra notify stderr: $stderr\n" if $stderr ne "";
|
||||||
|
}
|
||||||
|
return !$res;
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
|
@ -8,6 +8,7 @@ use File::Temp;
|
||||||
use File::Path qw(make_path);
|
use File::Path qw(make_path);
|
||||||
use File::Basename;
|
use File::Basename;
|
||||||
use Cwd qw(abs_path getcwd);
|
use Cwd qw(abs_path getcwd);
|
||||||
|
use CliRunners;
|
||||||
|
|
||||||
our @ISA = qw(Exporter);
|
our @ISA = qw(Exporter);
|
||||||
our @EXPORT = qw(test_context test_init hydra_setup write_file nrBuildsForJobset queuedBuildsForJobset
|
our @EXPORT = qw(test_context test_init hydra_setup write_file nrBuildsForJobset queuedBuildsForJobset
|
||||||
|
@ -45,15 +46,6 @@ sub write_file {
|
||||||
close $fh;
|
close $fh;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub captureStdoutStderr {
|
|
||||||
# "Lazy"-load Hydra::Helper::Nix to avoid the compile-time
|
|
||||||
# import of Hydra::Model::DB. Early loading of the DB class
|
|
||||||
# causes fixation of the DSN, and we need to fixate it after
|
|
||||||
# the temporary DB is setup.
|
|
||||||
require Hydra::Helper::Nix;
|
|
||||||
return Hydra::Helper::Nix::captureStdoutStderr(@_)
|
|
||||||
}
|
|
||||||
|
|
||||||
sub hydra_setup {
|
sub hydra_setup {
|
||||||
my ($db) = @_;
|
my ($db) = @_;
|
||||||
$db->resultset('Users')->create({ username => "root", emailaddress => 'root@invalid.org', password => '' });
|
$db->resultset('Users')->create({ username => "root", emailaddress => 'root@invalid.org', password => '' });
|
||||||
|
@ -103,36 +95,6 @@ sub createJobsetWithOneInput {
|
||||||
return $jobset;
|
return $jobset;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub evalSucceeds {
|
|
||||||
my ($jobset) = @_;
|
|
||||||
my ($res, $stdout, $stderr) = captureStdoutStderr(60, ("hydra-eval-jobset", $jobset->project->name, $jobset->name));
|
|
||||||
$jobset->discard_changes; # refresh from DB
|
|
||||||
chomp $stdout; chomp $stderr;
|
|
||||||
print STDERR "Evaluation errors for jobset ".$jobset->project->name.":".$jobset->name.": \n".$jobset->errormsg."\n" if $jobset->errormsg;
|
|
||||||
print STDERR "STDOUT: $stdout\n" if $stdout ne "";
|
|
||||||
print STDERR "STDERR: $stderr\n" if $stderr ne "";
|
|
||||||
return !$res;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub runBuild {
|
|
||||||
my ($build) = @_;
|
|
||||||
my ($res, $stdout, $stderr) = captureStdoutStderr(60, ("hydra-queue-runner", "-vvvv", "--build-one", $build->id));
|
|
||||||
if ($res) {
|
|
||||||
print STDERR "Queue runner stdout: $stdout\n" if $stdout ne "";
|
|
||||||
print STDERR "Queue runner stderr: $stderr\n" if $stderr ne "";
|
|
||||||
}
|
|
||||||
return !$res;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub sendNotifications() {
|
|
||||||
my ($res, $stdout, $stderr) = captureStdoutStderr(60, ("hydra-notify", "--queued-only"));
|
|
||||||
if ($res) {
|
|
||||||
print STDERR "hydra notify stdout: $stdout\n" if $stdout ne "";
|
|
||||||
print STDERR "hydra notify stderr: $stderr\n" if $stderr ne "";
|
|
||||||
}
|
|
||||||
return !$res;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub updateRepository {
|
sub updateRepository {
|
||||||
my ($scm, $update, $scratchdir) = @_;
|
my ($scm, $update, $scratchdir) = @_;
|
||||||
my $curdir = getcwd;
|
my $curdir = getcwd;
|
||||||
|
|
Loading…
Reference in a new issue