File Coverage

blib/lib/Tapper/Cmd.pm
Criterion Covered Total %
statement 23 23 100.0
branch 1 2 50.0
condition 1 2 50.0
subroutine 5 5 100.0
pod 2 2 100.0
total 32 34 94.1


line stmt bran cond sub pod time code
1             package Tapper::Cmd;
2             # git description: v5.0.10-1-g39d0b86
3              
4             our $AUTHORITY = 'cpan:TAPPER';
5             # ABSTRACT: Tapper - Backend functions for CLI and Web
6             $Tapper::Cmd::VERSION = '5.0.11';
7 11     11   103727 use Moose;
  11         462023  
  11         84  
8              
9             extends 'Tapper::Base';
10              
11 11     11   77145 use Tapper::Model 'model';
  11         1114801  
  11         1015  
12 11     11   86 use File::Slurp;
  11         25  
  11         3916  
13              
14             has schema => (
15             is => 'rw',
16             isa => 'Tapper::Schema::TestrunDB',
17             default => sub { return model('TestrunDB') },
18             );
19              
20              
21              
22             sub assign_preconditions
23             {
24 23     23 1 32219 my ($self, $testrun_id, @preconditions) = @_;
25 23         151 my $testrun = model('TestrunDB')->resultset('Testrun')->find($testrun_id);
26 23         109960 return $testrun->assign_preconditions(@preconditions);
27              
28             }
29              
30              
31             # This apply_macro function allows access to reportdata and dpath. Thats
32             # why it uses Tapper::Reports::DPath::TT instead of Template
33             # directly. Thats because that way we can make testplans dependent on
34             # former reports without doing it right.
35             sub apply_macro
36             {
37 1     1 1 6 my ($self, $file, $substitutes, $includes) = @_;
38              
39 1   50     4 $substitutes ||= {};
40 1         7 my $plan = File::Slurp::slurp($file);
41              
42 1         192 require Tapper::Config;
43             my @include_paths = (Tapper::Config->subconfig->{paths}{testplan_path},
44 1         22 Tapper::Config->subconfig->{paths}{use_case_path});
45 1 50       11 push @include_paths, @{$includes || [] };
  1         7  
46 1         5 my $include_path_list = join ":", @include_paths;
47 1         5 require Tapper::Reports::DPath::TT;
48 1         20 my $tt = Tapper::Reports::DPath::TT->new(include_path => $include_path_list,
49             substitutes => $substitutes,
50             );
51 1         1253 return $tt->render_template($plan);
52             }
53              
54              
55             1; # End of Tapper::Cmd
56              
57             __END__
58              
59             =pod
60              
61             =encoding UTF-8
62              
63             =head1 NAME
64              
65             Tapper::Cmd - Tapper - Backend functions for CLI and Web
66              
67             =head1 SYNOPSIS
68              
69             This project offers backend functions for all projects that manipulate
70             testruns or preconditions in the database. This module is the base module that
71             contains common functions of all modules in the project. No such functions
72             exist yet.
73              
74             use Tapper::Cmd::Testrun;
75             use Tapper::Cmd::Precondition;
76              
77             my $foo = Tapper::Cmd::Precondition->new();
78             $foo->add($precondition);
79              
80             my $bar = Tapper::Cmd::Testrun->new();
81             $bar->add($testrun);
82             ...
83              
84             =head1 FUNCTIONS
85              
86             =head2 assign_preconditions
87              
88             Assign a list of preconditions to a testrun. Both have to be given as valid
89             ids.
90              
91             @param int - testrun id
92             @param array of int - precondition ids
93              
94             @return success - 0
95             @return error - error string
96              
97             =head2 apply_macro
98              
99             Process macros and substitute using Template::Toolkit. This function
100             allows to access reportdata and use dpath in testplans.
101              
102             @param string - file name
103             @param hashref - containing substitutions
104             @optparam string - path to more include files
105              
106             @return success - text with applied macros
107             @return error - die with error string
108              
109             =head1 AUTHORS
110              
111             =over 4
112              
113             =item *
114              
115             AMD OSRC Tapper Team <tapper@amd64.org>
116              
117             =item *
118              
119             Tapper Team <tapper-ops@amazon.com>
120              
121             =back
122              
123             =head1 COPYRIGHT AND LICENSE
124              
125             This software is Copyright (c) 2020 by Advanced Micro Devices, Inc..
126              
127             This is free software, licensed under:
128              
129             The (two-clause) FreeBSD License
130              
131             =cut