File Coverage

lib/Perl/PrereqScanner/NotQuiteLite/Parser/TestRequires.pm
Criterion Covered Total %
statement 28 30 93.3
branch 8 12 66.6
condition 6 6 100.0
subroutine 6 6 100.0
pod 0 3 0.0
total 48 57 84.2


line stmt bran cond sub pod time code
1             package Perl::PrereqScanner::NotQuiteLite::Parser::TestRequires;
2              
3 83     83   1446 use strict;
  83         189  
  83         2260  
4 83     83   412 use warnings;
  83         185  
  83         2016  
5 83     83   453 use Perl::PrereqScanner::NotQuiteLite::Util;
  83         183  
  83         37049  
6              
7             sub register { return {
8 82     82 0 481 use => {
9             'Test::Requires' => 'parse_test_requires_args',
10             },
11             }}
12              
13             sub parse_test_requires_args {
14 5     5 0 13 my ($class, $c, $used_module, $raw_tokens) = @_;
15              
16 5         36 $c->register_keyword_parser(
17             'test_requires',
18             [$class, 'parse_test_requires_function_args', $used_module],
19             );
20              
21 5         15 my $tokens = convert_string_tokens($raw_tokens);
22 5 50       16 if (is_version($tokens->[0])) {
23 0         0 $c->add($used_module => shift @$tokens);
24             }
25              
26 5 100 100     24 if (ref $tokens->[0] and $tokens->[0][1] and $tokens->[0][1] eq '{}') {
      100        
27 1         2 my $tokens_in_hashref = convert_string_tokens($tokens->[0][0]);
28 1         4 while(my ($key, undef, $value, undef) = splice @$tokens_in_hashref, 0, 4) {
29 1 50       8 next unless is_module_name($key);
30 1 50       8 next unless is_version($value);
31 1         4 $c->add_recommendation($key => $value);
32             }
33             } else {
34 4         12 for my $token (@$tokens) {
35 6 100       47 next if ref $token;
36 2 50       10 if ($token =~ /^v?5/) {
37 0         0 $c->add_recommendation(perl => $token);
38             } else {
39 2         8 $c->add_recommendation($token => 0);
40             }
41             }
42             }
43             }
44              
45             sub parse_test_requires_function_args {
46 1     1 0 3 my ($class, $c, $used_module, $raw_tokens) = @_;
47              
48 1         4 my $tokens = convert_string_tokens($raw_tokens);
49 1         2 $c->add_recommendation($_ => 0) for grep {!ref $_} @$tokens;
  3         8  
50             }
51              
52             1;
53              
54             __END__