TT: add helpers for linking to jobs, jobsets, and projects, and for generating colon separated names.
[?]
Nov 22, 2021, 6:14 PM
LYRHVDS2Z6V565364MAYFDZKGRZD2WBZBLK7UZWH664IS7T656AACDependencies
- [2]
2JJP7673tests: move to t, allow `yath test` from root - [3]
S3ETHAGKShow evaluation time in the evaluations overview - [4]
ZH6B56XRTry harder to find build logs - [5]
Y6AHH4THRemove the logfile and logSize columns from the database - [6]
XKXMU5PVEllipsize long jobset/job names to prevent bootstrap navbar breakage - [7]
O757ISISRemove unused function - [8]
OZDDUMVPAutomatically chomp all [%...%] directives - [9]
JPTXSWBOShow whether a job still exists - [10]
HOMDMC3KHandle utf-8 properly - [11]
XO72X6PQHandle SSH hosts without a @ - [*]
J5UVLXOK* Start of a basic Catalyst web interface. - [*]
NZXX6PLDRemove the Jobs table
Change contents
- edit in src/lib/Hydra/View/TT.pm at line 6
use Template::Plugin::HTML; - replacement in src/lib/Hydra/View/TT.pm at line 15
expose_methods => [qw/buildLogExists buildStepLogExists jobExists relativeDuration stripSSHUser/]);expose_methods => [qw/buildLogExistsbuildStepLogExistsjobExistslinkToJoblinkToJobsetlinkToProjectmakeNameLinksForJobmakeNameLinksForJobsetmakeNameTextForJobmakeNameTextForJobsetrelativeDurationstripSSHUser/]); - edit in src/lib/Hydra/View/TT.pm at line 79[14.3416][4.476]
}=head2 linkToProjectGiven 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=cutsub 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 linkToJobsetGiven a L<Hydra::Schema::Result::Jobset>, return a link to the jobsetand 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=cutsub 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 linkToJobsetGiven a L<Hydra::Schema::Result::Jobset> and L<String> Job name, returna 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=cutsub 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 makeNameLinksForJobsetGiven a L<Hydra::Schema::Result::Jobset>, return a link to the jobset'sproject 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=cutsub 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 makeNameLinksForJobGiven a L<Hydra::Schema::Result::Jobset> and L<String> Job name, returna link to the jobset and project, and a non-link to the job inproject: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=cutsub makeNameLinksForJob {my ($self, $c, $jobset, $jobName) = @_;my $html = Template::Plugin::HTML->new();my $escapedJobName = $html->escape($jobName);return linkToJobset($self, $c, $jobset) . ':' . $escapedJobName; - edit in src/lib/Hydra/View/TT.pm at line 262
=head2 makeNameTextForJobsetGiven a L<Hydra::Schema::Result::Jobset>, return the project andjobset 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=cutsub makeNameTextForJobset {my ($self, $c, $jobset) = @_;return $jobset->project->name . ":" . $jobset->name;}=head2 makeNameTextForJobGiven a L<Hydra::Schema::Result::Jobset> and L<String> Job name, returnthe 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=cutsub makeNameTextForJob {my ($self, $c, $jobset, $jobName) = @_;return $jobset->project->name . ":" . $jobset->name . ":" . $jobName;} - file addition: View[2.697]
- file addition: TT.t[0.4451]
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;