-sub _tests_from_manifest {
- my ($extensions, $known_extensions) = @_;
- my %skip;
- my %extensions = _populate_hash($extensions);
- my %known_extensions = _populate_hash($known_extensions);
-
- foreach (keys %known_extensions) {
- $skip{$_}++ unless $extensions{$_};
- }
-
- my @results;
- use File::Spec;
- my $updir = File::Spec->updir;
- my $mani = File::Spec->catfile(File::Spec->updir, "MANIFEST");
- if (open(MANI, $mani)) {
- while (<MANI>) { # similar code in t/TEST
- if (m!^(ext/(\S+)/+(?:[^/\s]+\.t|test\.pl)|lib/\S+?(?:\.t|test\.pl))\s!) {
- my ($test, $extension) = ($1, $2);
- if (defined $extension) {
- $extension =~ s!/t$!!;
- # XXX Do I want to warn that I'm skipping these?
- next if $skip{$extension};
- my $flat_extension = $extension;
- $flat_extension =~ s!-!/!g;
- next if $skip{$flat_extension}; # Foo/Bar may live in Foo-Bar
- }
- push @results, File::Spec->catfile($updir, $test);
- }
- }
- close MANI;
- } else {
- warn "$0: cannot open $mani: $!\n";
- }
- return @results;
-}
-