summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
Diffstat (limited to 't')
-rw-r--r--t/lib/App/Prove/Plugin/Dummy.pm2
-rw-r--r--t/lib/EmptyParser.pm30
-rw-r--r--t/lib/MyCustom.pm12
-rw-r--r--t/lib/MyGrammar.pm21
-rw-r--r--t/lib/MyIterator.pm26
-rw-r--r--t/lib/MyIteratorFactory.pm19
-rw-r--r--t/lib/MyPerlSource.pm27
-rw-r--r--t/lib/MyResult.pm21
-rw-r--r--t/lib/MyResultFactory.pm23
-rw-r--r--t/lib/MySource.pm34
-rw-r--r--t/lib/TAP/Parser/SubclassTest.pm39
-rw-r--r--t/lib/subclass_tests/non_perl_source3
-rw-r--r--t/lib/subclass_tests/perl_source6
13 files changed, 262 insertions, 1 deletions
diff --git a/t/lib/App/Prove/Plugin/Dummy.pm b/t/lib/App/Prove/Plugin/Dummy.pm
index 55bf3a624b..7e285bdc7f 100644
--- a/t/lib/App/Prove/Plugin/Dummy.pm
+++ b/t/lib/App/Prove/Plugin/Dummy.pm
@@ -1,7 +1,7 @@
package App::Prove::Plugin::Dummy;
sub import {
- main::test_log_import( @_ );
+ main::test_log_import(@_);
}
1;
diff --git a/t/lib/EmptyParser.pm b/t/lib/EmptyParser.pm
new file mode 100644
index 0000000000..2f7ec2428e
--- /dev/null
+++ b/t/lib/EmptyParser.pm
@@ -0,0 +1,30 @@
+package EmptyParser;
+
+use strict;
+use vars qw(@ISA);
+
+use TAP::Parser ();
+
+@ISA = qw(TAP::Parser);
+
+sub _initialize {
+ shift->_set_defaults;
+}
+
+# this should really be in TAP::Parser itself...
+sub _set_defaults {
+ my $self = shift;
+
+ for my $key (
+ qw( source_class perl_source_class grammar_class
+ iterator_factory_class result_factory_class )
+ )
+ {
+ my $default_method = "_default_$key";
+ $self->$key( $self->$default_method() );
+ }
+
+ return $self;
+}
+
+1;
diff --git a/t/lib/MyCustom.pm b/t/lib/MyCustom.pm
new file mode 100644
index 0000000000..2402312edc
--- /dev/null
+++ b/t/lib/MyCustom.pm
@@ -0,0 +1,12 @@
+# avoid cut-n-paste exhaustion with this mixin
+
+package MyCustom;
+use strict;
+
+sub custom {
+ my $self = shift;
+ $main::CUSTOM{ ref($self) }++;
+ return $self;
+}
+
+1;
diff --git a/t/lib/MyGrammar.pm b/t/lib/MyGrammar.pm
new file mode 100644
index 0000000000..ef93f9dfc1
--- /dev/null
+++ b/t/lib/MyGrammar.pm
@@ -0,0 +1,21 @@
+# subclass for testing customizing & subclassing
+
+package MyGrammar;
+
+use strict;
+use vars '@ISA';
+
+use MyCustom;
+use TAP::Parser::Grammar;
+
+@ISA = qw( TAP::Parser::Grammar MyCustom );
+
+sub _initialize {
+ my $self = shift;
+ $self->SUPER::_initialize(@_);
+ $main::INIT{ ref($self) }++;
+ $self->{initialized} = 1;
+ return $self;
+}
+
+1;
diff --git a/t/lib/MyIterator.pm b/t/lib/MyIterator.pm
new file mode 100644
index 0000000000..561f6e2c78
--- /dev/null
+++ b/t/lib/MyIterator.pm
@@ -0,0 +1,26 @@
+# subclass for testing customizing & subclassing
+
+package MyIterator;
+
+use strict;
+use vars '@ISA';
+
+use MyCustom;
+use TAP::Parser::Iterator;
+
+@ISA = qw( TAP::Parser::Iterator MyCustom );
+
+sub _initialize {
+ my $self = shift;
+ $self->SUPER::_initialize(@_);
+ $main::INIT{ ref($self) }++;
+ $self->{initialized} = 1;
+ $self->{content} = [ 'whats TAP all about then?', '1..1', 'ok 1' ];
+ return $self;
+}
+
+sub next {
+ return shift @{ $_[0]->{content} };
+}
+
+1;
diff --git a/t/lib/MyIteratorFactory.pm b/t/lib/MyIteratorFactory.pm
new file mode 100644
index 0000000000..d8c3269cda
--- /dev/null
+++ b/t/lib/MyIteratorFactory.pm
@@ -0,0 +1,19 @@
+# subclass for testing customizing & subclassing
+
+package MyIteratorFactory;
+
+use strict;
+use vars '@ISA';
+
+use MyCustom;
+use MyIterator;
+use TAP::Parser::IteratorFactory;
+
+@ISA = qw( TAP::Parser::IteratorFactory MyCustom );
+
+sub make_iterator {
+ my $class = shift;
+ return MyIterator->new(@_);
+}
+
+1;
diff --git a/t/lib/MyPerlSource.pm b/t/lib/MyPerlSource.pm
new file mode 100644
index 0000000000..6193db97df
--- /dev/null
+++ b/t/lib/MyPerlSource.pm
@@ -0,0 +1,27 @@
+# subclass for testing customizing & subclassing
+
+package MyPerlSource;
+
+use strict;
+use vars '@ISA';
+
+use MyCustom;
+use TAP::Parser::Source::Perl;
+
+@ISA = qw( TAP::Parser::Source::Perl MyCustom );
+
+sub _initialize {
+ my $self = shift;
+ $self->SUPER::_initialize(@_);
+ $main::INIT{ ref($self) }++;
+ $self->{initialized} = 1;
+ return $self;
+}
+
+sub source {
+ my $self = shift;
+ return $self->SUPER::source(@_);
+}
+
+1;
+
diff --git a/t/lib/MyResult.pm b/t/lib/MyResult.pm
new file mode 100644
index 0000000000..ab4845dedf
--- /dev/null
+++ b/t/lib/MyResult.pm
@@ -0,0 +1,21 @@
+# subclass for testing customizing & subclassing
+
+package MyResult;
+
+use strict;
+use vars '@ISA';
+
+use MyCustom;
+use TAP::Parser::Result;
+
+@ISA = qw( TAP::Parser::Result MyCustom );
+
+sub _initialize {
+ my $self = shift;
+ $self->SUPER::_initialize(@_);
+ $main::INIT{ ref($self) }++;
+ $self->{initialized} = 1;
+ return $self;
+}
+
+1;
diff --git a/t/lib/MyResultFactory.pm b/t/lib/MyResultFactory.pm
new file mode 100644
index 0000000000..371bba632b
--- /dev/null
+++ b/t/lib/MyResultFactory.pm
@@ -0,0 +1,23 @@
+# subclass for testing customizing & subclassing
+
+package MyResultFactory;
+
+use strict;
+use vars '@ISA';
+
+use MyCustom;
+use MyResult;
+use TAP::Parser::ResultFactory;
+
+@ISA = qw( TAP::Parser::ResultFactory MyCustom );
+
+sub make_result {
+ my $class = shift;
+
+ # I know, this is not really being initialized, but
+ # for consistency's sake, deal with it :)
+ $main::INIT{$class}++;
+ return MyResult->new(@_);
+}
+
+1;
diff --git a/t/lib/MySource.pm b/t/lib/MySource.pm
new file mode 100644
index 0000000000..5e41b829ae
--- /dev/null
+++ b/t/lib/MySource.pm
@@ -0,0 +1,34 @@
+# subclass for testing customizing & subclassing
+
+package MySource;
+
+use strict;
+use vars '@ISA';
+
+use MyCustom;
+use TAP::Parser::Source;
+
+@ISA = qw( TAP::Parser::Source MyCustom );
+
+sub _initialize {
+ my $self = shift;
+ $self->SUPER::_initialize(@_);
+ $main::INIT{ ref($self) }++;
+ $self->{initialized} = 1;
+ return $self;
+}
+
+sub source {
+ my $self = shift;
+ return $self->SUPER::source(@_);
+}
+
+sub get_stream {
+ my $self = shift;
+ my $stream = $self->SUPER::get_stream(@_);
+
+ # re-bless it:
+ bless $stream, 'MyIterator';
+}
+
+1;
diff --git a/t/lib/TAP/Parser/SubclassTest.pm b/t/lib/TAP/Parser/SubclassTest.pm
new file mode 100644
index 0000000000..84becee932
--- /dev/null
+++ b/t/lib/TAP/Parser/SubclassTest.pm
@@ -0,0 +1,39 @@
+# subclass for testing subclassing
+
+package TAP::Parser::SubclassTest;
+
+use strict;
+use vars qw(@ISA);
+
+use TAP::Parser;
+
+use MyCustom;
+use MySource;
+use MyPerlSource;
+use MyGrammar;
+use MyIteratorFactory;
+use MyResultFactory;
+
+@ISA = qw( TAP::Parser MyCustom );
+
+sub _default_source_class {'MySource'}
+sub _default_perl_source_class {'MyPerlSource'}
+sub _default_grammar_class {'MyGrammar'}
+sub _default_iterator_factory_class {'MyIteratorFactory'}
+sub _default_result_factory_class {'MyResultFactory'}
+
+sub make_source { shift->SUPER::make_source(@_)->custom }
+sub make_perl_source { shift->SUPER::make_perl_source(@_)->custom }
+sub make_grammar { shift->SUPER::make_grammar(@_)->custom }
+sub make_iterator { shift->SUPER::make_iterator(@_)->custom }
+sub make_result { shift->SUPER::make_result(@_)->custom }
+
+sub _initialize {
+ my $self = shift;
+ $self->SUPER::_initialize(@_);
+ $main::INIT{ ref($self) }++;
+ $self->{initialized} = 1;
+ return $self;
+}
+
+1;
diff --git a/t/lib/subclass_tests/non_perl_source b/t/lib/subclass_tests/non_perl_source
new file mode 100644
index 0000000000..12f0f74012
--- /dev/null
+++ b/t/lib/subclass_tests/non_perl_source
@@ -0,0 +1,3 @@
+#!/bin/sh
+echo "1..1"
+echo "ok 1 - this is a test"
diff --git a/t/lib/subclass_tests/perl_source b/t/lib/subclass_tests/perl_source
new file mode 100644
index 0000000000..7fef7d5459
--- /dev/null
+++ b/t/lib/subclass_tests/perl_source
@@ -0,0 +1,6 @@
+#!/usr/bin/perl
+
+print <<'END_TESTS';
+1..1
+ok 1 - this is a test
+END_TESTS