diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-06-11 22:32:06 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-06-11 22:32:06 +0000 |
commit | 467298a34215401cdcbb1dded51bc2aba5f1f41c (patch) | |
tree | 1923f32fbc9cf8f0b4ab291d1eb9fad5ab872d68 /t/install_extra_target.t | |
download | Module-Build-tarball-master.tar.gz |
Module-Build-0.4214HEADModule-Build-0.4214master
Diffstat (limited to 't/install_extra_target.t')
-rw-r--r-- | t/install_extra_target.t | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/t/install_extra_target.t b/t/install_extra_target.t new file mode 100644 index 0000000..09d2cbe --- /dev/null +++ b/t/install_extra_target.t @@ -0,0 +1,135 @@ +#!perl -w +# Contributed by: Thorben Jaendling + +use strict; +use lib 't/lib'; +use MBTest tests => 6; + +blib_load('Module::Build'); + +use File::Spec::Functions qw( catdir catfile ); + +my $tmp = MBTest->tmpdir; +my $output; + +use DistGen; +my $dist = DistGen->new( dir => $tmp ); + +# note("Dist is in $tmp\n"); + +$dist->add_file("Build.PL", <<'===EOF==='); +#!perl -w + +use strict; +use Module::Build; + +my $subclass = Module::Build->subclass(code => <<'=EOF='); +sub copy_files +{ + my $self = shift; + my $dir = shift; + + my $files = $self->rscan_dir($dir, sub {-f $_ and not m!/\.|[#~]$!}); + + foreach my $file (@$files) { + $self->copy_if_modified(from => $file, to_dir => "blib"); + } +} + +#Copy etc files to blib +sub process_etc_files +{ + my $self = shift; + + $self->copy_files("etc"); +} + +#Copy share files to blib +sub process_shared_files +{ + my $self = shift; + + $self->copy_files("shared"); +} + +1; +=EOF= + +my $build = $subclass->new( + module_name => 'Simple', + license => 'perl' +); + +$build->add_build_element('etc'); +$build->add_build_element('shared'); + +my $distdir = lc $build->dist_name(); + +foreach my $id ('core', 'site', 'vendor') { + #Where to install these build types when using prefix symantics + $build->prefix_relpaths($id, 'shared' => "shared/$distdir"); + $build->prefix_relpaths($id, 'etc' => "etc/$distdir"); + + #Where to install these build types when using default symantics + my $set = $build->install_sets($id); + $set->{'shared'} = '/usr/'.($id eq 'site' ? 'local/':'')."shared/$distdir"; + $set->{'etc'} = ($id eq 'site' ? '/usr/local/etc/':'/etc/').$distdir; +} + +#Where to install these types when using install_base symantics +$build->install_base_relpaths('shared' => "shared/$distdir"); +$build->install_base_relpaths('etc' => "etc/$distdir"); + +$build->create_build_script(); + +===EOF=== + +#Test Build.PL exists ok? + +$dist->add_file("etc/config", <<'===EOF==='); +[main] +Foo = bar +Jim = bob + +[supplemental] +stardate = 1234344 + +===EOF=== + +$dist->add_file("shared/data", <<'===EOF==='); +7 * 9 = 42? + +===EOF=== + +$dist->add_file("shared/html/index.html", <<'===EOF==='); +<HTML> + <BODY> + <H1>Hello World!</H1> + </BODY> +</HTML> + +===EOF=== + +$dist->regen; +$dist->chdir_in; + +my $installdest = catdir($tmp, 't', "install_extra_targets-$$"); + +$output = stdout_of sub { $dist->run_build_pl("--install_base=$installdest") }; + +$output .= stdout_of sub { $dist->run_build }; + +my $error; +$error++ unless ok(-e "blib/etc/config", "Built etc/config"); +$error++ unless ok(-e "blib/shared/data", "Built shared/data"); +$error++ unless ok(-e "blib/shared/html/index.html", "Built shared/html"); +diag "OUTPUT:\n$output" if $error; + +$output = stdout_of sub { $dist->run_build('install') }; + +$error = 0; +$error++ unless ok(-e catfile($installdest, qw/etc simple config/), "installed etc/config"); +$error++ unless ok(-e catfile($installdest, qw/shared simple data/), "installed shared/data"); +$error++ unless ok(-e catfile($installdest, qw/shared simple html index.html/), "installed shared/html"); +diag "OUTPUT:\n$output" if $error; + |