The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings; 

use Test::More tests => 10;
use File::Spec::Functions qw(catdir catfile);
use Module::Build::JSAN::Installable;
use Cwd;
use Capture::Tiny qw(capture);
use File::Path;
use Path::Class;
use JSON;


my $original_dir = cwd();
my $blib_dir = catdir qw(.. .. blib lib);

chdir(catdir(qw(t MJ-Test1)));


#================================================================================================================================================================================================================================================
diag( "\nRunning ./Build on test distribution #1" );

(undef, undef) = capture { system($^X, "-I$blib_dir", 'Build.PL'); };

ok(-e '_build', 'Build.PL appeared to execute correctly');
ok(-e 'Build', 'Building script was created');

my $build = Module::Build::JSAN::Installable->current();


#================================================================================================================================================================================================================================================
diag( "\nChecking 'author'" );

my $test2 = [ 
    'SamuraiJack <root@symbie.org>'
];

is_deeply($build->dist_author(), $test2, 'dist_author is correct (single)');



#================================================================================================================================================================================================================================================
diag( "Checking build elements" );

my $test3 = $Module::Build::VERSION ge '0.35_01' ? [qw(PL support pm xs share_dir pod script js static)] : [qw(PL support pm xs pod script js static)];

is_deeply($build->build_elements(), $test3, 'build_elements list is correct');


#================================================================================================================================================================================================================================================
diag( "Checking 'requires'" );

my $test4 = {
    'Cool.JS.Lib' => '1.1',
    'Another.Cool.JS.Lib' => '1.2'
};

is_deeply($build->requires(), $test4, 'requires list is correct');


#================================================================================================================================================================================================================================================
diag( "Checking 'build_requires'" );

my $test5 = {
    'Building.JS.Lib' => '1.1',
    'Another.Building.JS.Lib' => '1.2'
};

is_deeply($build->build_requires(), $test5, 'build_requires list is correct');


#================================================================================================================================================================================================================================================
diag( "Checking 'configure_requires'" );

is_deeply($build->configure_requires(), {}, 'configure_requires list is correct');


#================================================================================================================================================================================================================================================
diag( "Various options" );

is($build->license(), 'perl', 'license is correct');

is($build->create_makefile_pl(), 'passthrough', 'create_makefile_pl is correct');


#================================================================================================================================================================================================================================================
# Static directory name should be saved into META.json

my $meta = decode_json(file('META.json')->slurp() . "");

ok($meta->{static_dir} eq 'assets', 'Non-standard name for static dir was saved in meta-file');



# Cleanup
(undef, undef) = capture { $build->dispatch('realclean'); };
unlink('META.json') if -e 'META.json';
unlink('Build.bat') if -e 'Build.bat';
unlink('Build.com') if -e 'Build.com';

File::Path::rmtree('inc');

chdir($original_dir);