LYRHVDS2Z6V565364MAYFDZKGRZD2WBZBLK7UZWH664IS7T656AAC
2JJP76737U2JWJWQ6UDFEAQCGWRAQH46HC6OCIKWMB5QYRXF6DQQC
S3ETHAGKW3BJTWARYXKNXPFYMBRGJ7W5AWEUE2LGITLBSDU3YLXAC
J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC
Y6AHH4THYQA43V77L43YM42DYRPCMDSWLUV4NKWAQYMPL4NTUIPQC
OZDDUMVPLAIDDD4H43JOP75WYF6XOXL737GEUIHVDTKQAGFHYTBAC
ZH6B56XRZON7AGKUPGKABU2SWOIQSYBTXVOMR66X6P6MG25Y4WZAC
NZXX6PLDWEDQHXFF5JCZWGB22VA3WSDYLX65K6BQ5GNWPOE43N7QC
JPTXSWBOYRZMQDAYCJZBXVABO6GFQQ3CFSLX4FPXKLIWURPEWKMAC
expose_methods => [qw/buildLogExists buildStepLogExists jobExists relativeDuration stripSSHUser/]);
expose_methods => [qw/
buildLogExists
buildStepLogExists
jobExists
linkToJob
linkToJobset
linkToProject
makeNameLinksForJob
makeNameLinksForJobset
makeNameTextForJob
makeNameTextForJobset
relativeDuration
stripSSHUser
/]);
}
=head2 linkToProject
Given a L<Hydra::Schema::Result::Project>, return a link to the project.
Arguments:
=over 3
=item C<$self>
=back
=item C<$c>
Catalyst Context
=back
=item C<$project>
The L<Hydra::Schema::Result::Project> to link to.
=back
=cut
sub linkToProject {
my ($self, $c, $project) = @_;
my $html = Template::Plugin::HTML->new();
my $projectName = $project->name;
my $escapedProjectName = $html->escape($projectName);
return '<a href="' . $c->uri_for('/project', $projectName) . '">' . $escapedProjectName . '</a>';
}
=head2 linkToJobset
Given a L<Hydra::Schema::Result::Jobset>, return a link to the jobset
and its project in project:jobset notation.
Arguments:
=over 3
=item C<$self>
=back
=item C<$c>
Catalyst Context
=back
=item C<$jobset>
The L<Hydra::Schema::Result::Jobset> to link to.
=back
=cut
sub linkToJobset {
my ($self, $c, $jobset) = @_;
my $html = Template::Plugin::HTML->new();
my $jobsetName = $jobset->name;
my $escapedJobsetName = $html->escape($jobsetName);
return linkToProject($self, $c, $jobset->project) .
':<a href="' . $c->uri_for('/jobset', $jobset->project->name, $jobsetName) . '">' . $escapedJobsetName . '</a>';
}
=head2 linkToJobset
Given a L<Hydra::Schema::Result::Jobset> and L<String> Job name, return
a link to the job, jobset, and project in project:jobset:job notation.
Arguments:
=over 4
=item C<$self>
=back
=item C<$c>
Catalyst Context
=back
=item C<$jobset>
The L<Hydra::Schema::Result::Jobset> to link to.
=back
=item C<$jobName>
The L<String> job name to link to.
=back
=cut
sub linkToJob {
my ($self, $c, $jobset, $jobName) = @_;
my $html = Template::Plugin::HTML->new();
my $escapedJobName = $html->escape($jobName);
return linkToJobset($self, $c, $jobset) .
':<a href="' . $c->uri_for('/job', $jobset->project->name, $jobset->name, $jobName) . '">' . $escapedJobName . '</a>';
}
=head2 makeNameLinksForJobset
Given a L<Hydra::Schema::Result::Jobset>, return a link to the jobset's
project and a non-link to the jobset in project:jobset notation.
Arguments:
=over 3
=item C<$self>
=back
=item C<$c>
Catalyst Context
=back
=item C<$jobset>
The L<Hydra::Schema::Result::Jobset> to link to.
=back
=cut
sub makeNameLinksForJobset {
my ($self, $c, $jobset) = @_;
my $html = Template::Plugin::HTML->new();
my $escapedJobsetName = $html->escape($jobset->name);
return linkToProject($self, $c, $jobset->project) . ':' . $escapedJobsetName;
}
=head2 makeNameLinksForJob
Given a L<Hydra::Schema::Result::Jobset> and L<String> Job name, return
a link to the jobset and project, and a non-link to the job in
project:jobset:job notation.
Arguments:
=over 4
=item C<$self>
=back
=item C<$c>
Catalyst Context
=back
=item C<$jobset>
The L<Hydra::Schema::Result::Jobset> to link to.
=back
=item C<$jobName>
The L<String> job name to link to.
=back
=cut
sub makeNameLinksForJob {
my ($self, $c, $jobset, $jobName) = @_;
my $html = Template::Plugin::HTML->new();
my $escapedJobName = $html->escape($jobName);
return linkToJobset($self, $c, $jobset) . ':' . $escapedJobName;
=head2 makeNameTextForJobset
Given a L<Hydra::Schema::Result::Jobset>, return the project and
jobset in project:jobset notation.
Arguments:
=over 3
=item C<$self>
=back
=item C<$c>
Catalyst Context
=back
=item C<$jobset>
The L<Hydra::Schema::Result::Jobset> to link to.
=back
=cut
sub makeNameTextForJobset {
my ($self, $c, $jobset) = @_;
return $jobset->project->name . ":" . $jobset->name;
}
=head2 makeNameTextForJob
Given a L<Hydra::Schema::Result::Jobset> and L<String> Job name, return
the job, jobset, and project in project:jobset:job notation.
Arguments:
=over 4
=item C<$self>
=back
=item C<$c>
Catalyst Context
=back
=item C<$jobset>
The L<Hydra::Schema::Result::Jobset> to link to.
=back
=item C<$jobName>
The L<String> job name to link to.
=back
=cut
sub makeNameTextForJob {
my ($self, $c, $jobset, $jobName) = @_;
return $jobset->project->name . ":" . $jobset->name . ":" . $jobName;
}
use feature 'unicode_strings';
use strict;
use warnings;
use Setup;
my %ctx = test_init();
require Hydra::Schema;
require Hydra::Model::DB;
use Test2::V0;
require Hydra; # calls setup()
my $db = Hydra::Model::DB->new;
hydra_setup($db);
require Hydra::View::TT;
# The following lines are a cheap and hacky trick to get $c,
# there is no other reason to call /.
require Catalyst::Test;
Catalyst::Test->import('Hydra');
my($_, $c) = ctx_request('/');
my $project = $db->resultset('Projects')->create({name => "tests", displayname => "", owner => "root"});
my $jobset = createBaseJobset("example", "bogus.nix", $ctx{jobsdir});
my $job = "myjob";
is(
Hydra::View::TT::linkToProject(undef, $c, $project),
'<a href="http://localhost/project/tests">tests</a>',
"linkToProject"
);
is(
Hydra::View::TT::linkToJobset(undef, $c, $jobset),
'<a href="http://localhost/project/tests">tests</a>:'
. '<a href="http://localhost/jobset/tests/example">example</a>',
"linkToJobset"
);
is(
Hydra::View::TT::linkToJob(undef, $c, $jobset, $job),
'<a href="http://localhost/project/tests">tests</a>:'
. '<a href="http://localhost/jobset/tests/example">example</a>:'
. '<a href="http://localhost/job/tests/example/myjob">myjob</a>',
"linkToJob"
);
is(
Hydra::View::TT::makeNameLinksForJobset(undef, $c, $jobset),
'<a href="http://localhost/project/tests">tests</a>'
. ':example',
"makeNameLinksForJobset"
);
is(
Hydra::View::TT::makeNameLinksForJob(undef, $c, $jobset, $job),
'<a href="http://localhost/project/tests">tests</a>:'
. '<a href="http://localhost/jobset/tests/example">example</a>'
. ':myjob',
"makeNameLinksForJob"
);
is(
Hydra::View::TT::makeNameTextForJobset(undef, $c, $jobset),
'tests:example',
"makeNameTextForJobset"
);
is(
Hydra::View::TT::makeNameTextForJob(undef, $c, $jobset, $job),
'tests:example:myjob',
"makeNameTextForJob"
);
done_testing;