The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
######################################################################
# Test suite for CPAN::Unwind
# by Mike Schilli <cpan@perlmeister.com>
######################################################################

use warnings;
use strict;

use Test::More qw(no_plan);
BEGIN { use_ok('CPAN::Unwind') };

#use Log::Log4perl qw(:easy);
#Log::Log4perl->easy_init({layout => "%F{1}:%L %m%n", level => $DEBUG});

use Cache::FileCache;
use File::Temp qw(tempdir);

my $dirname = tempdir(CLEANUP => 1);

my $cache = Cache::FileCache->new(
{
    cache_root          => $dirname,
    namespace           => "cpan_depend",
    default_expires_in  => 3600*24*30,
});

my $agent = CPAN::Unwind->new(
    cache => $cache,
);
    
my $resp = $agent->lookup("Acme::Prereq::A");
die $resp->message() unless $resp->is_success();
    
my $deps = $resp->dependent_versions();
    
ok(exists $deps->{"Acme::Prereq::B"}, "Acme::Prereq::A dependency");

eval { $resp->schedule() };

like($@, qr/determine schedule/, "Circular dependency");

#############################
# Module without dependencies
#############################
$agent = CPAN::Unwind->new(
    cache => $cache,
);
    
my $wanted = "File::Basename";

$resp = $agent->lookup("$wanted");
ok($resp->is_success, "$wanted");
    
$deps = $resp->dependent_versions();
    
is(join(' ', keys %$deps), "", "$wanted dependencies (none)");

my @sched = $resp->schedule();

  # Empty schedule, because File::Basename comes with perl core
is("@sched", "", "$wanted Schedule");