1use strict; 2use warnings; 3 4use Test::More; 5use Path::Tiny qw(path); 6use Test::Fatal qw( exception ); 7use FindBin; 8 9sub nofatal { 10 my ( $message, $sub ) = @_; 11 my $e = exception { $sub->() }; 12 return is( $e, undef, "no exceptions: $message" ); 13} 14 15my $corpus_dir = 16 path($FindBin::Bin)->parent->parent->child('corpus')->child('Changelog'); 17 18subtest 'corpus/Changelog' => sub { 19 return unless nofatal 'require Path::IsDev::Object' => sub { 20 require Path::IsDev::Object; 21 }; 22 my $instance; 23 return unless nofatal 'instance = Path::IsDev::Object->new()' => sub { 24 $instance = Path::IsDev::Object->new(); 25 }; 26 return unless nofatal 'instance->set()' => sub { 27 is( $instance->set(), 'Basic', 'instance->set() == Basic' ); 28 }; 29 return unless nofatal 'instance->set_prefix()' => sub { 30 is( $instance->set_prefix, 'Path::IsDev::HeuristicSet', 'instance->set_prefix() == Path::IsDev::HeuristicSet' ); 31 }; 32 return unless nofatal 'instance->set_module()' => sub { 33 is( $instance->set_module, 'Path::IsDev::HeuristicSet::Basic', 'instance->set_module() == Path::IsDev::HeuristicSet::Basic' ); 34 }; 35 return unless nofatal 'instance->loaded_set_module()' => sub { 36 is( 37 $instance->set_module, 38 'Path::IsDev::HeuristicSet::Basic', 39 'instance->loaded_set_module() == Path::IsDev::HeuristicSet::Basic' 40 ); 41 }; 42 return unless nofatal 'instance->_matches($path_isdev_source)' => sub { 43 my $computed_root = path($FindBin::Bin)->parent->parent; 44 my $result = $instance->_matches($computed_root); 45 ok( defined $result->result, 'instance->_matches($path_isdev_source)->result is defined' ); 46 subtest "result_object" => sub { 47 return unless nofatal 'result->path' => sub { 48 my $path = $result->path; 49 ok( defined $path, '->path is defined' ); 50 ok( ref $path, '->path is a ref' ); 51 }; 52 return unless nofatal 'result->result' => sub { 53 my $result = $result->result; 54 ok( defined $result, '->result is defined' ); 55 }; 56 return unless nofatal 'result->reasons' => sub { 57 my $reasons = $result->reasons; 58 ok( defined $reasons, '->reasons is defined' ); 59 ok( ref $reasons, '->reasons is a ref' ); 60 is( ref $reasons, 'ARRAY', '->reasons is ARRAY' ); 61 }; 62 }; 63 }; 64 return unless nofatal 'instance->matches($corpus_Changes_dir)' => sub { 65 my $result = $instance->matches($corpus_dir); 66 ok( defined $result, 'instance->matches($corpus_Changes_dir) is defined' ); 67 }; 68 return unless nofatal 'instance->matches($corpus_Changes_dir/../)' => sub { 69 my $result = $instance->matches( $corpus_dir->parent ); 70 ok( !defined $result, 'instance->matches($corpus_Changes_dir/../) is not defined' ); 71 }; 72 return unless nofatal 'instance->_instance_id' => sub { 73 my $result = $instance->_instance_id; 74 ok( defined $result, 'instance->_instance_id is defined' ); 75 }; 76 return unless nofatal 'instance->_debug(testing)' => sub { 77 my $result = $instance->_debug('testing'); 78 pass("_debug(testing) OK "); 79 }; 80}; 81 82done_testing; 83