summaryrefslogtreecommitdiff
path: root/t/no_index.t
diff options
context:
space:
mode:
Diffstat (limited to 't/no_index.t')
-rw-r--r--t/no_index.t86
1 files changed, 86 insertions, 0 deletions
diff --git a/t/no_index.t b/t/no_index.t
new file mode 100644
index 0000000..0443244
--- /dev/null
+++ b/t/no_index.t
@@ -0,0 +1,86 @@
+use strict;
+use warnings;
+use Test::More 0.96;
+use Path::Class qw( foreign_file );
+
+my $mod = 'Dist::Metadata';
+eval "require $mod" or die $@;
+$Dist::Metadata::VERSION ||= 0; # quiet warnings
+
+# specifically test that expected paths are not indexed on various platforms
+foreach my $spec ( qw(Unix Win32 Mac) ){
+ my $dm = new_ok($mod, [struct => {
+ file_spec => $spec,
+ files => {
+ README => 'nevermind',
+ foreign_file($spec => qw(lib Mod Name.pm)) => "package Mod::Name;\nour \$VERSION = 0.11;",
+ foreign_file($spec => qw(inc No.pm)) => "package No;\nour \$VERSION = 0.11;",
+ foreign_file($spec => qw(t lib YU.pm)) => "package YU;\nour \$VERSION = 0.11;",
+ }
+ }]);
+
+ is $dm->dist->file_spec, $spec, "dist faking file spec: $spec";
+
+ is_deeply
+ [sort $dm->dist->perl_files],
+ [sort grep { !/README/ } keys %{ $dm->dist->{files} }],
+ 'perl files listed';
+
+ is_deeply
+ $dm->package_versions,
+ {'Mod::Name' => '0.11'},
+ 't and inc not indexed';
+
+ is_deeply
+ $dm->determine_packages,
+ {'Mod::Name' => {file => 'lib/Mod/Name.pm', version => '0.11'}},
+ 'determined package with translated path';
+}
+
+sub indexed_ok {
+ my ($files, $exp, $desc) = @_;
+
+ my $dm = new_ok($mod, [struct => {
+ file_spec => 'Unix',
+ files => $files,
+ }]);
+
+ is_deeply $dm->package_versions, $exp, $desc;
+}
+
+sub _pkg {
+ my ($name, $version) = @_;
+ return "package $name;\nour \$VERSION = 0.$version;\n";
+}
+
+
+indexed_ok
+ {
+ 'META.json' => <<JSON,
+{
+ "name": "X",
+ "version": "1.1",
+ "no_index": {
+ "directory": [ "notthis" ]
+ }
+}
+JSON
+ 'lib/A/B.pm' => _pkg('A::B' => 2),
+ 't/T.pm' => _pkg('T' => 3),
+ 'xt/XT.pm' => _pkg('XT' => 4),
+ 'inc/Inc.pm' => _pkg('Inc' => 5),
+ 'local/Local.pm' => _pkg('Local' => 6),
+ 'perl5/Perl5.pm' => _pkg('Perl5' => 7),
+ 'fatlib/FatLib.pm' => _pkg('FatLib' => 8),
+ 'Root.pm' => _pkg('Some::Root' => 9),
+ 'notthis/More.pm' => _pkg('Some::More' => 10),
+ 'butthis/Moar.pm' => _pkg('Moar' => 11),
+ },
+ {
+ 'A::B' => '0.2',
+ 'Some::Root' => '0.9',
+ 'Moar' => '0.11',
+ },
+ q[Merge 'always' no_index dirs with specified no_index dirs];
+
+done_testing;