summaryrefslogtreecommitdiff
path: root/t/install_extra_target.t
diff options
context:
space:
mode:
Diffstat (limited to 't/install_extra_target.t')
-rw-r--r--t/install_extra_target.t135
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;
+