NAME
pherkin - Execute tests written using Test::BDD::Cucumber
VERSION
version 0.73
SYNOPSIS
pherkin
pherkin some/path/features/
DESCRIPTION
pherkin
accepts a single argument of a directory name, defaulting to ./features/
if none is specified. This directory is searched for feature files (any file matching *.feature
) and step definition files (any file matching *_steps.pl
). The step definitions are loaded, and then the features executed.
Steps that pass are printed in green, those that fail in red, and those for which there is no step definition - or that are skipped as the result of a previous failure - as yellow.
pherkin
will exit with a non-zero status if (and only if) the overall result is considered to be failing.
OPTIONS
Controlling @INC
-l, --lib Add 'lib' to @INC
-b, --blib Add 'blib/lib' and 'blib/arch' to @INC
-I [dir] Add given directory to @INC
Controlling Execution
-m, --match Only match steps in from features with available ones
--matching [mode] Step function multiple matches behaviour:
`first` (default) selects first match, `relaxed` warns
and runs first match or `strict` stops execution
--strict Requires steps to be defined; fails on undefined
and pending steps (steps forcing 'skip')
Output formatting
-o, --output Output harness. Defaults to 'TermColor'. See 'Outputs'
-c, --theme Theme for 'TermColor'. `light` or `dark` (default)
Extra Steps
-s, --steps [path] Include an extra step file, or directory of step files
(as identified by *_steps.pl; multiple use accepted)
Tag specifications
-t, --tags @tag Run scenarios tagged with '@tag'
-t, --tags @tag1,@tag2 Run scenarios tagged with '@tag1' and '@tag2'
-t, --tags ~@tag Run scenarios tagged without '@tag'
Configuration profiles (see CONFIGURATION PROFILES below/`man pherkin`)
-g, --config [path] A YAML file containing configuration profiles
-p, --profile [name] Name of the profile to load from the above config file.
Defaults to `default`
--debug-profile Shows information about which profile was loaded and how
and then terminates
Extensions
-e Extension::Module Load an extension. You can place a string in brackets at
the end of the module name which will be eval'd and
passed to new() for the extension.
Help
-h, -?, --help Print usage information.
--i18n LANG List keywords for a particular language.
'--i18n help' lists all languages available.
OUTPUTS
pherkin
can output using any of the Test::BDD::Cucumber::Harness
output modules. TermColor is the default, but TAP is also a reasonable option:
pherkin -o TermColor some/path/feature # The default
pherkin -o TAP some/path/feature # TAP text output (for e.g. prove)
CONFIGURATION PROFILES
You can specify sets of command line options using a YAML configuration file with named profiles in it, and the -g, --config
and -p, --profile
command line options.
If you don't specify a config file, the following paths are searched (in order) for one:
(contents of $ENV{'PHERKIN_CONFIG'})
.pherkin.yaml
./config/pherkin.yaml
./.config/pherkin.yaml
t/.pherkin.yaml
~/.pherkin.yaml
The contents of each profile is merged in as if you'd specified it on the command line. default
is used if you didn't specify one. For example:
default:
steps:
- foo/steps
- ~/steps
output: TermColor
tags:
- tag1,tag2
is equivalent to:
--steps foo/steps --steps ~/steps --output TermColor --tags tag1,tag2
If you specify both command-line options, and options in a configuration file, then the command-line ones override single-value items, and are placed at the end of multi-item ones.
If you specify --debug-profile
then information showing which profile is loaded and how is printed to STDOUT, and then `pherkin` terminates.
EXTENSION CONFIGURATION
Extensions named in the extensions
section of the configuration will be loaded with the configuration from the configuration file:
default:
includes:
# include location where extensions reside on disk
- t/lib
extensions:
# extension with configuration
Test::CucumberPush:
key1: value1
key2: value2
# extension without configuration
Test::CucumberPop:
Notice that contrary to all other configuration parameters, the names of the extensions are not prefixed with a dash (i.e. '- t/lib' vs 'Test::CucumberPush').
The example above is the equivalent of
use Test::CucumberPush;
use Test::CucumberPop;
Test::CucumberPush->new({ 'key1' => 'value1', 'key2' => 'value2' });
Test::CucumberPop->new();
AUTHOR
Peter Sergeant pete@clueball.com
LICENSE
Copyright 2012-2014, Peter Sergeant; Licensed under the same terms as Perl