NAME
TAP::Parser::SourceHandler::pgTAP - Stream TAP from pgTAP test scripts
VERSION
Version 3.17_02
SYNOPSIS
In Build.PL for your application with pgTAP tests in t/*.pg:
Module::Build->new(
module_name => 'MyApp',
test_file_exts => [qw(.t .pg)],
use_tap_harness => 1,
tap_harness_args => {
sources => {
Perl => undef,
pgTAP => {
dbname => 'try',
username => 'postgres',
suffix => '.pg',
},
}
},
build_requires => {
'Module::Build' => '0.30',
'TAP::Parser::SourceHandler::pgTAP' => '3.19',
},
)->create_build_script;
If you're using prove
:
prove --source Perl \
--source pgTAP --pgtap-option dbname=try \
--pgtap-option username=postgres \
--pgtap-option suffix=.pg
Direct use:
use TAP::Parser::Source;
use TAP::Parser::SourceHandler::pgTAP;
my $source = TAP::Parser::Source->new->raw(\'mytest.pg');
$source->config({ pgTAP => {
dbname => 'testing',
username => 'postgres',
suffix => '.pg',
});
$source->assemble_meta;
my $class = 'TAP::Parser::SourceHandler::pgTAP';
my $vote = $class->can_handle( $source );
my $iter = $class->make_iterator( $source );
DESCRIPTION
This source handler executes pgTAP tests. It does two things:
Looks at the TAP::Parser::Source passed to it to determine whether or not the source in question is in fact a pgTAP test ("can_handle").
Creates an iterator that will call
psql
to run the pgTAP tests ("make_iterator").
Unless you're writing a plugin or subclassing TAP::Parser, you probably won't need to use this module directly.
METHODS
Class Methods
can_handle
my $vote = $class->can_handle( $source );
Looks at the source to determine whether or not it's a pgTAP test file and returns a score for how likely it is in fact a pgTAP test file. The scores are as follows:
1 if it has a suffix equal to that in the "suffix" config
1 if its suffix is ".pg"
0.8 if its suffix is ".sql"
0.75 if its suffix is ".s"
The latter two scores are subject to change, so try to name your pgTAP tests ending in ".pg" or specify a suffix in the configuration to be sure.
make_iterator
my $iterator = $class->make_iterator( $source );
Returns a new TAP::Parser::Iterator::Process for the source. $source->raw
must be either a file name or a scalar reference to the file name.
The pgTAP tests are run by executing psql
, the PostgreSQL command-line utility. A number of arguments are passed to it, many of which you can effect by setting up the source source configuration. The configuration must be a hash reference, and supports the following keys:
psql
-
The path to the
psql
command. Defaults to simply "psql", which should work well enough if it's in your path. dbname
-
The database to which to connect to run the tests. Defaults to the value of the
$PGDATABASE
environment variable or, if not set, to the system username. username
-
The PostgreSQL username to use to connect to PostgreSQL. If not specified, no username will be used, in which case
psql
will fall back on either the$PGUSER
environment variable or, if not set, the system username. host
-
Specifies the host name of the machine to which to connect to the PostgreSQL server. If the value begins with a slash, it is used as the directory for the Unix-domain socket. Defaults to the value of the
$PGDATABASE
environment variable or, if not set, the local host. port
-
Specifies the TCP port or the local Unix-domain socket file extension on which the server is listening for connections. Defaults to the value of the
$PGPORT
environment variable or, if not set, to the port specified at the timepsql
was compiled, usually 5432.
SEE ALSO
TAP::Object, TAP::Parser, TAP::Parser::IteratorFactory, TAP::Parser::SourceHandler, TAP::Parser::SourceHandler::Executable, TAP::Parser::SourceHandler::Perl, TAP::Parser::SourceHandler::File, TAP::Parser::SourceHandler::Handle, TAP::Parser::SourceHandler::RawTAP
AUTHOR
David E. Wheeler <dwheeler@cpan.org>