The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
BEGIN {
	$|  = 1;
	$^W = 1;
}

use Test::More;
use File::Spec;
use t::lib::Test;

plan tests => 45;

# Let's see how MakeMaker behaves first

# normal run
SCOPE: {
	ok( create_dist( 'Foo', { 'Makefile.PL' => <<"END_DSL" }), 'create_dist' );
use ExtUtils::MakeMaker;
WriteMakefile(
	NAME => 'Foo',
	INC  => '-I/usr/include/',
);
END_DSL

	ok( run_makefile_pl(), 'build_dist' );
	my $file = makefile();
	ok( -f $file, 'Makefile exists' );
	my $content = _read($file);
	ok( $content,'file is not empty');
	my ($inc) = $content =~ /^INC\s*=\s*(.+)$/m;
	diag "INC: $inc" if $ENV{TEST_VERBOSE};
	ok $inc && $inc =~ m{/usr/include/}, "correct INC";
	ok( kill_dist(), 'kill_dist' );
}

# added as ARGV
SCOPE: {
	ok( create_dist( 'Foo', { 'Makefile.PL' => <<"END_DSL" }), 'create_dist' );
use ExtUtils::MakeMaker;
WriteMakefile(
	NAME => 'Foo',
);
END_DSL

	ok( run_makefile_pl(run_params => ['INC=-I/usr/opt/include/']), 'build_dist' );
	my $file = makefile();
	ok( -f $file, 'Makefile exists' );
	my $content = _read($file);
	ok( $content,'file is not empty');
	my ($inc) = $content =~ /^INC\s*=\s*(.+)$/m;
	diag "INC: $inc" if $ENV{TEST_VERBOSE};
	ok $inc && $inc =~ m{/usr/opt/include/}, "correct INC";
	ok( kill_dist(), 'kill_dist' );
}

# combined
SCOPE: {
	ok( create_dist( 'Foo', { 'Makefile.PL' => <<"END_DSL" }), 'create_dist' );
use ExtUtils::MakeMaker;
WriteMakefile(
	NAME => 'Foo',
	INC  => '-I/usr/include/',
);
END_DSL

	ok( run_makefile_pl(run_params => ['INC=-I/usr/opt/include/']), 'build_dist' );
	my $file = makefile();
	ok( -f $file, 'Makefile exists' );
	my $content = _read($file);
	ok( $content,'file is not empty');
	my ($inc) = $content =~ /^INC\s*=\s*(.+)$/m;
	diag "INC: $inc" if $ENV{TEST_VERBOSE};
	ok $inc && $inc !~ m{/usr/include/},     "INC is overriden";
	ok $inc && $inc =~ m{/usr/opt/include/}, "correct INC";
	ok( kill_dist(), 'kill_dist' );
}

# Now test Module::Install

# normal run
SCOPE: {
	ok( create_dist( 'Foo', { 'Makefile.PL' => <<"END_DSL" }), 'create_dist' );
use inc::Module::Install 0.81;
name          'Foo';
perl_version  '5.005';
all_from      'lib/Foo.pm';
cc_inc_paths  '/usr/include/';
WriteAll;
END_DSL

	ok( run_makefile_pl(), 'build_dist' );
	my $file = makefile();
	ok( -f $file, 'Makefile exists' );
	my $content = _read($file);
	ok( $content,'file is not empty');
	my ($inc) = $content =~ /^INC\s*=\s*(.+)$/m;
	diag "INC: $inc" if $ENV{TEST_VERBOSE};
	ok $inc && $inc =~ m{/usr/include/}, "correct INC";
	ok( kill_dist(), 'kill_dist' );
}

# multiple inc paths
SCOPE: {
	ok( create_dist( 'Foo', { 'Makefile.PL' => <<"END_DSL" }), 'create_dist' );
use inc::Module::Install 0.81;
name          'Foo';
perl_version  '5.005';
all_from      'lib/Foo.pm';
cc_inc_paths  '/usr/include/';
cc_inc_paths  '/usr/opt/include/';
WriteAll;
END_DSL

	ok( run_makefile_pl(), 'build_dist' );
	my $file = makefile();
	ok( -f $file, 'Makefile exists' );
	my $content = _read($file);
	ok( $content,'file is not empty');
	my ($inc) = $content =~ /^INC\s*=\s*(.+)$/m;
	diag "INC: $inc" if $ENV{TEST_VERBOSE};
	ok $inc && $inc =~ m{/usr/include/},     "correct INC";
	ok $inc && $inc =~ m{/usr/opt/include/}, "correct INC";
	ok( kill_dist(), 'kill_dist' );
}

# added as ARGV
SCOPE: {
	ok( create_dist( 'Foo', { 'Makefile.PL' => <<"END_DSL" }), 'create_dist' );
use inc::Module::Install 0.81;
name          'Foo';
perl_version  '5.005';
all_from      'lib/Foo.pm';
WriteAll;
END_DSL

	ok( run_makefile_pl(run_params => ['INC=-I/usr/opt/include/']), 'build_dist' );
	my $file = makefile();
	ok( -f $file, 'Makefile exists' );
	my $content = _read($file);
	ok( $content,'file is not empty');
	my ($inc) = $content =~ /^INC\s*=\s*(.+)$/m;
	diag "INC: $inc" if $ENV{TEST_VERBOSE};
	ok $inc && $inc =~ m{/usr/opt/include/}, "correct INC";
	ok( kill_dist(), 'kill_dist' );
}

# combined
SCOPE: {
	ok( create_dist( 'Foo', { 'Makefile.PL' => <<"END_DSL" }), 'create_dist' );
use inc::Module::Install 0.81;
name          'Foo';
perl_version  '5.005';
all_from      'lib/Foo.pm';
cc_inc_paths  '/usr/include/';
WriteAll;
END_DSL

	ok( run_makefile_pl(run_params => ['INC=-I/usr/opt/include/']), 'build_dist' );
	my $file = makefile();
	ok( -f $file, 'Makefile exists' );
	my $content = _read($file);
	ok( $content,'file is not empty');
	my ($inc) = $content =~ /^INC\s*=\s*(.+)$/m;
	diag "INC: $inc" if $ENV{TEST_VERBOSE};
	ok $inc && $inc !~ m{/usr/include/},     "INC is overriden";
	ok $inc && $inc =~ m{/usr/opt/include/}, "correct INC";
	ok( kill_dist(), 'kill_dist' );
}