package Catalyst::Script::Test;
use Moose;
+use Catalyst::Test ();
use namespace::autoclean;
with 'Catalyst::ScriptRole';
sub run {
my $self = shift;
- Class::MOP::load_class("Catalyst::Test");
Catalyst::Test->import($self->application_name);
- print request($ARGV[1])->content . "\n";
+ print request($ARGV[0])->content . "\n";
}
lib->import(File::Spec->catdir($FindBin::Bin, '..', 'lib'));
- warn("load $classtoload or Catalyst::Script::$scriptclass");
-
- # FIXME - Error handling / reporting
unless ( eval { Class::MOP::load_class($classtoload) } ) {
warn("Could not load $classtoload - falling back to Catalyst::Script::$scriptclass : $@\n")
if $@ !~ /Can't locate/;
use File::Temp qw/tempfile/;
use IO::Handle;
-my ($fh, $fn) = tempfile();
-
-binmode( $fh );
-binmode( STDOUT );
-
-{
- local @ARGV = ('/');
- my $i;
- lives_ok {
- $i = Catalyst::Script::Test->new_with_options(application_name => 'TestApp');
- } "new_with_options";
- ok $i;
- my $saved;
- open( $saved, '<&'. STDIN->fileno )
- or croak("Can't dup stdin: $!");
- open( STDOUT, '>&='. $fh->fileno )
- or croak("Can't open stdout: $!");
- eval { $i->run };
- ok !$@, 'Ran ok';
-
- STDOUT->flush
- or croak("Can't flush stdout: $!");
-
- open( STDOUT, '>&'. fileno($saved) )
- or croak("Can't restore stdout: $!");
-}
-
-my $data = do { my $fh; open($fh, '<', $fn) or die $!; local $/; <$fh>; };
-$fh = undef;
-unlink $fn if -r $fn;
-
-is $data, "root index\n", 'correct content printed';
+is run_test('/'), "root index\n", 'correct content printed';
+is run_test('/moose/get_attribute'), "42\n", 'Correct content printed for non root action';
done_testing;
+sub run_test {
+ my $url = shift;
+
+ my ($fh, $fn) = tempfile();
+
+ binmode( $fh );
+ binmode( STDOUT );
+
+ {
+ local @ARGV = ($url);
+ my $i;
+ lives_ok {
+ $i = Catalyst::Script::Test->new_with_options(application_name => 'TestApp');
+ } "new_with_options";
+ ok $i;
+ my $saved;
+ open( $saved, '<&'. STDIN->fileno )
+ or croak("Can't dup stdin: $!");
+ open( STDOUT, '>&='. $fh->fileno )
+ or croak("Can't open stdout: $!");
+ eval { $i->run };
+ ok !$@, 'Ran ok';
+
+ STDOUT->flush
+ or croak("Can't flush stdout: $!");
+
+ open( STDOUT, '>&'. fileno($saved) )
+ or croak("Can't restore stdout: $!");
+ }
+
+ my $data = do { my $fh; open($fh, '<', $fn) or die $!; local $/; <$fh>; };
+ $fh = undef;
+ unlink $fn if -r $fn;
+
+ return $data;
+}