File: end_to_end.t

package info (click to toggle)
libdevel-cover-report-clover-perl 1.01-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 252 kB
  • sloc: perl: 1,740; makefile: 2
file content (291 lines) | stat: -rw-r--r-- 15,019 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
#!perl

BEGIN {
    $MOCKTIME = 0;
    eval {
        require Test::MockTime;
        $MOCKTIME = 1;
    };
}

use Test::More;
use Devel::Cover::Report::Clover::Builder;
use FindBin;
use lib ($FindBin::Bin);
use testcover;

my $MULTI_FILE_DB = testcover::run('multi_file');

my @test = (
    sub {
    SKIP: {
            skip "Test::MockTime is not installed", 1 unless $MOCKTIME;

            my $t = "report - end to end";

            my $proj_name = "Multi File";

            Test::MockTime::set_fixed_time(123456789);
            my $b = BUILDER(
                {   name                       => $proj_name,
                    db                         => $MULTI_FILE_DB,
                    include_condition_criteria => 1
                }
            );

            my $report = $b->report();
            Test::MockTime::restore_time();

            my $expect = {
                'generated'    => 123456789,
                'generated_by' => 'Devel::Cover::Report::Clover',
                'project'      => {
                    'metrics' => {
                        'classes'             => 4,
                        'complexity'          => 0,
                        'conditionals'        => 4,
                        'coveredconditionals' => 0,
                        'coveredelements'     => 25,
                        'coveredmethods'      => 7,
                        'coveredstatements'   => 18,
                        'elements'            => 35,
                        'files'               => 3,
                        'loc'                 => 17,
                        'methods'             => 8,
                        'ncloc'               => 34,
                        'packages'            => 2,
                        'statements'          => 23
                    },
                    'name'     => $proj_name,
                    'packages' => [
                        {   'files' => [
                                {   'classes' => [
                                        {   'metrics' => {
                                                'complexity'          => 0,
                                                'conditionals'        => 0,
                                                'coveredconditionals' => 0,
                                                'coveredelements'     => 11,
                                                'coveredmethods'      => 3,
                                                'coveredstatements'   => 8,
                                                'elements'            => 11,
                                                'loc'                 => 9,
                                                'methods'             => 3,
                                                'ncloc'               => 8,
                                                'statements'          => 8
                                            },
                                            'name'        => 'MultiFile',
                                            'name_dotted' => 'MultiFile',
                                        }
                                    ],
                                    'metrics' => {
                                        'classes'             => 1,
                                        'complexity'          => 0,
                                        'conditionals'        => 0,
                                        'coveredconditionals' => 0,
                                        'coveredelements'     => 11,
                                        'coveredmethods'      => 3,
                                        'coveredstatements'   => 8,
                                        'elements'            => 11,
                                        'loc'                 => 9,
                                        'methods'             => 3,
                                        'ncloc'               => 8,
                                        'statements'          => 8
                                    },
                                    'name'     => 'cover_db_test/multi_file/MultiFile.pm',
                                    'filename' => 'MultiFile.pm'
                                }
                            ],
                            'metrics' => {
                                'classes'             => 1,
                                'complexity'          => 0,
                                'conditionals'        => 0,
                                'coveredconditionals' => 0,
                                'coveredelements'     => 11,
                                'coveredmethods'      => 3,
                                'coveredstatements'   => 8,
                                'elements'            => 11,
                                'files'               => 1,
                                'loc'                 => 9,
                                'methods'             => 3,
                                'ncloc'               => 8,
                                'statements'          => 8
                            },
                            'name'        => 'main',
                            'name_dotted' => 'main'
                        },
                        {   'files' => [
                                {   'classes' => [
                                        {   'metrics' => {
                                                'complexity'          => 0,
                                                'conditionals'        => 4,
                                                'coveredconditionals' => 0,
                                                'coveredelements'     => 8,
                                                'coveredmethods'      => 2,
                                                'coveredstatements'   => 6,
                                                'elements'            => 18,
                                                'loc'                 => 3,
                                                'methods'             => 3,
                                                'ncloc'               => 14,
                                                'statements'          => 11
                                            },
                                            'name'        => 'Sub',
                                            'name_dotted' => 'Sub'
                                        }
                                    ],
                                    'metrics' => {
                                        'classes'             => 1,
                                        'complexity'          => 0,
                                        'conditionals'        => 4,
                                        'coveredconditionals' => 0,
                                        'coveredelements'     => 8,
                                        'coveredmethods'      => 2,
                                        'coveredstatements'   => 6,
                                        'elements'            => 18,
                                        'loc'                 => 3,
                                        'methods'             => 3,
                                        'ncloc'               => 14,
                                        'statements'          => 11
                                    },
                                    'name'     => 'cover_db_test/multi_file/MultiFile.pm',
                                    'filename' => 'MultiFile.pm'
                                },
                                {   'classes' => [
                                        {   'metrics' => {
                                                'complexity'          => 0,
                                                'conditionals'        => 0,
                                                'coveredconditionals' => 0,
                                                'coveredelements'     => 3,
                                                'coveredmethods'      => 1,
                                                'coveredstatements'   => 2,
                                                'elements'            => 3,
                                                'loc'                 => 3,
                                                'methods'             => 1,
                                                'ncloc'               => 6,
                                                'statements'          => 2
                                            },
                                            'name'        => 'First',
                                            'name_dotted' => 'First'
                                        }
                                    ],
                                    'metrics' => {
                                        'classes'             => 1,
                                        'complexity'          => 0,
                                        'conditionals'        => 0,
                                        'coveredconditionals' => 0,
                                        'coveredelements'     => 3,
                                        'coveredmethods'      => 1,
                                        'coveredstatements'   => 2,
                                        'elements'            => 3,
                                        'loc'                 => 3,
                                        'methods'             => 1,
                                        'ncloc'               => 6,
                                        'statements'          => 2
                                    },
                                    'name'     => 'cover_db_test/multi_file/MultiFile/First.pm',
                                    'filename' => 'First.pm'
                                },
                                {   'classes' => [
                                        {   'metrics' => {
                                                'complexity'          => 0,
                                                'conditionals'        => 0,
                                                'coveredconditionals' => 0,
                                                'coveredelements'     => 3,
                                                'coveredmethods'      => 1,
                                                'coveredstatements'   => 2,
                                                'elements'            => 3,
                                                'loc'                 => 2,
                                                'methods'             => 1,
                                                'ncloc'               => 6,
                                                'statements'          => 2
                                            },
                                            'name'        => 'Second',
                                            'name_dotted' => 'Second'
                                        }
                                    ],
                                    'metrics' => {
                                        'classes'             => 1,
                                        'complexity'          => 0,
                                        'conditionals'        => 0,
                                        'coveredconditionals' => 0,
                                        'coveredelements'     => 3,
                                        'coveredmethods'      => 1,
                                        'coveredstatements'   => 2,
                                        'elements'            => 3,
                                        'loc'                 => 2,
                                        'methods'             => 1,
                                        'ncloc'               => 6,
                                        'statements'          => 2
                                    },
                                    'name'     => 'cover_db_test/multi_file/MultiFile/Second.pm',
                                    'filename' => 'Second.pm'
                                }
                            ],
                            'metrics' => {
                                'classes'             => 3,
                                'complexity'          => 0,
                                'conditionals'        => 4,
                                'coveredconditionals' => 0,
                                'coveredelements'     => 14,
                                'coveredmethods'      => 4,
                                'coveredstatements'   => 10,
                                'elements'            => 24,
                                'files'               => 3,
                                'loc'                 => 8,
                                'methods'             => 5,
                                'ncloc'               => 26,
                                'statements'          => 15
                            },
                            'name'        => 'MultiFile',
                            'name_dotted' => 'MultiFile'
                        }
                    ]
                },
                'version' => $Devel::Cover::Report::Clover::VERSION
            };
            ok(delete $report->{project}{packages}[0]{files}[0]{classes}[0]{lines}, 'line reporting 1 (existence checked)');
            ok(delete $report->{project}{packages}[1]{files}[0]{classes}[0]{lines}, 'line reporting 2 (existence checked)');
            ok(delete $report->{project}{packages}[1]{files}[1]{classes}[0]{lines}, 'line reporting 3 (existence checked)');
            ok(delete $report->{project}{packages}[1]{files}[2]{classes}[0]{lines}, 'line reporting 4 (existence checked)');
            is_deeply( $report, $expect, 'deep inspection of rest' );
        }
    },
    sub {
        my $t = "generate - writes xml file";

        my $proj_name = "Multi File";
        my $b         = BUILDER( { name => $proj_name, db => $MULTI_FILE_DB } );
        my $outfile   = testcover::test_path('multi_file') . "/clover-1-$$.xml";
        $b->generate($outfile);

        ok( -f $outfile, $t );
    },

    sub {
        my $t = "report - core report entry point writes file";

        my $proj_name = "Multi File";
        my $o         = {
            'option' => {
                'projectname' => "Project Name",
                'outputfile'  => "clover-2-$$.xml"
            },
            'silent'  => 1,
            outputdir => testcover::test_path('multi_file'),
        };

        Devel::Cover::Report::Clover->report( $MULTI_FILE_DB, $o );
        my $outfile = sprintf( "%s/%s", $o->{outputdir}, $o->{option}{outputfile} );

        ok( -f $outfile, $t );
    },

);

$_->() foreach @test;

done_testing();

sub BUILDER {
    return Devel::Cover::Report::Clover::Builder->new(shift);
}