[Catalyst] IO::Pipe and the Catalyst Server
Bill Moseley
moseley at hank.org
Thu Feb 26 20:02:13 GMT 2009
Hi Florian,
You asked for a test. Did this get applied?
On Thu, Feb 05, 2009 at 09:25:34AM -0800, Bill Moseley wrote:
> On Thu, Feb 05, 2009 at 04:28:57PM +0100, Florian Ragwitz wrote:
> > On Thu, Feb 05, 2009 at 07:10:07AM -0800, Bill Moseley wrote:
> > > Same problem.
> >
> > Would you mind preparing a testcase for this?
>
> I can try. See attached diff against svn 9215.
>
> $ prove -vl t/live_fork.t
> t/live_fork....
> 1..15
> TestApp is trying to use NEXT, which is deprecated. Please see the Class::C3::Adopt::NEXT documentation for details at /home/moseley/cat_5.8/t/lib/Catalyst/Plugin/Test/Plugin.pm line 23
> ok 1 - system
> ok 2 - is YAML
> ok 3 - exited OK
> ok 4 - `backticks`
> ok 5 - is YAML
> ok 6 - exited successfully
> ok 7 - contains ^/bin/ls$
> ok 8 - contains two newlines
> ok 9 - fork
> ok 10 - is YAML
> ok 11 - fork's "pid" wasn't 0
> ok 12 - fork got a new pid
> ok 13 - fork was effective
> ok 14 - io_pipe
> ok 15 - io_pipe returned data from handle
> ok
> All tests successful.
> Files=1, Tests=15, 1 wallclock secs ( 0.02 usr 0.01 sys + 0.98 cusr 0.06 csys = 1.07 CPU)
> Result: PASS
>
>
>
> >
> > TestApp::Controller::Fork / t/live_fork.t already has similar tests. You
> > can run them against the dev server using t/optional_http-server.t.
>
> Should App::Prove be listed as a dependency in test_requires?
> (although test_requires doesn't seem to work like I think it should. ;)
>
>
> Not 100% clear on how to run it but here's my attempt:
> (trimmed a bit):
>
> $ TEST_HTTP=1 REMOTE_FORK=1 perl -Ilib t/optional_http-server.t t/live_fork.t
> 1..1
> created "TestApp"
> created "TestApp/script"
> [...]
> Waiting for server to start...
> 1..15
> ok 1 - system
> Use of uninitialized value in join or string at t/live_fork.t line 32.
> ok 2 - is YAML
> ok 3 - exited OK
> ok 4 - `backticks`
> ok 5 - is YAML
> ok 6 - exited successfully
> ok 7 - contains ^/bin/ls$
> ok 8 - contains two newlines
> ok 9 - fork
> ok 10 - is YAML
> ok 11 - fork's "pid" wasn't 0
> ok 12 - fork got a new pid
> ok 13 - fork was effective
> ok 14 - io_pipe
> not ok 15 - io_pipe returned data from handle
> # Failed test 'io_pipe returned data from handle'
> # at t/live_fork.t line 70.
> # got: 'FATAL ERROR: Caught exception in TestApp::Controller::Fork->io_pipe "Failed read from IO::Pipe handle at /home/moseley/cat_5.8/t/tmp/TestApp/script/../lib/TestApp/Controller/Fork.pm line 72."'
> # expected: 'ok'
> # Looks like you failed 1 test of 15.
> not ok 1 - live tests
> # Failed test 'live tests'
> # at t/optional_http-server.t line 69.
> # got: '256'
> # expected: '0'
> # Looks like you failed 1 test of 1.
>
>
> --
> Bill Moseley
> moseley at hank.org
> Sent from my iMutt
>
> Index: t/lib/TestApp/Controller/Fork.pm
> ===================================================================
> --- t/lib/TestApp/Controller/Fork.pm (revision 9215)
> +++ t/lib/TestApp/Controller/Fork.pm (working copy)
> @@ -58,4 +58,21 @@
> $c->response->body(Dump({pid => $pid, result => $x}));
> }
>
> +
> +# Test should only call if it knows IO::Pipe exist and
> +# /bin/ls is available
> +
> +sub io_pipe : Local {
> + my ($self, $c) = @_;
> +
> + eval 'require IO::Pipe' || die 'IO::Pipe failed require: ' . $@;
> +
> + my $pipe = IO::Pipe->new;
> + $pipe->reader( '/bin/ls' );
> + my $line = <$pipe> || die 'Failed read from IO::Pipe handle';
> + $c->response->body( 'ok' );
> +}
> +
> +
> +
> 1;
> Index: t/live_fork.t
> ===================================================================
> --- t/live_fork.t (revision 9215)
> +++ t/live_fork.t (working copy)
> @@ -23,7 +23,7 @@
> plan skip_all => 'Skipping fork tests: no /bin/ls'
> if !-e '/bin/ls'; # see if /bin/ls exists
>
> -plan tests => 13; # otherwise
> +plan tests => 15; # otherwise
>
> {
> system:
> @@ -60,3 +60,12 @@
> isnt($result_ref->{pid}, $$, 'fork got a new pid');
> is($result_ref->{result}, 'ok', 'fork was effective');
> }
> +
> +SKIP: {
> + io_pipe:
> + eval 'require IO::Pipe'
> + || skip "IO::Pipe not installed", 2;
> +
> + ok(my $result = get( '/fork/io_pipe'), 'io_pipe' );
> + is( $result, 'ok', 'io_pipe returned data from handle' );
> +}
> _______________________________________________
> List: Catalyst at lists.scsys.co.uk
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> Dev site: http://dev.catalyst.perl.org/
--
Bill Moseley
moseley at hank.org
Sent from my iMutt
More information about the Catalyst
mailing list