summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrey Zelenkov <zelenkov@nginx.com>2019-01-28 17:16:50 +0300
committerAndrey Zelenkov <zelenkov@nginx.com>2019-01-28 17:16:50 +0300
commit7dddfe2143e28dcde147d8420f0bd129babaec3a (patch)
tree5aa0463318a82e026cb01f57b1169a02ff04f433
parenteced6bc97284478d67bfec04e204e4cd212167d9 (diff)
downloadunit-7dddfe2143e28dcde147d8420f0bd129babaec3a.tar.gz
unit-7dddfe2143e28dcde147d8420f0bd129babaec3a.tar.bz2
Tests: added test for reading body from IO::Handle-like object.
Diffstat (limited to '')
-rw-r--r--test/perl/body_io_fake/IOFake.pm33
-rw-r--r--test/perl/body_io_fake/psgi.pl11
-rw-r--r--test/test_perl_application.py14
3 files changed, 58 insertions, 0 deletions
diff --git a/test/perl/body_io_fake/IOFake.pm b/test/perl/body_io_fake/IOFake.pm
new file mode 100644
index 00000000..d2542aa5
--- /dev/null
+++ b/test/perl/body_io_fake/IOFake.pm
@@ -0,0 +1,33 @@
+package IOFake;
+
+sub new {
+ my $class = shift;
+ my $errors = shift;
+ my $self = {};
+
+ $self->{_count} = 2;
+ $self->{_errors} = $errors;
+
+ bless $self, $class;
+ return $self;
+}
+
+sub getline() {
+ my $self = shift;
+
+ if ($self->{_count} > 0) {
+ return $self->{_count}--;
+ }
+
+ $self->{_errors}->print('IOFake getline() $/ is ' . ${ $/ });
+
+ return;
+}
+
+sub close() {
+ my $self = shift;
+
+ $self->{_errors}->print('IOFake close() called');
+};
+
+1;
diff --git a/test/perl/body_io_fake/psgi.pl b/test/perl/body_io_fake/psgi.pl
new file mode 100644
index 00000000..6990bfaf
--- /dev/null
+++ b/test/perl/body_io_fake/psgi.pl
@@ -0,0 +1,11 @@
+use File::Basename;
+use lib dirname (__FILE__);
+use IOFake;
+
+my $app = sub {
+ my ($environ) = @_;
+
+ my $io = IOFake->new($environ->{'psgi.errors'});
+
+ return ['200', [ 'Content-Length' => '2' ], $io];
+};
diff --git a/test/test_perl_application.py b/test/test_perl_application.py
index 2dfae66c..7850e231 100644
--- a/test/test_perl_application.py
+++ b/test/test_perl_application.py
@@ -185,5 +185,19 @@ class TestUnitPerlApplication(unit.TestUnitApplicationPerl):
self.assertEqual(resp['body'], '0123456789', 'keep-alive 2')
+ @unittest.expectedFailure
+ def test_perl_body_io_fake(self):
+ self.load('body_io_fake')
+
+ self.assertEqual(self.get()['body'], '21', 'body io fake')
+
+ self.assertIsNotNone(
+ self.search_in_log(r'\[error\].+IOFake getline\(\) \$\/ is \d+'),
+ 'body io fake $/ value')
+
+ self.assertIsNotNone(
+ self.search_in_log(r'\[error\].+IOFake close\(\) called'),
+ 'body io fake close')
+
if __name__ == '__main__':
TestUnitPerlApplication.main()