From 97fa8400999bfa3c9ab17ee1647eff1b9b893324 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 29 Sep 2012 00:02:59 -0500 Subject: split this up --- t/response-streaming-utf8.t | 109 ++++++++++++++++++++++++++++++++++++++++++++ t/response-streaming.t | 85 ---------------------------------- 2 files changed, 109 insertions(+), 85 deletions(-) create mode 100644 t/response-streaming-utf8.t diff --git a/t/response-streaming-utf8.t b/t/response-streaming-utf8.t new file mode 100644 index 0000000..b209434 --- /dev/null +++ b/t/response-streaming-utf8.t @@ -0,0 +1,109 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Web::Request; + +{ + use utf8; + + my $req = Web::Request->new_from_env({}); + + my $res = $req->new_response(sub { + my $responder = shift; + $responder->([200, [], ["café"]]); + }); + my $psgi_res = $res->finalize; + ok(ref($psgi_res) eq 'CODE', "got a coderef"); + + is_deeply( + resolve_response($psgi_res), + [ 200, [], ["caf\xe9"] ], + "got the right response" + ); +} + +{ + use utf8; + + my $req = Web::Request->new_from_env({}); + $req->encoding('UTF-8'); + + my $res = $req->new_response(sub { + my $responder = shift; + $responder->([200, [], ["café"]]); + }); + my $psgi_res = $res->finalize; + ok(ref($psgi_res) eq 'CODE', "got a coderef"); + + is_deeply( + resolve_response($psgi_res), + [ 200, [], ["caf\xc3\xa9"] ], + "got the right response" + ); +} + +{ + use utf8; + + my $req = Web::Request->new_from_env({}); + + my $res = $req->new_response(sub { + my $responder = shift; + my $writer = $responder->([200, []]); + $writer->write("ca"); + $writer->write("fé"); + $writer->close; + }); + my $psgi_res = $res->finalize; + ok(ref($psgi_res) eq 'CODE', "got a coderef"); + + is_deeply( + resolve_response($psgi_res), + [ 200, [], ["ca", "f\xe9"] ], + "got the right response" + ); +} + +{ + use utf8; + + my $req = Web::Request->new_from_env({}); + $req->encoding('UTF-8'); + + my $res = $req->new_response(sub { + my $responder = shift; + my $writer = $responder->([200, []]); + $writer->write("ca"); + $writer->write("fé"); + $writer->close; + }); + my $psgi_res = $res->finalize; + ok(ref($psgi_res) eq 'CODE', "got a coderef"); + + is_deeply( + resolve_response($psgi_res), + [ 200, [], ["ca", "f\xc3\xa9"] ], + "got the right response" + ); +} + +sub resolve_response { + my ($psgi_res) = @_; + + if (ref($psgi_res) eq 'CODE') { + my $body = []; + $psgi_res->(sub { + $psgi_res = shift; + return Plack::Util::inline_object( + write => sub { push @$body, $_[0] }, + close => sub { push @$psgi_res, $body }, + ); + }); + } + + return $psgi_res; +} + +done_testing; diff --git a/t/response-streaming.t b/t/response-streaming.t index 51f6aea..eea787e 100644 --- a/t/response-streaming.t +++ b/t/response-streaming.t @@ -3,7 +3,6 @@ use strict; use warnings; use Test::More; -use Web::Request; use Web::Response; { @@ -21,45 +20,6 @@ use Web::Response; ); } -{ - use utf8; - - my $req = Web::Request->new_from_env({}); - - my $res = $req->new_response(sub { - my $responder = shift; - $responder->([200, [], ["café"]]); - }); - my $psgi_res = $res->finalize; - ok(ref($psgi_res) eq 'CODE', "got a coderef"); - - is_deeply( - resolve_response($psgi_res), - [ 200, [], ["caf\xe9"] ], - "got the right response" - ); -} - -{ - use utf8; - - my $req = Web::Request->new_from_env({}); - $req->encoding('UTF-8'); - - my $res = $req->new_response(sub { - my $responder = shift; - $responder->([200, [], ["café"]]); - }); - my $psgi_res = $res->finalize; - ok(ref($psgi_res) eq 'CODE', "got a coderef"); - - is_deeply( - resolve_response($psgi_res), - [ 200, [], ["caf\xc3\xa9"] ], - "got the right response" - ); -} - { my $res = Web::Response->new(sub { my $responder = shift; @@ -79,51 +39,6 @@ use Web::Response; ); } -{ - use utf8; - - my $req = Web::Request->new_from_env({}); - - my $res = $req->new_response(sub { - my $responder = shift; - my $writer = $responder->([200, []]); - $writer->write("ca"); - $writer->write("fé"); - $writer->close; - }); - my $psgi_res = $res->finalize; - ok(ref($psgi_res) eq 'CODE', "got a coderef"); - - is_deeply( - resolve_response($psgi_res), - [ 200, [], ["ca", "f\xe9"] ], - "got the right response" - ); -} - -{ - use utf8; - - my $req = Web::Request->new_from_env({}); - $req->encoding('UTF-8'); - - my $res = $req->new_response(sub { - my $responder = shift; - my $writer = $responder->([200, []]); - $writer->write("ca"); - $writer->write("fé"); - $writer->close; - }); - my $psgi_res = $res->finalize; - ok(ref($psgi_res) eq 'CODE', "got a coderef"); - - is_deeply( - resolve_response($psgi_res), - [ 200, [], ["ca", "f\xc3\xa9"] ], - "got the right response" - ); -} - sub resolve_response { my ($psgi_res) = @_; -- cgit v1.2.3-54-g00ecf