use 5.006; use strict; use warnings; use Test::More 0.96; use Capture::Tiny qw/capture/; use CPAN::Meta; # needed for missing prereq detection test use Dist::Zilla::Tester; use File::pushd qw/pushd/; use File::Spec; use Path::Tiny; use Test::Harness; my $test_file = File::Spec->catfile(qw(t 00-report-prereqs.t)); my $root = 'corpus/DZ'; # Adapted from DZP-CheckChangesHasContent sub capture_test_results { my $build_dir = shift; my $test_file_full = File::Spec->catfile( $build_dir, $test_file ); my $wd = pushd $build_dir; return capture { # I'd use TAP::Parser here, except the docs are horrid. local $ENV{HARNESS_VERBOSE} = 1; Test::Harness::execute_tests( tests => [$test_file_full] ); }; } { my $tzil = Dist::Zilla::Tester->from_config( { dist_root => $root }, ); ok( $tzil, "created test dist" ); $tzil->build_in; { my $build_dir = path($tzil->tempdir)->child('build'); my $wd = pushd( $build_dir ); capture { system( $^X, 'Makefile.PL' ) }; # create MYMETA.json } my ( $out, $err, $total, $failed ) = capture_test_results( $tzil->built_in ); is( $total->{ok}, 1, 'test passed' ) or diag "STDOUT:\n", $out, "STDERR:\n", $err, "\n"; like( $err, qr/Versions for all modules listed in (?:MY)?META/, "Saw report header" ); like( $err, qr/\bFile::Basename\b/, "prereq reported" ); like( $err, qr/\bAn::Extra::Module::That::Causes::Problems\b/, "module included" ); like( $err, qr/\bAn::Extra::Module::That::Causes::More::Problems\b/, "multiple modules included" ); unlike( $err, qr/\bSecretly::Used::Module\b/, "module excluded" ); like( $err, qr/\bWARNING\b.*The following.*Missing::Prereq is not installed\b/s, "warning issued when missing prereqs detected" ); } done_testing; # # This file is part of Dist-Zilla-Plugin-Test-ReportPrereqs # # This software is Copyright (c) 2012 by David Golden. # # This is free software, licensed under: # # The Apache License, Version 2.0, January 2004 #