File Coverage

blib/lib/OTRS/OPM/Maker/Command/sopmtest.pm
Criterion Covered Total %
statement 38 38 100.0
branch 6 6 100.0
condition 12 12 100.0
subroutine 9 9 100.0
pod 4 4 100.0
total 69 69 100.0


line stmt bran cond sub pod time code
1             package OTRS::OPM::Maker::Command::sopmtest;
2             $OTRS::OPM::Maker::Command::sopmtest::VERSION = '0.18';
3             # ABSTRACT: Check if sopm is valid
4              
5 16     16   185030 use strict;
  16         48  
  16         504  
6 16     16   90 use warnings;
  16         30  
  16         402  
7              
8 16     16   2956 use Path::Class ();
  16         208999  
  16         407  
9 16     16   4589 use XML::LibXML;
  16         300982  
  16         109  
10              
11 16     16   5411 use OTRS::OPM::Maker -command;
  16         43  
  16         139  
12              
13             sub abstract {
14 1     1 1 4176 return "check .sopm if it is valid";
15             }
16              
17             sub usage_desc {
18 1     1 1 1052 return "opmbuild sopmtest ";
19             }
20              
21             sub validate_args {
22 8     8 1 9212 my ($self, $opt, $args) = @_;
23            
24 8 100 100     150 $self->usage_error( 'need path to .sopm' ) if
      100        
      100        
      100        
25             !$args or
26             'ARRAY' ne ref $args or
27             !defined $args->[0] or
28             $args->[0] !~ /\.sopm\z/ or
29             !-f $args->[0];
30             }
31              
32             sub execute {
33 7     7 1 8210 my ($self, $opt, $args) = @_;
34            
35 7         32 my $file = $args->[0];
36            
37 7         13 my $check_result;
38             my $tree;
39            
40             eval {
41 7         65 my $parser = XML::LibXML->new;
42 7         165 $tree = $parser->parse_file( $file );
43 4         1600 1;
44 7 100       15 } or do { print "Cannot parse .sopm: $@\n"; return };
  3         1707  
  3         197  
45            
46             eval {
47 4         8 my $xsd = do{ local $/; };
  4         30  
  4         208  
48 4         39 my $schema = XML::LibXML::Schema->new( string => $xsd );
49 4         10533 $schema->validate( $tree );
50 3         339 1;
51 4 100       20 } or do {
52 1         181 print ".sopm is not valid: $@\n";
53 1         146 return;
54             };
55            
56 3         89 return 1;
57             }
58              
59             1;
60              
61             =pod
62              
63             =encoding UTF-8
64              
65             =head1 NAME
66              
67             OTRS::OPM::Maker::Command::sopmtest - Check if sopm is valid
68              
69             =head1 VERSION
70              
71             version 0.18
72              
73             =head1 AUTHOR
74              
75             Renee Baecker
76              
77             =head1 COPYRIGHT AND LICENSE
78              
79             This software is Copyright (c) 2017 by Renee Baecker.
80              
81             This is free software, licensed under:
82              
83             The Artistic License 2.0 (GPL Compatible)
84              
85             =cut
86              
87             __DATA__