File Coverage

blib/lib/Config/Model/Tester/Setup.pm
Criterion Covered Total %
statement 26 49 53.0
branch 0 8 0.0
condition n/a
subroutine 9 11 81.8
pod 2 2 100.0
total 37 70 52.8


line stmt bran cond sub pod time code
1             #
2             # This file is part of Config-Model-Tester
3             #
4             # This software is Copyright (c) 2013-2020 by Dominique Dumont.
5             #
6             # This is free software, licensed under:
7             #
8             # The GNU Lesser General Public License, Version 2.1, February 1999
9             #
10             package Config::Model::Tester::Setup 4.006;
11             # ABSTRACT: Common test setup functions for Config::Model
12              
13 1     1   9 use warnings;
  1         3  
  1         37  
14 1     1   6 use strict;
  1         2  
  1         20  
15 1     1   7 use locale;
  1         2  
  1         17  
16 1     1   33 use utf8;
  1         2  
  1         7  
17 1     1   36 use 5.10.1;
  1         5  
18              
19 1     1   17 use Test::More;
  1         4  
  1         10  
20 1     1   329 use Log::Log4perl 1.11 qw(:easy :levels);
  1         17  
  1         9  
21 1     1   996 use Path::Tiny;
  1         25  
  1         62  
22 1     1   777 use Getopt::Long;
  1         10648  
  1         4  
23              
24             # use eval so this module does not have a "hard" dependency on Config::Model
25             # This way, Config::Model can build-depend on Config::Model::Tester without
26             # creating a build dependency loop.
27             eval {
28             require Config::Model;
29             require Config::Model::Exception;
30             } ;
31              
32             require Exporter;
33             our @ISA = qw(Exporter);
34             our @EXPORT = qw(init_test setup_test_dir);
35              
36             sub init_test {
37 0     0 1   my @option_specs = qw/trace error log/;
38 0           push @option_specs, @_;
39              
40 0 0         GetOptions( \my %opts, @option_specs)
41             || die "Unknown option. Expected options are '--".join("', '--",@option_specs)."'\n";
42              
43 0 0         if ($opts{error}) {
44 0           Config::Model::Exception::Any->Trace(1);
45             }
46              
47 0           my $model = Config::Model->new( );
48              
49 0 0         if ($opts{log}) {
50 0           note("enabling logs and disabling test logs");
51 0           $model->initialize_log4perl;
52             }
53             else {
54 0           Log::Log4perl->easy_init( $ERROR );
55 0           require Test::Log::Log4perl;
56 0           Test::Log::Log4perl->import;
57 0           Test::Log::Log4perl->ignore_priority("info");
58             }
59              
60 0           ok( $model, "compiled" );
61              
62 0           return ($model, $opts{trace}, \%opts);
63             }
64              
65             sub setup_test_dir {
66 0     0 1   my %args = @_;
67              
68 0           my $script = path($0);
69 0           my $name = path($0)->basename('.t');
70              
71 0           my $wr_root = path('wr_root')->child($name);
72 0           note("Running tests in $wr_root");
73 0           $wr_root->remove_tree;
74 0           $wr_root->mkpath;
75              
76             # TODO: remove stringify once Config::Model::Instance can handle Path::Tiny
77 0 0         return $args{stringify} ? $wr_root->stringify.'/' : $wr_root;
78             }
79              
80             1;
81              
82             __END__