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

# Check that install_share 

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

use Test::More;
use t::lib::Test;

plan tests => 22;

SCOPE: { # normal share dir/file
	ok( create_dist('Foo', { 'Makefile.PL' => <<'END_DSL' }), 'create_dist' );
use inc::Module::Install 0.82;
name 'Foo';
all_from 'lib/Foo.pm';
install_share;
WriteAll;
END_DSL

	ok( mkdir(dir('share')), 'mkdir share' );
	add_file('share/dist_file.txt', 'sample file');
	add_file('MANIFEST', <<'END_MANIFEST');
MANIFEST
Makefile.PL
lib/Foo.pm
share/dist_file.txt
END_MANIFEST

	ok( build_dist(), 'build_dist' );
	make();
	ok( !$?, 'make' );

	my $dir = dir(qw{ blib lib auto share dist Foo });
	ok( -d $dir, 'Found install_share in correct dist_dir location' );

	my $file = file(qw{ blib lib auto share dist Foo dist_file.txt });
	ok( -f $file, 'Found expected file in dist_dir location' );

	my $content = _read($file);
	ok( $content eq 'sample file', 'correct content' );

	ok( kill_dist(), 'kill_dist' );
}

SCOPE: { # normal share dir, but a file not listed in MANIFEST
	ok( create_dist('Foo', { 'Makefile.PL' => <<'END_DSL' }), 'create_dist' );
use inc::Module::Install 0.82;
name 'Foo';
all_from 'lib/Foo.pm';
install_share;
WriteAll;
END_DSL

	ok( mkdir(dir('share')), 'mkdir share' );
	add_file('share/dist_file.txt', 'sample file');
	add_file('MANIFEST', <<'END_MANIFEST');
MANIFEST
Makefile.PL
lib/Foo.pm
#share/dist_file.txt
END_MANIFEST

	ok( build_dist(), 'build_dist' );
	make();
	ok( !$?, 'make' );

	my $dir = dir(qw{ blib lib auto share dist Foo });
	ok( -d $dir, 'Found install_share in correct dist_dir location' );

	my $file = file(qw{ blib lib auto share dist Foo dist_file.txt });
	ok( !-f $file, 'Found expected file in dist_dir location' );

	ok( kill_dist(), 'kill_dist' );
}

SCOPE: { # file is listed in MANIFEST, but also in MANIFEST.SKIP
	ok( create_dist('Foo', { 'Makefile.PL' => <<'END_DSL' }), 'create_dist' );
use inc::Module::Install 0.82;
name 'Foo';
all_from 'lib/Foo.pm';
install_share;
WriteAll;
END_DSL

	ok( mkdir(dir('share')), 'mkdir share' );
	add_file('share/dist_file.txt', 'sample file');
	add_file('MANIFEST', <<'END_MANIFEST');
MANIFEST
Makefile.PL
lib/Foo.pm
share/dist_file.txt
END_MANIFEST

	add_file('MANIFEST.SKIP', <<'END_MANIFEST_SKIP');
share/dist_file.txt
END_MANIFEST_SKIP

	ok( build_dist(), 'build_dist' );
	make();
	ok( !$?, 'make' );

	my $dir = dir(qw{ blib lib auto share dist Foo });
	ok( -d $dir, 'Found install_share in correct dist_dir location' );

	my $file = file(qw{ blib lib auto share dist Foo dist_file.txt });
	ok( !-f $file, 'Found expected file in dist_dir location' );

	ok( kill_dist(), 'kill_dist' );
}