generate app for live tests manually rather than using Catalyst::Devel
[catagits/Catalyst-Runtime.git] / t / lib / MakeTestApp.pm
diff --git a/t/lib/MakeTestApp.pm b/t/lib/MakeTestApp.pm
new file mode 100644 (file)
index 0000000..c48c501
--- /dev/null
@@ -0,0 +1,52 @@
+package MakeTestApp;
+use strict;
+use warnings;
+
+use Exporter 'import';
+use Cwd qw(abs_path);
+use File::Spec::Functions qw(updir catdir);
+use File::Basename qw(dirname);
+use File::Path qw(rmtree);
+use File::Copy::Recursive qw(dircopy);
+
+our @EXPORT = qw(make_test_app);
+
+our $root = abs_path(catdir(dirname(__FILE__), (updir) x 2));
+
+sub make_test_app {
+    my $tmp = "$root/t/tmp";
+    rmtree $tmp if -d $tmp;
+    mkdir $tmp;
+
+    # create a TestApp and copy the test libs into it
+    my $testapp = "$tmp/TestApp";
+    mkdir $testapp;
+
+    mkdir "$testapp/lib";
+    mkdir "$testapp/script";
+
+    for my $command (qw(CGI FastCGI Server)) {
+        my $script = "$testapp/script/testapp_\L$command\E.pl";
+        open my $fh, '>:raw', $script
+            or die "can't create $script: $!";
+        print $fh <<"END_CODE";
+#!/usr/bin/env perl
+
+use Catalyst::ScriptRunner;
+Catalyst::ScriptRunner->run('TestApp', '$command');
+
+1;
+END_CODE
+        close $fh;
+        chmod 0755, $script;
+    }
+
+    open my $fh, '>:raw', "$testapp/cpanfile";
+    close $fh;
+
+    File::Copy::Recursive::dircopy( "$root/t/lib", "$testapp/lib" );
+
+    return $testapp;
+}
+
+1;