PATH=C:\Program Files\Microsoft Platform SDK\Bin;C:\Program Files\Microsoft Platform SDK\Bin\WinNT;C:\Program Files\Microsoft Visual Studio\VC98\Bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Perl-5.12\site\bin;C:\Perl-5.12\bin;C:\cygwin\bin;C:\Program Files\Perforce;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\instantclient_11_2;C:\cygwin\bin;C:\Program Files\Perforce;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\mysql\bin
Start 2013-02-21T21:08:52
ActivePerl-1200 CPAN-1.9402
LIB=C:\PROGRA~1\MICROS~3\VC98\Lib\PSDK;C:\PROGRA~1\MICROS~2\Lib;C:\PROGRA~1\MICROS~3\VC98\Lib;C:\PROGRA~1\MICROS~3\VC98\MFC\Lib
INCLUDE=C:\PROGRA~1\MICROS~2\Include;C:\PROGRA~1\MICROS~3\VC98\ATL\Include;C:\PROGRA~1\MICROS~3\VC98\Include;C:\PROGRA~1\MICROS~3\VC98\MFC\Include
PATH=C:/CPANFL~1.12/var/libs/bin;C:\PROGRA~1\MICROS~2\Bin;C:\PROGRA~1\MICROS~2\Bin\WinNT;C:\PROGRA~1\MICROS~3\VC98\Bin;C:\PROGRA~1\MICROS~3\Common\MSDev98\Bin;C:\Perl-5.12\site\bin;C:\Perl-5.12\bin;C:\cygwin\bin;C:\PROGRA~1\Perforce;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WINDOW~2\v1.0;C:\WINDOWS\system32\WINDOW~2\v1.0;C:\INSTAN~1;C:\cygwin\bin;C:\PROGRA~1\Perforce;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WINDOW~2\v1.0;C:\WINDOWS\system32\WINDOW~2\v1.0;C:\mysql\bin
Going to read 'C:\cpanfly-5.12\var\cpan\Metadata'
Database was generated on Fri, 22 Feb 2013 03:41:03 GMT
Running make for D/DW/DWHEELER/App-Sqitch-0.953.tar.gz
Fetching with LWP:
http://cpan.nas.activestate.com/authors/id/D/DW/DWHEELER/App-Sqitch-0.953.tar.gz
Fetching with LWP:
http://cpan.nas.activestate.com/authors/id/D/DW/DWHEELER/CHECKSUMS
Checksum for C:\cpanfly-5.12\var\cpan\sources\authors\id\D\DW\DWHEELER\App-Sqitch-0.953.tar.gz ok
App-Sqitch-0.953/t
App-Sqitch-0.953/t/x.t
App-Sqitch-0.953/t/pg.t
App-Sqitch-0.953
App-Sqitch-0.953/README
App-Sqitch-0.953/Changes
App-Sqitch-0.953/t/add.t
App-Sqitch-0.953/t/log.t
App-Sqitch-0.953/t/pod.t
App-Sqitch-0.953/t/tag.t
App-Sqitch-0.953/LICENSE
App-Sqitch-0.953/t/base.t
App-Sqitch-0.953/t/die.pl
App-Sqitch-0.953/t/help.t
App-Sqitch-0.953/t/init.t
App-Sqitch-0.953/t/plan.t
App-Sqitch-0.953/t/show.t
App-Sqitch-0.953/t/sqitch
App-Sqitch-0.953/META.yml
App-Sqitch-0.953/MANIFEST
App-Sqitch-0.953/Build.PL
App-Sqitch-0.953/README.md
App-Sqitch-0.953/t/blank.t
App-Sqitch-0.953/t/echo.pl
App-Sqitch-0.953/t/read.pl
App-Sqitch-0.953/META.json
App-Sqitch-0.953/bin
App-Sqitch-0.953/bin/sqitch
App-Sqitch-0.953/t/bundle.t
App-Sqitch-0.953/t/change.t
App-Sqitch-0.953/t/config.t
App-Sqitch-0.953/t/depend.t
App-Sqitch-0.953/t/deploy.t
App-Sqitch-0.953/t/engine.t
App-Sqitch-0.953/t/pragma.t
App-Sqitch-0.953/t/rebase.t
App-Sqitch-0.953/t/revert.t
App-Sqitch-0.953/t/rework.t
App-Sqitch-0.953/t/sqlite.t
App-Sqitch-0.953/t/status.t
App-Sqitch-0.953/t/verify.t
App-Sqitch-0.953/t/command.t
App-Sqitch-0.953/t/options.t
App-Sqitch-0.953/t/tag_cmd.t
App-Sqitch-0.953/t/user.conf
App-Sqitch-0.953/t/datetime.t
App-Sqitch-0.953/t/linelist.t
App-Sqitch-0.953/t/local.conf
App-Sqitch-0.953/t/sqitch.conf
App-Sqitch-0.953/lib
App-Sqitch-0.953/lib/sqitch.pod
App-Sqitch-0.953/t/changelist.t
App-Sqitch-0.953/dist
App-Sqitch-0.953/dist/sqitch.spec
App-Sqitch-0.953/t/pod-coverage.t
App-Sqitch-0.953/t/pg
App-Sqitch-0.953/t/pg/sqitch.plan
App-Sqitch-0.953/lib/App
App-Sqitch-0.953/lib/App/Sqitch.pm
App-Sqitch-0.953/t/add_change.conf
App-Sqitch-0.953/t/configuration.t
App-Sqitch-0.953/t/sql
App-Sqitch-0.953/t/sql/sqitch.plan
App-Sqitch-0.953/lib/sqitch-add.pod
App-Sqitch-0.953/lib/sqitch-log.pod
App-Sqitch-0.953/lib/sqitch-tag.pod
App-Sqitch-0.953/t/plans
App-Sqitch-0.953/t/plans/multi.plan
App-Sqitch-0.953/lib/sqitch-help.pod
App-Sqitch-0.953/lib/sqitch-init.pod
App-Sqitch-0.953/lib/sqitch-show.pod
App-Sqitch-0.953/lib/App/Sqitch
App-Sqitch-0.953/lib/App/Sqitch/X.pm
App-Sqitch-0.953/t/lib
App-Sqitch-0.953/t/lib/MockOutput.pm
App-Sqitch-0.953/t/plans/pragmas.plan
App-Sqitch-0.953/t/plans/widgets.plan
App-Sqitch-0.953/lib/sqitch-bundle.pod
App-Sqitch-0.953/lib/sqitch-config.pod
App-Sqitch-0.953/lib/sqitch-deploy.pod
App-Sqitch-0.953/lib/sqitch-rebase.pod
App-Sqitch-0.953/lib/sqitch-revert.pod
App-Sqitch-0.953/lib/sqitch-rework.pod
App-Sqitch-0.953/lib/sqitch-status.pod
App-Sqitch-0.953/lib/sqitch-verify.pod
App-Sqitch-0.953/lib/sqitchchanges.pod
App-Sqitch-0.953/t/pg/deploy
App-Sqitch-0.953/t/pg/deploy/users.sql
App-Sqitch-0.953/t/pg/revert
App-Sqitch-0.953/t/pg/revert/users.sql
App-Sqitch-0.953/t/plans/dupe-tag.plan
App-Sqitch-0.953/lib/sqitchcommands.pod
App-Sqitch-0.953/lib/sqitchtutorial.pod
App-Sqitch-0.953/lib/App/Sqitch/Plan.pm
App-Sqitch-0.953/t/sql/deploy
App-Sqitch-0.953/t/sql/deploy/roles.sql
App-Sqitch-0.953/t/sql/deploy/users.sql
App-Sqitch-0.953/t/sql/verify
App-Sqitch-0.953/t/sql/verify/users.sql
App-Sqitch-0.953/t/pg/deploy/widgets.sql
App-Sqitch-0.953/t/pg/revert/widgets.sql
App-Sqitch-0.953/t/plans/bad-change.plan
App-Sqitch-0.953/lib/sqitch-add-usage.pod
App-Sqitch-0.953/lib/sqitch-log-usage.pod
App-Sqitch-0.953/lib/sqitch-tag-usage.pod
App-Sqitch-0.953/lib/App/Sqitch/Config.pm
App-Sqitch-0.953/lib/App/Sqitch/Engine.pm
App-Sqitch-0.953/t/plans/dupe-change.plan
App-Sqitch-0.953/t/sql/deploy/widgets.sql
App-Sqitch-0.953/etc/templates
App-Sqitch-0.953/etc/templates/deploy.tmpl
App-Sqitch-0.953/etc/templates/revert.tmpl
App-Sqitch-0.953/etc/templates/verify.tmpl
App-Sqitch-0.953/lib/sqitch-help-usage.pod
App-Sqitch-0.953/lib/sqitch-init-usage.pod
App-Sqitch-0.953/lib/sqitch-show-usage.pod
App-Sqitch-0.953/lib/App/Sqitch/Command.pm
App-Sqitch-0.953/t/plans/changes-only.plan
App-Sqitch-0.953/t/plans/dependencies.plan
App-Sqitch-0.953/t/plans/project_deps.plan
App-Sqitch-0.953/t/plans/reserved-tag.plan
App-Sqitch-0.953/xt/release
App-Sqitch-0.953/xt/release/pod-spelling.t
App-Sqitch-0.953/inc/Module/Build
App-Sqitch-0.953/inc/Module/Build/Sqitch.pm
App-Sqitch-0.953/lib/App/Sqitch/DateTime.pm
App-Sqitch-0.953/lib/App/Sqitch/Plan
App-Sqitch-0.953/lib/App/Sqitch/Plan/Tag.pm
App-Sqitch-0.953/lib/sqitch-bundle-usage.pod
App-Sqitch-0.953/lib/sqitch-config-usage.pod
App-Sqitch-0.953/lib/sqitch-deploy-usage.pod
App-Sqitch-0.953/lib/sqitch-rebase-usage.pod
App-Sqitch-0.953/lib/sqitch-revert-usage.pod
App-Sqitch-0.953/lib/sqitch-rework-usage.pod
App-Sqitch-0.953/lib/sqitch-status-usage.pod
App-Sqitch-0.953/lib/sqitch-verify-usage.pod
App-Sqitch-0.953/lib/App/Sqitch/Engine
App-Sqitch-0.953/lib/App/Sqitch/Engine/pg.pm
App-Sqitch-0.953/lib/App/Sqitch/Plan/Line.pm
App-Sqitch-0.953/lib/App/Sqitch/Engine/pg.sql
App-Sqitch-0.953/lib/App/Sqitch/Plan/Blank.pm
App-Sqitch-0.953/lib/App/Sqitch/Command
App-Sqitch-0.953/lib/App/Sqitch/Command/add.pm
App-Sqitch-0.953/lib/App/Sqitch/Command/log.pm
App-Sqitch-0.953/lib/App/Sqitch/Command/tag.pm
App-Sqitch-0.953/lib/App/Sqitch/Plan/Change.pm
App-Sqitch-0.953/lib/App/Sqitch/Plan/Depend.pm
App-Sqitch-0.953/lib/App/Sqitch/Plan/Pragma.pm
App-Sqitch-0.953/t/pg/deploy/func
App-Sqitch-0.953/t/pg/deploy/func/add_user.sql
App-Sqitch-0.953/t/pg/revert/func
App-Sqitch-0.953/t/pg/revert/func/add_user.sql
App-Sqitch-0.953/lib/App/Sqitch/Command/help.pm
App-Sqitch-0.953/lib/App/Sqitch/Command/init.pm
App-Sqitch-0.953/lib/App/Sqitch/Command/show.pm
App-Sqitch-0.953/t/lib/App/Sqitch/Engine
App-Sqitch-0.953/t/lib/App/Sqitch/Engine/bad.pm
App-Sqitch-0.953/t/plans/deploy-and-revert.plan
App-Sqitch-0.953/lib/App/Sqitch/Engine/sqlite.pm
App-Sqitch-0.953/lib/App/Sqitch/Plan/LineList.pm
App-Sqitch-0.953/t/lib/App/Sqitch/Command
App-Sqitch-0.953/t/lib/App/Sqitch/Command/bad.pm
App-Sqitch-0.953/t/lib/App/Sqitch/Engine/good.pm
App-Sqitch-0.953/lib/App/Sqitch/Command/bundle.pm
App-Sqitch-0.953/lib/App/Sqitch/Command/config.pm
App-Sqitch-0.953/lib/App/Sqitch/Command/deploy.pm
App-Sqitch-0.953/lib/App/Sqitch/Command/rebase.pm
App-Sqitch-0.953/lib/App/Sqitch/Command/revert.pm
App-Sqitch-0.953/lib/App/Sqitch/Command/rework.pm
App-Sqitch-0.953/lib/App/Sqitch/Command/status.pm
App-Sqitch-0.953/lib/App/Sqitch/Command/verify.pm
App-Sqitch-0.953/t/lib/App/Sqitch/Command/good.pm
App-Sqitch-0.953/lib/App/Sqitch/Plan/ChangeList.pm
App-Sqitch-0.953/t/plans/dupe-change-diff-tag.plan
App-Sqitch-0.953/LocaleData/de/LC_MESSAGES
App-Sqitch-0.953/LocaleData/de/LC_MESSAGES/App-Sqitch.mo
App-Sqitch-0.953/LocaleData/fr/LC_MESSAGES
App-Sqitch-0.953/LocaleData/fr/LC_MESSAGES/App-Sqitch.mo
App-Sqitch-0.953/lib/LocaleData/de/LC_MESSAGES
App-Sqitch-0.953/lib/LocaleData/de/LC_MESSAGES/App-Sqitch.mo
App-Sqitch-0.953/lib/LocaleData/fr/LC_MESSAGES
App-Sqitch-0.953/lib/LocaleData/fr/LC_MESSAGES/App-Sqitch.mo
CPAN.pm: Going to build D/DW/DWHEELER/App-Sqitch-0.953.tar.gz
>>> C:\Perl-5.12\bin\perl.exe Build.PL
Creating new 'MYMETA.yml' with configuration results
Creating new 'Build' script for 'App-Sqitch' version '0.953'
>>> C:\Perl-5.12\bin\perl.exe ./Build
Building App-Sqitch
./Build: blib\lib\sqitchtutorial.pod: unknown pod directive 'encoding' in paragraph 1. ignoring.
./Build: blib\lib\sqitchtutorial.pod: cannot resolve L in paragraph 8.
./Build: blib\lib\sqitchtutorial.pod: cannot resolve L in paragraph 8.
./Build: blib\lib\sqitchtutorial.pod: cannot resolve L in paragraph 12.
./Build: blib\lib\sqitchtutorial.pod: cannot resolve L in paragraph 44.
./Build: blib\lib\sqitchtutorial.pod: cannot resolve L in paragraph 243.
./Build: blib\lib\sqitchtutorial.pod: cannot resolve L in paragraph 264.
./Build: blib\lib\sqitchtutorial.pod: cannot resolve L|http://www.postgresql.org/docs/current/static/pgcrypto.html> in paragraph 294.
./Build: blib\lib\sqitchtutorial.pod: cannot resolve L in paragraph 306.
./Build: blib\lib\sqitchtutorial.pod: cannot resolve L in paragraph 328.
./Build: blib\lib\sqitchtutorial.pod: cannot resolve L|http://www.postgresql.org/docs/9.2/static/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE> in paragraph 345.
./Build: blib\lib\sqitch-verify.pod: cannot resolve L variables|http://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-INTERPOLATION> in paragraph 35.
./Build: blib\lib\sqitch-config.pod: cannot resolve L in paragraph 7.
./Build: blib\lib\sqitch-config.pod: cannot resolve L in paragraph 9.
./Build: blib\lib\sqitch-config.pod: cannot resolve L in paragraph 48.
./Build: blib\lib\sqitch-config.pod: cannot resolve L in paragraph 52.
./Build: blib\lib\sqitch-config.pod: cannot resolve L in paragraph 56.
./Build: blib\lib\sqitch-config.pod: cannot resolve L in paragraph 157.
./Build: blib\lib\sqitch-config.pod: cannot resolve L in paragraph 158.
./Build: blib\lib\sqitch-config.pod: cannot resolve L in paragraph 159.
./Build: blib\lib\sqitch-config.pod: cannot resolve L in paragraph 201.
./Build: blib\lib\sqitch-deploy.pod: cannot resolve L variables|http://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-INTERPOLATION> in paragraph 43.
./Build: blib\lib\sqitchcommands.pod: unterminated list(s) at =head in paragraph 36. ignoring.
./Build: blib\lib\sqitch-rebase.pod: cannot resolve L variables|http://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-INTERPOLATION> in paragraph 51.
./Build: blib\lib\sqitch-rework.pod: cannot resolve L in paragraph 11.
./Build: blib\lib\sqitch.pod: unknown pod directive 'encoding' in paragraph 1. ignoring.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 12.
./Build: blib\lib\sqitch.pod: cannot resolve L|http://www.postgresql.org/docs/current/static/app-psql.html> in paragraph 12.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 12.
./Build: blib\lib\sqitch.pod: cannot resolve L|http://dev.mysql.com/doc/refman/5.6/en/mysql.html> in paragraph 12.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 66.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 67.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 68.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 76.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 76.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 76.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 153.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 169.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 171.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 173.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 177.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 178.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 183.
./Build: blib\lib\sqitch.pod: cannot resolve L in paragraph 184.
./Build: blib\lib\sqitchchanges.pod: unknown pod directive 'encoding' in paragraph 1. ignoring.
./Build: blib\lib\sqitch-revert.pod: cannot resolve L variables|http://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-INTERPOLATION> in paragraph 27.
DWHEELER/App-Sqitch-0.953.tar.gz
C:\Perl-5.12\bin\perl.exe ./Build -- OK
Running Build test
>>> C:\Perl-5.12\bin\perl.exe ./Build test verbose=1
t/add.t ............
1..91
ok 1 - Load a sqitch sqitch object
ok 2 - add command isa App::Sqitch::Command::add
ok 3 - App::Sqitch::Command::add->can(...)
ok 4 - Options should be set up
ok 5 - Should have default configuration with no config or opts
ok 6 - Should have get requires and conflicts options
ok 7 - Should set up template directory option
ok 8 - Should die if --template-directory does not exist
ok 9 - Missing directory ident should be "add"
ok 10 - Missing directory error message should be correct
ok 11 - Should die if --template-directory does is not a dir
ok 12 - In alid directory ident should be "add"
ok 13 - Invalid directory error message should be correct
ok 14 - Should have get template options
ok 15 - Variables should by default not be loaded from config
ok 16 - --set should be merged with config variables
ok 17 - --set should be override config variables
ok 18 - Requires should be an arrayref
ok 19 - Conflicts should be an arrayref
ok 20 - Notes should be an arrayref
ok 21 - Varibles should be a hashref
ok 22 - Default dir should be undef
ok 23 - with_deploy should be true by default
ok 24 - Should die on deploy_template
ok 25 - Should be an "add" exception
ok 26 - Should get deploy_template failure note
ok 27 - with_revert should be true by default
ok 28 - Should die on revert_template
ok 29 - Should be an "add" exception
ok 30 - Should get revert_template failure note
ok 31 - with_verify should be true by default
ok 32 - Should die on verify_template
ok 33 - Should be an "add" exception
ok 34 - Should get verify_template failure note
ok 35 - Create add with template_directory
ok 36 - Should find deploy in templates directory
ok 37 - Should find revert in templates directory
ok 38 - Should find verify in templates directory
ok 39 - _find should work with template_directory
ok 40 - Create add with no template directory
ok 41 - _find should work with user_dir from Config
ok 42 - Should die trying to find template
ok 43 - Should be an "add" exception
ok 44 - Should get unfound verify template note
ok 45 - _find should work with system_dir from Config
ok 46 - _slurp() should load a reference to file contents
ok 47 - sql\sqitch_change_test.sql does not exist
ok 48 - Write out a script
ok 49 - sql\sqitch_change_test.sql exists
ok 50 - The template should have been evaluated
ok 51 - Info should show $out created
ok 52 - Create add cmd with requires and conflicts
ok 53 - Write out a script with requires and conflicts
ok 54 - Info should show $out created
ok 55 - The template should have been evaluated with requires and conflicts
ok 56 - Create another add with template_directory
ok 57 - Should not have "widgets_table" in plan
ok 58 - dir sql\deploy does not exist
ok 59 - dir sql\revert does not exist
ok 60 - dir sql\verify does not exist
ok 61 - Add change "widgets_table"
ok 62 - Added change isa App::Sqitch::Plan::Change
ok 63 - Change name should be set
ok 64 - It should have no requires
ok 65 - It should have no conflicts
ok 66 - It should have prompted for a note
ok 67 - sql\deploy\widgets_table.sql exists
ok 68 - sql\revert\widgets_table.sql exists
ok 69 - sql\verify\widgets_table.sql exists
ok 70 - Deploy script should look right
ok 71 - Revert script should look right
ok 72 - Verify script should look right
ok 73 - Info should have reported file creation
ok 74 - Added change in reloaded plan isa App::Sqitch::Plan::Change
ok 75 - Create another add with template_directory and no verify script
ok 76 - sql\deploy\foo_table.sql exists
ok 77 - sql\revert\foo_table.sql does not exist
ok 78 - sql\ferify\foo_table.sql does not exist
ok 79 - Should not have "foo_table" in plan
ok 80 - Add change "foo_table"
ok 81 - sql\deploy\foo_table.sql exists
ok 82 - sql\revert\foo_table.sql exists
ok 83 - sql\ferify\foo_table.sql does not exist
ok 84 - "foo_table" change isa App::Sqitch::Plan::Change
ok 85 - It should have prompted for a note
ok 86 - Change name should be set to "foo_table"
ok 87 - It should have requires
ok 88 - It should have conflicts
ok 89 - It should have a comment
ok 90 - Info should report skipping file and include dependencies
ok 91 - no warnings
ok
'--nosuchscript.ply--' is not recognized as an internal or external command,
operable program or batch file.
t/base.t ...........
1..156
ok 1 - use App::Sqitch;
ok 2 - App::Sqitch->can(...)
ok 3 - A new object isa App::Sqitch
ok 4 - db_client should be undef
ok 5 - db_username should be undef
ok 6 - db_name should be undef
ok 7 - db_host should be undef
ok 8 - db_port should be undef
ok 9 - Default plan file should be $top_dir/sqitch.plan
ok 10 - verbosity should be 1
ok 11 - Default extension should be sql
ok 12 - Default top_dir should be .
ok 13 - Default deploy_dir should be ./sql/deploy
ok 14 - Default revert_dir should be ./sql/revert
ok 15 - Default verify_dir should be ./sql/verify
ok 16 - The object isa App::Sqitch::Plan
ok 17 - Default user_name should be set from system
ok 18 - Default user_email should be set from system
ok 19 - Should get exception for no _engine
ok 20 - No _engine error ident should be "core"
ok 21 - No _engine error message should be correct
ok 22 - Should get exception for no engine
ok 23 - No engine error ident should be "core"
ok 24 - No engine error message should be correct
ok 25 - Should get error for unknown engine
ok 26 - Unknown engine error ident should be "core"
ok 27 - Unknown No engine error message should be correct
ok 28 - Engine "pg" should be valid
ok 29 - Engine "sqlite" should be valid
ok 30 - Should get error for user name containing "<"
ok 31 - Invalid user name error ident should be "user"
ok 32 - Invalid user name error message should be correct
ok 33 - Should get error for user name starting with "["
ok 34 - Second Invalid user name error ident should be "user"
ok 35 - Second Invalid user name error message should be correct
ok 36 - Should get error for user email containing ">"
ok 37 - Invalid user email error ident should be "user"
ok 38 - Invalid user email error message should be correct
ok 39 - Should get 0 from go()
ok 40 - Command isa App::Sqitch::Command::help
ok 41 - Extra args should be passed to execute
ok 42 - The object isa App::Sqitch
ok 43 - Engine should be set by option
ok 44 - ddl should be set by config
ok 45 - Get the Sqitch config
ok 46 - Should have local config overriding user
ok 47 - Should fall back on user config
ok 48 - Should have read user name from configuration
ok 49 - Should have read user email from configuration
ok 50 - Go should return 2 on Sqitch exception
ok 51 - The error should have been vented
ok 52 - The stack trace should have been sent to trace
ok 53 - Go should return exitval on another exception
ok 54 - Both the message and the trace should have been vented
ok 55 - Nothing should have been traced
ok 56 - Go should return 2 on a third Sqitch exception
ok 57 - Should have one thing vented
ok 58 - And it should include our message
ok 59 - editor should use use parameter
ok 60 - editor should use $EDITOR
ok 61 - editor should prefer $SQITCH_EDITOR
ok 62 - editor fall back on vi when not Windows
ok 63 - editor fall back on notepad on Windows
ok 64 - trace should work
ok 65 - Should get no trace output for verbosity 2
ok 66 - trace_literal should work
ok 67 - Should get no trace_literal output for verbosity 2
ok 68 - debug should work
ok 69 - Should get no debug output for verbosity 1
ok 70 - debug_literal should work
ok 71 - Should get no debug_literal output for verbosity 1
ok 72 - info should work
ok 73 - Should get no info output for verbosity 0
ok 74 - info_literal should work
ok 75 - Should get no info_literal output for verbosity 0
ok 76 - comment should work
ok 77 - comment should work with verbosity 0
ok 78 - comment_literal should work
ok 79 - comment_literal should work with verbosity 0
ok 80 - emit should work
ok 81 - emit should work even with verbosity 0
ok 82 - emit_literal should work
ok 83 - emit_literal should work even with verbosity 0
ok 84 - warn should work
ok 85 - warn_literal should work
ok 86 - vent should work
ok 87 - vent_literal should work
ok 88 - App::Sqitch->can('run')
ok 89 - Should get success back from run echo
ok 90 - The echo script should have run
ok 91 - Nothing should have gone to STDERR
ok 92 - run die should, well, die
ok 93 - The die script should have its STDOUT ummolested
ok 94 - The die script should have its STDERR unmolested
ok 95 - App::Sqitch->can('capture')
ok 96 - The echo script output should have been returned
ok 97 - Should get an error if the command errors out
ok 98 - The die script STDERR should have passed through
ok 99 - App::Sqitch->can('probe')
ok 100 - Should have just chomped first line of output
ok 101 - App::Sqitch->can('spool')
ok 102 - Spool to read.pl
ok 103 - Data should have been sent to STDOUT by read.pl
ok 104 - Should get error when die.pl dies
ok 105 - Error ident should be "io"
ok 106 - The error message should be one of the I/O messages
ok 107 - The die script STDERR should have passed through
ok 108 - Should get an error for a bad command
ok 109 - Error ident should be "io"
ok 110 - Error message should be about inability to exec
ok 111 - Should get error for no prompt message
ok 112 - No prompt ident should be "DEV"
ok 113 - No prompt error message should be correct
ok 114 - Prompt should return input
ok 115 - Prompt should prompt
ok 116 - Prompt with default should return input
ok 117 - Prompt should prompt with default
ok 118 - Prompt with undef default should return input
ok 119 - Prompt should prompt with bracket for undef default
ok 120 - Prompt should return default for undef input
ok 121 - Prompt should show default when undef input
ok 122 - Prompt should return input for empty input
ok 123 - Prompt should show default when empty input
ok 124 - Should get error when uattended and no default
ok 125 - Unattended error ident should be "io"
ok 126 - Unattended error message should be correct
ok 127 - Prompt should return input
ok 128 - Prompt should show default as selected when unattended
ok 129 - Should get error for no ask_y_n message
ok 130 - No ask_y_n ident should be "DEV"
ok 131 - No ask_y_n error message should be correct
ok 132 - Should get error for invalid ask_y_n default
ok 133 - Invalid ask_y_n default ident should be "DEV"
ok 134 - Invalid ask_y_n default error message should be correct
ok 135 - ask_y_n should return true for "y" input
ok 136 - ask_y_n() should prompt
ok 137 - ask_y_n should return false for "no" input
ok 138 - ask_y_n() should prompt for no
ok 139 - ask_y_n should return false for "Nein"
ok 140 - ask_y_n() should prompt for no
ok 141 - ask_y_n should return true for "Yep"
ok 142 - ask_y_n() should prompt for yes
ok 143 - ask_y_n should return true default "y"
ok 144 - ask_y_n() should prompt and show default "y"
ok 145 - ask_y_n should return false default "n"
ok 146 - ask_y_n() should prompt and show default "n"
ok 147 - Should get error for bad answers
ok 148 - Bad answers ident should be "IO"
ok 149 - Bad answers message should be correct
ok 150 - _readline should work
ok 151 - _readline should return undef when unattended
ok 152 - Localied string should be valid UTF-8
ok 153 - Localied string should be decoded
ok 154 - Localied string should be valid UTF-8
ok 155 - Localied string should be decoded
ok 156 - no warnings
ok
t/blank.t ..........
1..34
ok 1 - require App::Sqitch::Plan::Blank;
ok 2 - App::Sqitch::Plan::Blank->can(...)
ok 3 - The object isa App::Sqitch::Plan::Blank
ok 4 - The object isa App::Sqitch::Plan::Line
ok 5 - Name should format as ""
ok 6 - should stringify to ""
ok 7 - Create tag with more stuff
ok 8 - It should stringify correctly
ok 9 - Create a blank with newlines and backslashes in the note
ok 10 - The newlines and backslashe should not be escaped
ok 11 - The newlines and backslahs should be escaped by format_note
ok 12 - Create a blank with escapes
ok 13 - Note shoud be unescaped
ok 14 - Should trim Leading newlines from note
ok 15 - Should trim Leading line feeds from note
ok 16 - Should trim Trailing newlines from note
ok 17 - Should trim trailing line feeds from note
ok 18 - Should trim Leading and trailing vertical space from note
ok 19 - Should trim Laeading and trailing newlines but not spaces from note
ok 20 - Should have localized not prompt
ok 21 - First arg to run() should be editor
ok 22 - Temp file should exist
ok 23 - Temp file contents should include prompt
ok 24 - Should get exception for no note text
ok 25 - No note error ident should be "plan"
ok 26 - No note error message should be correct
ok 27 - Exit val should be 1
ok 28 - First arg to run() should be editor
ok 29 - Temp file should exist
ok 30 - Temp file contents should include prompt
ok 31 - Request note
ok 32 - Should have the edited note
ok 33 - The request should not prompt again
ok 34 - no warnings
ok
t/bundle.t .........
1..132
ok 1 - Load a sqitch object
ok 2 - bundle command isa App::Sqitch::Command::bundle
ok 3 - App::Sqitch::Command::bundle->can(...)
ok 4 - Should have dest_dir option
ok 5 - Default dest_dir should be bundle/
ok 6 - Should have dest top dir
ok 7 - Default config should be empty
ok 8 - --dest_dir should be converted to a path object by configure()
ok 9 - --from and --to should be passed through configure
ok 10 - Load a sqitch object with top_dir
ok 11 - bundle.dest_dir config should be converted to a path object by configure()
ok 12 - another bundle command isa App::Sqitch::Command::bundle
ok 13 - dest_dir should be "_build\sql"
ok 14 - Dest top dir should be _build/sql/sql/
ok 15 - Dest deploy dir should be _build/sql/sql/deploy
ok 16 - Dest revert dir should be _build/sql/sql/revert
ok 17 - Dest verify dir should be _build/sql/sql/verify
ok 18 - Load a sqitch object with pg top_dir
ok 19 - pg bundle command isa App::Sqitch::Command::bundle
ok 20 - dest_dir should again be "_build\sql"
ok 21 - Dest deploy dir should be _build/sql/pg/deploy
ok 22 - Dest revert dir should be _build/sql/pg/revert
ok 23 - Dest verify dir should be _build/sql/pg/verify
ok 24 - Path delete.me should not exist
ok 25 - Create delete.me
ok 26 - Path delete.me should now exist
ok 27 - The mkdir info should have been output
ok 28 - Create delete.me again
ok 29 - Path delete.me should still exist
ok 30 - Nothing should have been emitted
ok 31 - Should fail on permission issue
ok 32 - Permission error should have ident "bundle"
ok 33 - The permission error should be formatted properly
ok 34 - File delete.me\deploy\roles.sql should not exist
ok 35 - Copy sql\deploy\roles.sql to delete.me\deploy\roles.sql
ok 36 - File delete.me\deploy\roles.sql should now exist
ok 37 - delete.me\deploy\roles.sql and sql\deploy\roles.sql contents are the same
ok 38 - The mkdir and copy info should have been output
ok 39 - Copy sql\deploy\roles.sql to delete.me\deploy\roles.sql again
ok 40 - File delete.me\deploy\roles.sql should still exist
ok 41 - delete.me\deploy\roles.sql and sql\deploy\roles.sql contents are the same
ok 42 - Should have debugging output
ok 43 - Copy sql\deploy\roles.sql to old delete.me\deploy\roles.sql
ok 44 - File delete.me\deploy\roles.sql should still be there
ok 45 - delete.me\deploy\roles.sql and sql\deploy\roles.sql contents are the same
ok 46 - Only copy message should again have been emitted
ok 47 - Copy sql\deploy\users.sql to delete.me\deploy\roles.sql
ok 48 - File delete.me\deploy\roles.sql should now exist
ok 49 - delete.me\deploy\roles.sql and sql\deploy\users.sql contents are the same
ok 50 - Again only Copy message should have been emitted
ok 51 - Should get exception when source file does not exist
ok 52 - Nonexistent file error ident should be "bundle"
ok 53 - Nonexistent file error message should be correct
ok 54 - Should get exception when copy returns false
ok 55 - Copy fail ident should be "bundle"
ok 56 - Copy fail error message should be correct
ok 57 - _build\sql\sqitch.conf does not exist
ok 58 - Bundle the config file
ok 59 - _build\sql\sqitch.conf exists
ok 60 - _build\sql\sqitch.conf and sqitch.conf contents are the same
ok 61 - Should have config notice
ok 62 - _build\sql\pg\sqitch.plan does not exist
ok 63 - Bundle the plan file
ok 64 - _build\sql\pg\sqitch.plan exists
ok 65 - _build\sql\pg\sqitch.plan and pg\sqitch.plan contents are the same
ok 66 - Should have plan notice
ok 67 - --from bundle command isa App::Sqitch::Command::bundle
ok 68 - From should be "widgets"
ok 69 - Bundle the plan file with --from
ok 70 - Statement of the bits written should have been emitted
ok 71 - Plan should have written only "widgets"
ok 72 - --to bundle command isa App::Sqitch::Command::bundle
ok 73 - To should be "users"
ok 74 - Bundle the plan file with --to
ok 75 - Statement of the bits written should have been emitted
ok 76 - Plan should have written only "users" and its tags
ok 77 - _build\sql\pg\deploy\users.sql does not exist
ok 78 - _build\sql\pg\revert\users.sql does not exist
ok 79 - _build\sql\pg\deploy\widgets.sql does not exist
ok 80 - _build\sql\pg\revert\widgets.sql does not exist
ok 81 - _build\sql\pg\deploy\func\add_user.sql does not exist
ok 82 - _build\sql\pg\revert\func\add_user.sql does not exist
ok 83 - Load pg sqitch object
ok 84 - another bundle command isa App::Sqitch::Command::bundle
ok 85 - Bundle scripts
ok 86 - _build\sql\pg\deploy\users.sql exists
ok 87 - _build\sql\pg\revert\users.sql exists
ok 88 - _build\sql\pg\deploy\widgets.sql exists
ok 89 - _build\sql\pg\revert\widgets.sql exists
ok 90 - _build\sql\pg\deploy\func\add_user.sql exists
ok 91 - _build\sql\pg\revert\func\add_user.sql exists
ok 92 - Should have change notices
ok 93 - bundle from "widgets" isa App::Sqitch::Command::bundle
ok 94 - Bundle scripts
ok 95 - _build\sql\pg\deploy\users.sql does not exist
ok 96 - _build\sql\pg\revert\users.sql does not exist
ok 97 - _build\sql\pg\deploy\widgets.sql exists
ok 98 - _build\sql\pg\revert\widgets.sql exists
ok 99 - Should have only "widets" in change notices
ok 100 - bundle to "users" isa App::Sqitch::Command::bundle
ok 101 - Bundle scripts
ok 102 - _build\sql\pg\deploy\users.sql exists
ok 103 - _build\sql\pg\revert\users.sql exists
ok 104 - _build\sql\pg\deploy\widgets.sql does not exist
ok 105 - _build\sql\pg\revert\widgets.sql does not exist
ok 106 - Should have only "users" in change notices
ok 107 - Should die on nonexistent from change
ok 108 - Nonexistent from change ident should be "bundle"
ok 109 - Nonexistent from message change should be correct
ok 110 - Should die on nonexistent to change
ok 111 - Nonexistent to change ident should be "bundle"
ok 112 - Nonexistent to message change should be correct
ok 113 - _build\sql\sqitch.conf does not exist
ok 114 - _build\sql\pg\sqitch.plan does not exist
ok 115 - _build\sql\pg\deploy\users.sql does not exist
ok 116 - _build\sql\pg\revert\users.sql does not exist
ok 117 - _build\sql\pg\deploy\widgets.sql does not exist
ok 118 - _build\sql\pg\revert\widgets.sql does not exist
ok 119 - _build\sql\pg\deploy\func\add_user.sql does not exist
ok 120 - _build\sql\pg\revert\func\add_user.sql does not exist
ok 121 - another bundle command isa App::Sqitch::Command::bundle
ok 122 - Execute!
ok 123 - _build\sql\sqitch.conf exists
ok 124 - _build\sql\pg\sqitch.plan exists
ok 125 - _build\sql\pg\deploy\users.sql exists
ok 126 - _build\sql\pg\revert\users.sql exists
ok 127 - _build\sql\pg\deploy\widgets.sql exists
ok 128 - _build\sql\pg\revert\widgets.sql exists
ok 129 - _build\sql\pg\deploy\func\add_user.sql exists
ok 130 - _build\sql\pg\revert\func\add_user.sql exists
ok 131 - Should have all notices
ok 132 - no warnings
ok
t/change.t .........
1..85
ok 1 - require App::Sqitch::Plan::Change;
ok 2 - App::Sqitch::Plan::Change->can(...)
ok 3 - The object isa App::Sqitch::Plan::Change
ok 4 - The object isa App::Sqitch::Plan::Line
ok 5 - It should be a deploy change
ok 6 - It should not be a revert change
ok 7 - And it should say so
ok 8 - Timestamp isa App::Sqitch::DateTime
ok 9 - path_segments should have the file name
ok 10 - The deploy file should be correct
ok 11 - The revert file should be correct
ok 12 - The verify file should be correct
ok 13 - The change should not be reworked
ok 14 - path_segments should not include suffix
ok 15 - Add a rework tag
ok 16 - Reworked tag should be stored
ok 17 - The change should be reworked
ok 18 - path_segments should now include suffix
ok 19 - The change should not be reworked
ok 20 - Add two rework tags
ok 21 - The change should again be reworked
ok 22 - path_segments should now include the correct suffixc
ok 23 - Name should format as "foo"
ok 24 - Name should format with tags as "foo"
ok 25 - Dependencies should format as ""
ok 26 - Name should format with dependencies as "foo"
ok 27 - Name should format op without dependencies as "foo"
ok 28 - Change content should format correctly without dependencies
ok 29 - Planner name shoudld default to user name
ok 30 - Planner email shoudld default to user email
ok 31 - Planner name and email should format properly
ok 32 - should stringify to "foo" + planner
ok 33 - Since tag should be undef
ok 34 - Parent should be undef
ok 35 - Old change info should be correct
ok 36 - Old change ID should be correct
ok 37 - Change info should be correct
ok 38 - Change ID should be correct
ok 39 - Create change with more stuff
ok 40 - It should stringify correctly
ok 41 - It should not be a deploy change
ok 42 - It should be a revert change
ok 43 - It should say so
ok 44 - It should have a since tag
ok 45 - It should have a parent
ok 46 - Old info should not since tag
ok 47 - Info should include parent and dependencies
ok 48 - Should have no tags
ok 49 - Add a tag
ok 50 - Should have the tag
ok 51 - Should format name with tags
ok 52 - Add another tag
ok 53 - Should have both tags
ok 54 - Should format name with both tags
ok 55 - Planner name and email should format properly
ok 56 - Dependencies should format as "[foo bar @baz !dr_evil]"
ok 57 - Name should format with dependencies as "yo/howdy [foo bar @baz !dr_evil]"
ok 58 - Name should format op with dependencies as "yo/howdy [foo bar @baz !dr_evil]"
ok 59 - Change content should format correctly with dependencies
ok 60 - path_segments should include directories
ok 61 - The deploy file should include the suffix
ok 62 - The revert file should include the suffix
ok 63 - The verify file should include the suffix
ok 64 - Create change "baz"
ok 65 - Create change "bar"
ok 66 - Get deploy handle
ok 67 - It should be the deploy file
ok 68 - Get revert handle
ok 69 - It should be the revert file
ok 70 - Get verify handle
ok 71 - It should be the verify file
ok 72 - Create a change with explicit requires and conflicts
ok 73 - requires should be set
ok 74 - conflicts should be set
ok 75 - Dependencies should include requires and conflicts
ok 76 - Should find changes for requires
ok 77 - Should find changes for conflicts
ok 78 - Create change with UTF-8 name
ok 79 - The name should be decoded text in old info
ok 80 - Old change ID should be hashed from encoded UTF-8
ok 81 - The name should be decoded text in info
ok 82 - Change ID should be hashed from encoded UTF-8
ok 83 - note_prompt() should work
ok 84 - note_prompt() should work
ok 85 - no warnings
ok
t/changelist.t .....
1..298
ok 1 - require App::Sqitch::Plan::ChangeList;
ok 2 - Count should be six
ok 3 - Changes should be in order
ok 4 - Items should be the same as changes
ok 5 - Tags should return the one tag
ok 6 - Should have foo at 0
ok 7 - Should have bar at 1
ok 8 - Should have yo1 at 2
ok 9 - Should have baz at 4
ok 10 - Should have yo2 at 5
ok 11 - Should not find "non"
ok 12 - Should not find "@non"
ok 13 - Should find foo at 0
ok 14 - Should find foo by ID at 0
ok 15 - Should find foo by old ID at 0
ok 16 - Should find bar at 1
ok 17 - Should find bar^ at 0
ok 18 - Should find bar~ at 2
ok 19 - Should find bar~~ at 3
ok 20 - Should not find bar~~~
ok 21 - Should find bar~2 at 3
ok 22 - Should find bar~3 at 4
ok 23 - Should find bar by ID at 1
ok 24 - Should find bar by old ID at 1
ok 25 - Should find @alpha at 2
ok 26 - Should find @alpha^ at 1
ok 27 - Should find @alpha^^ at 1
ok 28 - Should not find @alpha^^^
ok 29 - Should find @alpha by ID at 2
ok 30 - Should find @alpha by old ID at 2
ok 31 - Should find baz at 3
ok 32 - Should find baz by ID at 3
ok 33 - Should find baz by old ID at 3
ok 34 - Should not find baz^^^
ok 35 - Should not find baz^3 at 0
ok 36 - Should not find baz^4
ok 37 - Should find baz by ID^ at 2
ok 38 - Should find baz by old ID^ at 2
ok 39 - Should find @FIRST at 1
ok 40 - Should have no offset for @FIRST
ok 41 - Should find undef for @FIRST^
ok 42 - Offset should not be set
ok 43 - Should find @FIRST~ at 2
ok 44 - Should have offset 1 for @FIRST~
ok 45 - Should find @FIRST~~ at 3
ok 46 - Should have offset 2 for @FIRST~
ok 47 - Should not find @FIRST~~~
ok 48 - Offset should not be set
ok 49 - Should find @FIRST~2 at 3
ok 50 - Should have offset 2 for @FIRST~2
ok 51 - Should find @FIRST~3 at 4
ok 52 - Should have offset 3 for @FIRST~3
ok 53 - Should find @FIRST at 1
ok 54 - Should have no offset for @FIRST
ok 55 - Should find undef for @FIRST^
ok 56 - Offset should not be set
ok 57 - Should find @FIRST~ at 2
ok 58 - Should have offset 1 for @FIRST~
ok 59 - Should find @FIRST~~ at 3
ok 60 - Should have offset 2 for @FIRST~
ok 61 - Should not find @FIRST~~~
ok 62 - Offset should not be set
ok 63 - Should find @FIRST~2 at 3
ok 64 - Should have offset 2 for @FIRST~2
ok 65 - Should find @FIRST~3 at 4
ok 66 - Should have offset 3 for @FIRST~3
ok 67 - Should get bar for @FIRST
ok 68 - Should have no offset for @FIRST
ok 69 - Should get nothing for @FIRST^
ok 70 - Offset should not be set
ok 71 - Should get yo1 for @FIRST~
ok 72 - Should have offset 1 for @FIRST~
ok 73 - Should find bar for @FIRST
ok 74 - Should have no offset for @FIRST
ok 75 - Should find nothing for @FIRST^
ok 76 - Offset should not be set
ok 77 - Should find yo1 for @FIRST~
ok 78 - Should have offset 1 for @FIRST~
ok 79 - Should find @LAST at 2
ok 80 - Should have offset 0 for @LAST
ok 81 - Should find @LAST^ at 1
ok 82 - Should have offset 1 for @LAST^
ok 83 - Should find @LAST^^ at 1
ok 84 - Should have offset 2 for @LAST^^
ok 85 - Should not find @LAST^^^
ok 86 - Offset should not be set
ok 87 - Should find @LAST at 2
ok 88 - Should have offset 0 for @LAST
ok 89 - Should find @LAST^ at 1
ok 90 - Should have offset 1 for @LAST^
ok 91 - Should find @LAST^^ at 1
ok 92 - Should have offset 2 for @LAST^^
ok 93 - Should not find @LAST^^^
ok 94 - Offset should not be set
ok 95 - Should get yo1 for @LAST
ok 96 - Should have offset 0 for @LAST
ok 97 - should get bar for @LAST^
ok 98 - Should have offset 1 for @LAST^
ok 99 - should get nothing for @LAST~
ok 100 - Offset should not be set
ok 101 - Should find yo1 for @LAST
ok 102 - Should have offset 0 for @LAST
ok 103 - should find bar for @LAST^
ok 104 - Should have offset 1 for @LAST^
ok 105 - should find nothing for @LAST~
ok 106 - Offset should not be set
ok 107 - Should get multiple indexes error looking for index of "yo"
ok 108 - Multiple indexes error ident should be "plan"
ok 109 - Multiple indexes message should be correct
ok 110 - Should unknown tag error for invalid tag
ok 111 - Unknown tag error ident should be "plan"
ok 112 - Unknown taf message should be correct
ok 113 - Should get 2 for yo@alpha
ok 114 - Should get 1 for yo@alpha^
ok 115 - Should get 4 for yo@HEAD
ok 116 - Should get 3 for yo@HEAD^
ok 117 - Should get undef for yo@HEAD~
ok 118 - Should get undef for yo@HEAD~~
ok 119 - Should get 0 for foo@alpha
ok 120 - Should get 0 for foo@HEAD
ok 121 - Should get 0 for foo@ROOT
ok 122 - Should get undef for baz@alpha
ok 123 - Should get 3 for baz@HEAD
ok 124 - Should get 4 for @HEAD
ok 125 - Should get 0 for @ROOT
ok 126 - Should get 3 for @HEAD^
ok 127 - Should get undef for @HEAD~
ok 128 - Should get 1 for @ROOT~
ok 129 - Should get undef for @ROOT^
ok 130 - Should get foo for "foo"
ok 131 - Should get bar for "foo~"
ok 132 - Should get foo by ID
ok 133 - Should get foo by old ID
ok 134 - Should get bar for "bar"
ok 135 - Should get foo for "bar^"
ok 136 - Should get yo1 for "bar~"
ok 137 - Should get baz for "bar~~"
ok 138 - Should get yo2 for "bar~3"
ok 139 - Should get bar by ID
ok 140 - Should get bar by old ID
ok 141 - Should get "yo" by the @alpha tag ID
ok 142 - Should get "yo" by the @alpha tag old ID
ok 143 - Should get baz for "baz"
ok 144 - Should get baz by ID
ok 145 - Should get baz by old ID
ok 146 - Should get baz for "@HEAD^"
ok 147 - Should get yo1 for "@HEAD^^"
ok 148 - Should get bar for "@HEAD^3"
ok 149 - Should get foo for "@ROOT"
ok 150 - Should get yo1 for yo@alpha
ok 151 - Should get yo2 for yo@HEAD
ok 152 - Should get foo for foo@alpha
ok 153 - Should get foo for foo@HEAD
ok 154 - Should get undef for baz@alpha
ok 155 - Should get baz for baz@HEAD
ok 156 - Should get yo2 for "yo@HEAD"
ok 157 - Should get foo for "foo@ROOT"
ok 158 - Should find yo1 with "yo"
ok 159 - Should find yo1 with "yo@alpha"
ok 160 - Should find yo2 with yo@HEAD
ok 161 - Should find foo for "foo"
ok 162 - Should find foo for "foo@alpha"
ok 163 - Should find foo for "foo@HEAD"
ok 164 - Should find bar with "yo^"
ok 165 - Should find foo with "yo^^"
ok 166 - Should find foo with "yo^2"
ok 167 - Should find baz with "yo~"
ok 168 - Should find yo2 with "yo~~"
ok 169 - Should find yo2 with "yo~2"
ok 170 - Should find bar with "yo@alpha^"
ok 171 - Should find baz with "yo@alpha^"
ok 172 - Should find baz with yo@HEAD^
ok 173 - Should find baz with @HEAD^
ok 174 - Should find bar with @ROOT~^
ok 175 - Should get multiple indexes error looking for index of "yo"
ok 176 - Multiple indexes error ident should be "plan"
ok 177 - Multiple indexes message should be correct
ok 178 - Should unknown tag error for invalid tag
ok 179 - Unknown tag error ident should be "plan"
ok 180 - Unknown taf message should be correct
ok 181 - Push hi
ok 182 - Count should now be six
ok 183 - Changes should be in order with $hi at the end
ok 184 - Should find "hi" at index 5
ok 185 - Should find "hi" by ID at index 5
ok 186 - Should find "hi" by old ID at index 5
ok 187 - Index of @ROOT should still be 0
ok 188 - Index of @HEAD should now be 5
ok 189 - First index of "non" should be undef
ok 190 - First index of "foo" should be 0
ok 191 - First index of "foo~" should be 1
ok 192 - First index of "foo~~" should be 2
ok 193 - First index of "foo~3" should be 3
ok 194 - Should not find first index of "foo~~~"
ok 195 - First index of "foo" since @ROOT should be undef
ok 196 - First index of "bar" should be 1
ok 197 - First index of "yo" should be 2
ok 198 - First index of "yo" since @ROOT should be 2
ok 199 - First index of "baz" should be 3
ok 200 - First index of "baz^" should be 2
ok 201 - First index of "baz^^" should be 1
ok 202 - First index of "baz^3" should be 0
ok 203 - Should not find first index of "baz^^^"
ok 204 - First index of "yo" since "@alpha" should be 4
ok 205 - First index of "yo" since "baz" should be 4
ok 206 - First index of "yo^" since "baz" should be 4
ok 207 - First index of "yo~" since "baz" should be 5
ok 208 - Should get an exception for an unknown change passed to first_index_of()
ok 209 - Unknown change error ident should be "plan"
ok 210 - Unknown change message should be correct
ok 211 - Push so and fu
ok 212 - Count should now be eight
ok 213 - Index of @ROOT should remain 0
ok 214 - Index of @HEAD should now be 7
ok 215 - Changes should be in order with $so and $fu at the end
ok 216 - Index beta
ok 217 - Should find @beta at index 4
ok 218 - Should find yo2 via @beta
ok 219 - Should find yo2 via @beta ID
ok 220 - Should find yo2 via @beta old ID
ok 221 - Tags should return both tags
ok 222 - Should get 2 for last tagged index
ok 223 - Should find "yo" as last tagged
ok 224 - Should get 8 for count
ok 225 - Should find fu as last change
ok 226 - Should find last tagged index at 0
ok 227 - Should find last tagged at 0
ok 228 - Should get count 1
ok 229 - Should find last change at 0
ok 230 - Should find last tagged index at 1
ok 231 - Should find last tagged at 1
ok 232 - Should get count 2
ok 233 - Should find last change at 1
ok 234 - Should find last tagged index at 3
ok 235 - Should find last tagged at 3
ok 236 - Should get count 4
ok 237 - Should find last change at 3
ok 238 - Should find last tagged index at 4
ok 239 - Should find last tagged at 4
ok 240 - Should get count 5
ok 241 - Should find last change at 4
ok 242 - Should not find tag index in 0 changes
ok 243 - Should not find tag in 0 changes
ok 244 - Should find no change in empty plan
ok 245 - Should not find tag index in 2 changes
ok 246 - Should not find tag in 2 changes
ok 247 - Should not find tag index in 4 changes
ok 248 - Should not find tag in 4 changes
ok 249 - The object isa App::Sqitch::Plan::ChangeList
ok 250 - Should not find index of "foo" in empty list
ok 251 - Should not find first index of "foo" in empty list
ok 252 - Should get undef for "foo" in empty list
ok 253 - Should find undef for "foo" in empty list
ok 254 - Should not find index of "bar" in empty list
ok 255 - Should not find first index of "bar" in empty list
ok 256 - Should get undef for "bar" in empty list
ok 257 - Should find undef for "bar" in empty list
ok 258 - Should not find index of "HEAD" in empty list
ok 259 - Should not find first index of "HEAD" in empty list
ok 260 - Should get undef for "HEAD" in empty list
ok 261 - Should find undef for "HEAD" in empty list
ok 262 - Should not find index of "@HEAD" in empty list
ok 263 - Should not find first index of "@HEAD" in empty list
ok 264 - Should get undef for "@HEAD" in empty list
ok 265 - Should find undef for "@HEAD" in empty list
ok 266 - Should not find index of "ROOT" in empty list
ok 267 - Should not find first index of "ROOT" in empty list
ok 268 - Should get undef for "ROOT" in empty list
ok 269 - Should find undef for "ROOT" in empty list
ok 270 - Should not find index of "@ROOT" in empty list
ok 271 - Should not find first index of "@ROOT" in empty list
ok 272 - Should get undef for "@ROOT" in empty list
ok 273 - Should find undef for "@ROOT" in empty list
ok 274 - Should not find index of "alpha" in empty list
ok 275 - Should not find first index of "alpha" in empty list
ok 276 - Should get undef for "alpha" in empty list
ok 277 - Should find undef for "alpha" in empty list
ok 278 - Should not find index of "@alpha" in empty list
ok 279 - Should not find first index of "@alpha" in empty list
ok 280 - Should get undef for "@alpha" in empty list
ok 281 - Should find undef for "@alpha" in empty list
ok 282 - Should not find index of "FIRST" in empty list
ok 283 - Should not find first index of "FIRST" in empty list
ok 284 - Should get undef for "FIRST" in empty list
ok 285 - Should find undef for "FIRST" in empty list
ok 286 - Should not find index of "@FIRST" in empty list
ok 287 - Should not find first index of "@FIRST" in empty list
ok 288 - Should get undef for "@FIRST" in empty list
ok 289 - Should find undef for "@FIRST" in empty list
ok 290 - Should not find index of "LAST" in empty list
ok 291 - Should not find first index of "LAST" in empty list
ok 292 - Should get undef for "LAST" in empty list
ok 293 - Should find undef for "LAST" in empty list
ok 294 - Should not find index of "@LAST" in empty list
ok 295 - Should not find first index of "@LAST" in empty list
ok 296 - Should get undef for "@LAST" in empty list
ok 297 - Should find undef for "@LAST" in empty list
ok 298 - no warnings
ok
t/command.t ........
1..96
ok 1 - use App::Sqitch::Command;
ok 2 - App::Sqitch::Command->can(...)
ok 3 - Load a sqitch sqitch object
ok 4 - Should get an exception for missing sqitch param
ok 5 - Should get an exception for array sqitch param
ok 6 - Should get an exception for string sqitch param
ok 7 - The object isa App::Sqitch::Command
ok 8 - Should get empty hash for no config or options
ok 9 - Should get config with no options
ok 10 - Options should override config
ok 11 - Options keys should have dashes changed to underscores
ok 12 - Load a "whu" command
ok 13 - The object isa App::Sqitch::Command::whu
ok 14 - The sqitch attribute should be set
ok 15 - Load a "whu" command with "foo" config
ok 16 - The "foo" attribute should be set
ok 17 - Should exit
ok 18 - Invalid command error ident should be "config"
ok 19 - Should get proper mesage for invalid command
ok 20 - Should have exitval of 1
ok 21 - No command should yield usage
ok 22 - No args should be passed to usage
ok 23 - Should die on bad command module
ok 24 - Load a "whu" command with "--feathers" optin
ok 25 - The "feathers" attribute should be set
ok 26 - Load an "add" command
ok 27 - It isa App::Sqitch::Command::add
ok 28 - command() should return hyphenated name
ok 29 - App::Sqitch::Command->can('execute')
ok 30 - Create a App::Sqitch::Command object
ok 31 - Base class command should be ""
ok 32 - Base object command should be ""
ok 33 - Should get an error calling execute on command base class
ok 34 - Execute exception ident should be "DEV"
ok 35 - The execute() error message should be correct
ok 36 - Create a subclass command object
ok 37 - Subclass oject command should be "whu"
ok 38 - Subclass class command should be "whu"
ok 39 - Should get an error for un-overridden execute() method
ok 40 - Un-overidden execute() exception ident should be "DEV"
ok 41 - The unoverridden execute() error message should be correct
ok 42 - App::Sqitch::Command->can(...)
ok 43 - Create a App::Sqitch::Command object again
ok 44 - Base _parse_opts should return an empty hash
ok 45 - Create a subclass command object again
ok 46 - Subclass should return an empty hash for no args
ok 47 - Subclass should use options spec
ok 48 - Subclass should parse options spec
ok 49 - Args array should be cleared of options
ok 50 - Should get warning for unknown option
ok 51 - Should call _pod2usage on options parse failure
ok 52 - Good command object isa App::Sqitch::Command::good
ok 53 - Should get warning for unknown option when there are no options
ok 54 - Should call _pod2usage on no options parse failure
ok 55 - Call _pod2usage on base object
ok 56 - Default params should be passed to Pod::Usage
ok 57 - Call _pod2usage on "whu" command object
ok 58 - Default params should be passed to Pod::Usage
ok 59 - Config command object isa App::Sqitch::Command::config
ok 60 - Call _pod2usage on "config" command object
ok 61 - Should find sqitch-config docs to pass to Pod::Usage
ok 62 - Good command object isa App::Sqitch::Command::good
ok 63 - Call _pod2usage on "good" command object
ok 64 - Should find App::Sqitch::Command::good docs to pass to Pod::Usage
ok 65 - App::Sqitch::Command::good->can('usage')
ok 66 - Should find App::Sqitch::Command::good docs to pass to Pod::Usage
ok 67 - App::Sqitch::Command->can('verbosity')
ok 68 - Verbosity should be from sqitch
ok 69 - Verbosity should change with sqitch
ok 70 - trace should work
ok 71 - Should get no trace output for verbosity 2
ok 72 - trace_literal should work
ok 73 - Should get no trace_literal output for verbosity 2
ok 74 - debug should work
ok 75 - Should get no debug output for verbosity 1
ok 76 - debug_literal should work
ok 77 - Should get no debug_literal output for verbosity 1
ok 78 - info should work
ok 79 - Should get no info output for verbosity 0
ok 80 - info_literal should work
ok 81 - Should get no info_literal output for verbosity 0
ok 82 - comment should work
ok 83 - comment should work with verbosity 0
ok 84 - comment_literal should work
ok 85 - comment_literal should work with verbosity 0
ok 86 - emit should work
ok 87 - emit should work even with verbosity 0
ok 88 - emit_literal should work
ok 89 - emit_literal should work even with verbosity 0
ok 90 - warn should work
ok 91 - warn_literal should work
ok 92 - threw Regexp ((?-xism:EXITED: 2))
ok 93 - usage should work
ok 94 - threw Regexp ((?-xism:EXITED: 2))
ok 95 - usage should prefer sqitch-$command-usage
ok 96 - no warnings
ok
t/config.t .........
1..344
ok 1 - use App::Sqitch;
ok 2 - Load a sqitch object
ok 3 - Config command isa App::Sqitch::Command::config
ok 4 - Config command isa App::Sqitch::Command
ok 5 - App::Sqitch::Command::config->can(...)
ok 6 - Options should be configured
ok 7 - Construct with user and system
ok 8 - Should get error for multiple config files
ok 9 - Construct with user and local
ok 10 - Should get error for multiple config files
ok 11 - Construct with file and system
ok 12 - Should get another error for multiple config files
ok 13 - Construct with file and user
ok 14 - Should get a third error for multiple config files
ok 15 - Construct with file, system, and user
ok 16 - Should get one last error for multiple config files
ok 17 - Construct with bool and num
ok 18 - Should get error for multiple types
ok 19 - Construct with int and num
ok 20 - Should get another error for multiple types
ok 21 - Construct with int and bool
ok 22 - Should get a third error for multiple types
ok 23 - Construct with int, num, and bool
ok 24 - Should get one last error for multiple types
ok 25 - Construct with get & unset
ok 26 - Should get error for multiple actions
ok 27 - Construct with get & unset & edit
ok 28 - Should get error for multiple actions
ok 29 - Construct with get & unset & edit & list
ok 30 - Should get error for multiple actions
ok 31 - Construct with unset & edit
ok 32 - Should get error for multiple actions
ok 33 - Construct with unset & edit & list
ok 34 - Should get error for multiple actions
ok 35 - Construct with edit & list
ok 36 - Should get error for multiple actions
ok 37 - Construct with edit & add & list
ok 38 - Should get error for multiple actions
ok 39 - Construct with edit & add & list & get_all
ok 40 - Should get error for multiple actions
ok 41 - Construct with edit & add & list & get_regex
ok 42 - Should get error for multiple actions
ok 43 - Construct with edit & add & list & unset_all
ok 44 - Should get error for multiple actions
ok 45 - Construct with edit & add & list & get_all & unset_all
ok 46 - Should get error for multiple actions
ok 47 - Construct with edit & list & remove_section
ok 48 - Should get error for multiple actions
ok 49 - Construct with edit & list & remove_section & rename_section
ok 50 - Should get error for multiple actions
ok 51 - Default context should be local context
ok 52 - Default action should be undef
ok 53 - Default context should be undef
ok 54 - Local context should be local
ok 55 - User context should be user
ok 56 - System context should be system
ok 57 - Create config set command
ok 58 - Execute the set command
ok 59 - The set method should have been called
ok 60 - Execute the get command
ok 61 - The get method should have been called
ok 62 - Create config get-all command
ok 63 - An action with a dash should have triggered a method with an underscore
ok 64 - Create config get command
ok 65 - Get core.engine
ok 66 - Should have emitted the merged core.engine
ok 67 - Get core.pg.host
ok 68 - Should have emitted the merged core.pg.host
ok 69 - Get core.pg.client
ok 70 - Should have emitted the merged core.pg.client
ok 71 - Should get usage for missing get key
ok 72 - And the missing get key should trigger a usage message
ok 73 - Should get usage for invalid get key
ok 74 - And the invalid get key should trigger a usage message
ok 75 - Create config get int command
ok 76 - Get revert.count as int
ok 77 - Should have emitted the revert count
ok 78 - Get revert.revision as int
ok 79 - Should have emitted the revert revision as an int
ok 80 - Get bundle.tags_only as an int should fail
ok 81 - Int cast exception ident should be "config"
ok 82 - Create config get num command
ok 83 - Get revert.count as num
ok 84 - Should have emitted the revert count
ok 85 - Get revert.revision as num
ok 86 - Should have emitted the revert revision as an num
ok 87 - Get bundle.tags_only as an num should fail
ok 88 - Num cast exception ident should be "config"
ok 89 - Create config get bool command
ok 90 - Should get failure for invalid bool int
ok 91 - Bool int cast exception ident should be "config"
ok 92 - Should get failure for invalid bool num
ok 93 - Bool num cast exception ident should be "config"
ok 94 - Get bundle.tags_only as bool
ok 95 - Should have emitted bundle.tags_only as a bool
ok 96 - Create config get bool-or-int command
ok 97 - Get revert.count as bool-or-int
ok 98 - Should have emitted the revert count as an int
ok 99 - Get revert.revision as bool-or-int
ok 100 - Should have emitted the revert revision as an int
ok 101 - Get bundle.tags_only as bool-or-int
ok 102 - Should have emitted bundle.tags_only as a bool
ok 103 - Create system config get command
ok 104 - Get system core.engine
ok 105 - Should have emitted the system core.engine
ok 106 - Get system core.pg.client
ok 107 - Should have emitted the system core.pg.client
ok 108 - Attempt to get core.pg.host should fail
ok 109 - Error ident should be "config"
ok 110 - Error Message should be empty
ok 111 - Error exitval should be 1
ok 112 - Nothing should have been emitted
ok 113 - Create user config get command
ok 114 - Get user core.pg.host
ok 115 - Should have emitted the user core.pg.host
ok 116 - Get user core.pg.client
ok 117 - Should have emitted the user core.pg.client
ok 118 - Create local config get command
ok 119 - Get local core.pg.db_name
ok 120 - Should have emitted the local core.pg.db_name
ok 121 - Get local core.engine
ok 122 - Should have emitted the local core.engine
ok 123 - Create another system config get command
ok 124 - There should be no system config file
ok 125 - Should fail when no system config file
ok 126 - Error ident should be "config"
ok 127 - Error Message should be empty
ok 128 - Error exitval should be 1
ok 129 - Create another user config get command
ok 130 - There should be no user config file
ok 131 - Should fail when no user config file
ok 132 - Error ident should be "config"
ok 133 - Error Message should be empty
ok 134 - Error exitval should be 1
ok 135 - Create another local config get command
ok 136 - There should be no local config file
ok 137 - Should fail when no local config file
ok 138 - Error ident should be "config"
ok 139 - Error Message should be empty
ok 140 - Error exitval should be 1
ok 141 - Create config list command
ok 142 - Execute the list action
ok 143 - Should have emitted the merged config
ok 144 - Create system config list command
ok 145 - List the system config
ok 146 - Should have emitted the system config list
ok 147 - Create user config list command
ok 148 - List the user config
ok 149 - Should only have emitted the user config list
ok 150 - Create local config list command
ok 151 - List the local config
ok 152 - Should only have emitted the local config list
ok 153 - Create system config list command with no file
ok 154 - List the system config
ok 155 - Nothing should have been emitted
ok 156 - Create user config list command with no file
ok 157 - List the user config
ok 158 - Nothing should have been emitted
ok 159 - Create system config set command
ok 160 - Write core.foo
ok 161 - The property should have been written
ok 162 - Write core.engine
ok 163 - Both settings should be saved
ok 164 - Write core.pg.user
ok 165 - Both sections should be saved
ok 166 - Should set usage for missing set key
ok 167 - And the missing set key should trigger a usage message
ok 168 - Should set usage for invalid set key
ok 169 - And the invalid set key should trigger a usage message
ok 170 - Should set usage for missing set value
ok 171 - And the missing set value should trigger a usage message
ok 172 - Create system config add command
ok 173 - Add to core.foo
ok 174 - The value should have been added to the property
ok 175 - Should add usage for missing add key
ok 176 - And the missing add key should trigger a usage message
ok 177 - Should add usage for invalid add key
ok 178 - And the invalid add key should trigger a usage message
ok 179 - Should add usage for missing add value
ok 180 - And the missing add value should trigger a usage message
ok 181 - Create system config add command
ok 182 - Get core.engine with regex
ok 183 - Should have emitted value
ok 184 - Get core.foo with regex
ok 185 - Should have emitted value
ok 186 - Attempt to get core.foo with non-matching regex should fail
ok 187 - Error ident should be "config"
ok 188 - Error Message should be empty
ok 189 - Error exitval should be 1
ok 190 - Nothing should have been emitted
ok 191 - Create system config get_all command
ok 192 - Call get_all on core.engine
ok 193 - The engine should have been emitted
ok 194 - Get all core.engine with regex
ok 195 - Should have emitted value
ok 196 - Call get_all on core.foo
ok 197 - Both foos should have been emitted
ok 198 - Call get_all on core.foo with regex
ok 199 - Both foos should have been emitted
ok 200 - Call get_all on core.foo with limiting regex
ok 201 - Only the one foo should have been emitted
ok 202 - Attempt to get_all core.foo with non-matching regex should fail
ok 203 - Error ident should be "config"
ok 204 - Error Message should be empty
ok 205 - Error exitval should be 1
ok 206 - Nothing should have been emitted
ok 207 - Should get_all usage for missing get_all key
ok 208 - And the missing get_all key should trigger a usage message
ok 209 - Should get_all usage for invalid get_all key
ok 210 - And the invalid get_all key should trigger a usage message
ok 211 - Create config get_all int command
ok 212 - Get revert.count as int
ok 213 - Should have emitted the revert count
ok 214 - Get revert.revision as int
ok 215 - Should have emitted the revert revision as an int
ok 216 - Get bundle.tags_only as an int should fail
ok 217 - Int cast exception ident should be "config"
ok 218 - Create config get_all num command
ok 219 - Get revert.count as num
ok 220 - Should have emitted the revert count
ok 221 - Get revert.revision as num
ok 222 - Should have emitted the revert revision as an num
ok 223 - Get bundle.tags_only as an num should fail
ok 224 - Num cast exception ident should be "config"
ok 225 - Create config get_all bool command
ok 226 - Should get failure for invalid bool int
ok 227 - Bool int cast exception ident should be "config"
ok 228 - Should get failure for invalid bool num
ok 229 - Num int cast exception ident should be "config"
ok 230 - Get bundle.tags_only as bool
ok 231 - Should have emitted bundle.tags_only as a bool
ok 232 - Create config get_all bool-or-int command
ok 233 - Get revert.count as bool-or-int
ok 234 - Should have emitted the revert count as an int
ok 235 - Get revert.revision as bool-or-int
ok 236 - Should have emitted the revert revision as an int
ok 237 - Get bundle.tags_only as bool-or-int
ok 238 - Should have emitted bundle.tags_only as a bool
ok 239 - Create system config get_regex command
ok 240 - Call get_regex on core\..+
ok 241 - Should match all core options
ok 242 - Call get_regex on core\.pg\..+
ok 243 - Should match all core.pg options
ok 244 - Call get_regex on core\.pg\..+ and value regex
ok 245 - Should match all core.pg options that match
ok 246 - Attempt to get_regex core.foo with non-matching regex should fail
ok 247 - Error ident should be "config"
ok 248 - Error Message should be empty
ok 249 - Error exitval should be 1
ok 250 - Nothing should have been emitted
ok 251 - Should get_regex usage for missing get_regex key
ok 252 - And the missing get_regex key should trigger a usage message
ok 253 - Should get_regex usage for invalid get_regex key
ok 254 - And the invalid get_regex key should trigger a usage message
ok 255 - Create config get_regex int command
ok 256 - Get revert.count as int
ok 257 - Should have emitted the revert count
ok 258 - Get revert.revision as int
ok 259 - Should have emitted the revert revision as an int
ok 260 - Get bundle.tags_only as an int should fail
ok 261 - Int cast exception ident should be "config"
ok 262 - Create config get_regex num command
ok 263 - Get revert.count as num
ok 264 - Should have emitted the revert count
ok 265 - Get revert.revision as num
ok 266 - Should have emitted the revert revision as an num
ok 267 - Get bundle.tags_only as an num should fail
ok 268 - Num cast exception ident should be "config"
ok 269 - Create config get_regex bool command
ok 270 - Should get failure for invalid bool int
ok 271 - Bool int cast exception ident should be "config"
ok 272 - Should get failure for invalid bool num
ok 273 - Num int cast exception ident should be "config"
ok 274 - Get bundle.tags_only as bool
ok 275 - Should have emitted bundle.tags_only as a bool
ok 276 - Create config get_regex bool-or-int command
ok 277 - Get revert.count as bool-or-int
ok 278 - Should have emitted the revert count as an int
ok 279 - Get revert.revision as bool-or-int
ok 280 - Should have emitted the revert revision as an int
ok 281 - Get bundle.tags_only as bool-or-int
ok 282 - Should have emitted bundle.tags_only as a bool
ok 283 - Create system config unset command
ok 284 - Unset core.pg.user
ok 285 - core.pg.user should be gone
ok 286 - Unset core.engine
ok 287 - core.engine should have been removed
ok 288 - Should get failure trying to delete multivalue key
ok 289 - Multiple value exception ident should be "config"
ok 290 - And it should have the proper error message
ok 291 - Unset core.foo with a regex
ok 292 - The core.foo "baz" value should have been removed
ok 293 - Should unset usage for missing unset key
ok 294 - And the missing unset key should trigger a usage message
ok 295 - Should unset usage for invalid unset key
ok 296 - And the invalid unset key should trigger a usage message
ok 297 - Create system config unset-all command
ok 298 - Unset-all core.foo
ok 299 - core.foo should have been removed
ok 300 - Unset-all core.foo with regex
ok 301 - core.foo should have one value left
ok 302 - Should unset_all usage for missing unset_all key
ok 303 - And the missing unset_all key should trigger a usage message
ok 304 - Should unset_all usage for invalid unset_all key
ok 305 - And the invalid unset_all key should trigger a usage message
ok 306 - Create system config replace-all command
ok 307 - Replace all core.bar
ok 308 - core.bar should have all its values with one value
ok 309 - Replace all core.bar matching /^ba/
ok 310 - core.foo should have had the matching values replaced
ok 311 - Create system config rename-section command
ok 312 - Rename "core" to "funk"
ok 313 - core.foo should have become funk.foo
ok 314 - Should fail with no new name
ok 315 - Message should be in the usage call
ok 316 - Should fail with bad old name
ok 317 - Message should be in the usage call
ok 318 - Should fail with bad new name
ok 319 - Message should be in the usage call
ok 320 - Should fail with invalid section
ok 321 - Invalid section exception ident should be "config"
ok 322 - Invalid section exception message should be set
ok 323 - Create system config remove-section command
ok 324 - Remove "func" section
ok 325 - The "funk" section should be gone
ok 326 - Should fail with no name
ok 327 - Message should be in the usage call
ok 328 - Should fail with invalid name
ok 329 - Invalid key name exception ident should be "config"
ok 330 - And the invalid key message should be set
ok 331 - Should fail fetching multi-value key
ok 332 - Multi-value key exception ident should be "config"
ok 333 - The multiple value error should be thrown
ok 334 - Should fail setting multi-value key
ok 335 - Mult-valkue key exception ident should be "config"
ok 336 - The multi-value key error should be thrown
ok 337 - Create system config edit command
ok 338 - Execute the edit comand
ok 339 - The editor should have been run
ok 340 - Load a new sqitch object
ok 341 - Create system config set command with subdirectory config file path
ok 342 - Set "my.foo" in subdirectory config file
ok 343 - The file should have been written
ok 344 - no warnings
ok
t/configuration.t ..
1..17
ok 1 - use App::Sqitch::Config;
ok 2 - New config object isa App::Sqitch::Config
ok 3 - confname should be "sqitch.conf"
ok 4 # skip System dir can be modified at build time
ok 5 - Default user directory should be correct
ok 6 - Default global file name should be correct
ok 7 - Should preferably get SQITCH_SYSTEM_CONFIG file from global_file
ok 8 - system_file should alias global_file
ok 9 - Default user file name should be correct
ok 10 - Should preferably get SQITCH_USER_CONFIG file from user_file
ok 11 - Local file should be correct
ok 12 - dir_file should alias local_file
ok 13 - local_file should prefer $SQITCH_CONFIG
ok 14 - And so should dir_file
ok 15 - get_section("core") should work
ok 16 - get_section("core.pg") should work
ok 17 - no warnings
ok
t/datetime.t .......
1..33
ok 1 - require App::Sqitch::DateTime;
ok 2 - Construct a datetime object
ok 3 - as_string_formats should be correct
ok 4 - Date format "full" should yield "Thursday, February 21, 2013 9:09:16 PM America/Los_Angeles"
ok 5 - Format "full" should be valid
ok 6 - Date format "long" should yield "February 21, 2013 9:09:16 PM PST"
ok 7 - Format "long" should be valid
ok 8 - Date format "medium" should yield "Feb 21, 2013 9:09:16 PM"
ok 9 - Format "medium" should be valid
ok 10 - Date format "short" should yield "2/21/13 9:09 PM"
ok 11 - Format "short" should be valid
ok 12 - Date format "raw" should yield "2013-02-22T05:09:16Z"
ok 13 - Format "raw" should be valid
ok 14 - Date format "" should yield "2013-02-22T05:09:16Z"
ok 15 - Date format "iso" should yield "2013-02-21 21:09:16 -0800"
ok 16 - Format "iso" should be valid
ok 17 - Date format "iso8601" should yield "2013-02-21 21:09:16 -0800"
ok 18 - Format "iso8601" should be valid
ok 19 - Date format "rfc" should yield "Thu, 21 Feb 2013 21:09:16 -0800"
ok 20 - Format "rfc" should be valid
ok 21 - Date format "rfc2822" should yield "Thu, 21 Feb 2013 21:09:16 -0800"
ok 22 - Format "rfc2822" should be valid
ok 23 - Date format "cldr:HH'h' mm'm'" should yield "21h 09m"
ok 24 - Format "cldr:HH'h' mm'm'" should be valid
ok 25 - Date format "strftime:%a at %H:%M:%S" should yield "Thu at 21:09:16"
ok 26 - Format "strftime:%a at %H:%M:%S" should be valid
ok 27 - Should get error for invalid date format
ok 28 - Invalid date format error ident should be "datetime"
ok 29 - Invalid date format error message should be correct
ok 30 - Should get error for invalid as_string format param
ok 31 - Invalid date format error ident should be "datetime"
ok 32 - Invalid date format error message should be correct
ok 33 - no warnings
ok
t/depend.t .........
1..326
ok 1 - require App::Sqitch::Plan::Depend;
ok 2 - Load a sqitch sqitch object
ok 3 - App::Sqitch::Plan::Depend->can(...)
ok 4 - Construct "foo"
ok 5 - Constructed should stringify as "foo"
ok 6 - Constructed should have key name "foo"
ok 7 - Constructed should plan stringify as "foo"
ok 8 - Parse "foo"
ok 9 - Parsed should plan stringify as "foo"
ok 10 - "foo" should be required
ok 11 - "foo" should not be conflicting
ok 12 - "foo" type should be "require"
ok 13 - Should not have got project from "foo"
ok 14 - Should have project "depend" for "foo"
ok 15 - "foo" should not be external
ok 16 - "foo" should be internal
ok 17 - Should not have got ID from "foo"
ok 18 - Construct "bar"
ok 19 - Constructed should stringify as "bar"
ok 20 - Constructed should have key name "bar"
ok 21 - Constructed should plan stringify as "bar"
ok 22 - Parse "bar"
ok 23 - Parsed should plan stringify as "bar"
ok 24 - "bar" should be required
ok 25 - "bar" should not be conflicting
ok 26 - "bar" type should be "require"
ok 27 - Should not have got project from "bar"
ok 28 - Should have project "depend" for "bar"
ok 29 - "bar" should not be external
ok 30 - "bar" should be internal
ok 31 - Should not have got ID from "bar"
ok 32 - Construct "@bar"
ok 33 - Constructed should stringify as "@bar"
ok 34 - Constructed should have key name "@bar"
ok 35 - Constructed should plan stringify as "@bar"
ok 36 - Parse "@bar"
ok 37 - Parsed should plan stringify as "@bar"
ok 38 - "@bar" should be required
ok 39 - "@bar" should not be conflicting
ok 40 - "@bar" type should be "require"
ok 41 - Should not have got project from "@bar"
ok 42 - Should have project "depend" for "@bar"
ok 43 - "@bar" should not be external
ok 44 - "@bar" should be internal
ok 45 - Should not have got ID from "@bar"
ok 46 - Construct "!foo"
ok 47 - Constructed should stringify as "foo"
ok 48 - Constructed should have key name "foo"
ok 49 - Constructed should plan stringify as "!foo"
ok 50 - Parse "!foo"
ok 51 - Parsed should plan stringify as "!foo"
ok 52 - "!foo" should be conflicting
ok 53 - "!foo" should not be required
ok 54 - "!foo" type should be "conflict"
ok 55 - Should not have got project from "!foo"
ok 56 - Should have project "depend" for "!foo"
ok 57 - "!foo" should not be external
ok 58 - "!foo" should be internal
ok 59 - Should not have got ID from "!foo"
ok 60 - Construct "!@bar"
ok 61 - Constructed should stringify as "@bar"
ok 62 - Constructed should have key name "@bar"
ok 63 - Constructed should plan stringify as "!@bar"
ok 64 - Parse "!@bar"
ok 65 - Parsed should plan stringify as "!@bar"
ok 66 - "!@bar" should be conflicting
ok 67 - "!@bar" should not be required
ok 68 - "!@bar" type should be "conflict"
ok 69 - Should not have got project from "!@bar"
ok 70 - Should have project "depend" for "!@bar"
ok 71 - "!@bar" should not be external
ok 72 - "!@bar" should be internal
ok 73 - Should not have got ID from "!@bar"
ok 74 - Construct "foo@bar"
ok 75 - Constructed should stringify as "foo@bar"
ok 76 - Constructed should have key name "foo@bar"
ok 77 - Constructed should plan stringify as "foo@bar"
ok 78 - Parse "foo@bar"
ok 79 - Parsed should plan stringify as "foo@bar"
ok 80 - "foo@bar" should be required
ok 81 - "foo@bar" should not be conflicting
ok 82 - "foo@bar" type should be "require"
ok 83 - Should not have got project from "foo@bar"
ok 84 - Should have project "depend" for "foo@bar"
ok 85 - "foo@bar" should not be external
ok 86 - "foo@bar" should be internal
ok 87 - Should not have got ID from "foo@bar"
ok 88 - Construct "!foo@bar"
ok 89 - Constructed should stringify as "foo@bar"
ok 90 - Constructed should have key name "foo@bar"
ok 91 - Constructed should plan stringify as "!foo@bar"
ok 92 - Parse "!foo@bar"
ok 93 - Parsed should plan stringify as "!foo@bar"
ok 94 - "!foo@bar" should be conflicting
ok 95 - "!foo@bar" should not be required
ok 96 - "!foo@bar" type should be "conflict"
ok 97 - Should not have got project from "!foo@bar"
ok 98 - Should have project "depend" for "!foo@bar"
ok 99 - "!foo@bar" should not be external
ok 100 - "!foo@bar" should be internal
ok 101 - Should not have got ID from "!foo@bar"
ok 102 - Construct "proj:foo"
ok 103 - Constructed should stringify as "proj:foo"
ok 104 - Constructed should have key name "foo"
ok 105 - Constructed should plan stringify as "proj:foo"
ok 106 - Parse "proj:foo"
ok 107 - Parsed should plan stringify as "proj:foo"
ok 108 - "proj:foo" should be required
ok 109 - "proj:foo" should not be conflicting
ok 110 - "proj:foo" type should be "require"
ok 111 - Should have got project from "proj:foo"
ok 112 - Should have project "proj" for "proj:foo"
ok 113 - "proj:foo" should be external
ok 114 - "proj:foo" should not be internal
ok 115 - Should not have got ID from "proj:foo"
ok 116 - Construct "!proj:foo"
ok 117 - Constructed should stringify as "proj:foo"
ok 118 - Constructed should have key name "foo"
ok 119 - Constructed should plan stringify as "!proj:foo"
ok 120 - Parse "!proj:foo"
ok 121 - Parsed should plan stringify as "!proj:foo"
ok 122 - "!proj:foo" should be conflicting
ok 123 - "!proj:foo" should not be required
ok 124 - "!proj:foo" type should be "conflict"
ok 125 - Should have got project from "!proj:foo"
ok 126 - Should have project "proj" for "!proj:foo"
ok 127 - "!proj:foo" should be external
ok 128 - "!proj:foo" should not be internal
ok 129 - Should not have got ID from "!proj:foo"
ok 130 - Construct "proj:@foo"
ok 131 - Constructed should stringify as "proj:@foo"
ok 132 - Constructed should have key name "@foo"
ok 133 - Constructed should plan stringify as "proj:@foo"
ok 134 - Parse "proj:@foo"
ok 135 - Parsed should plan stringify as "proj:@foo"
ok 136 - "proj:@foo" should be required
ok 137 - "proj:@foo" should not be conflicting
ok 138 - "proj:@foo" type should be "require"
ok 139 - Should have got project from "proj:@foo"
ok 140 - Should have project "proj" for "proj:@foo"
ok 141 - "proj:@foo" should be external
ok 142 - "proj:@foo" should not be internal
ok 143 - Should not have got ID from "proj:@foo"
ok 144 - Construct "!proj:@foo"
ok 145 - Constructed should stringify as "proj:@foo"
ok 146 - Constructed should have key name "@foo"
ok 147 - Constructed should plan stringify as "!proj:@foo"
ok 148 - Parse "!proj:@foo"
ok 149 - Parsed should plan stringify as "!proj:@foo"
ok 150 - "!proj:@foo" should be conflicting
ok 151 - "!proj:@foo" should not be required
ok 152 - "!proj:@foo" type should be "conflict"
ok 153 - Should have got project from "!proj:@foo"
ok 154 - Should have project "proj" for "!proj:@foo"
ok 155 - "!proj:@foo" should be external
ok 156 - "!proj:@foo" should not be internal
ok 157 - Should not have got ID from "!proj:@foo"
ok 158 - Construct "proj:foo@bar"
ok 159 - Constructed should stringify as "proj:foo@bar"
ok 160 - Constructed should have key name "foo@bar"
ok 161 - Constructed should plan stringify as "proj:foo@bar"
ok 162 - Parse "proj:foo@bar"
ok 163 - Parsed should plan stringify as "proj:foo@bar"
ok 164 - "proj:foo@bar" should be required
ok 165 - "proj:foo@bar" should not be conflicting
ok 166 - "proj:foo@bar" type should be "require"
ok 167 - Should have got project from "proj:foo@bar"
ok 168 - Should have project "proj" for "proj:foo@bar"
ok 169 - "proj:foo@bar" should be external
ok 170 - "proj:foo@bar" should not be internal
ok 171 - Should not have got ID from "proj:foo@bar"
ok 172 - Construct "!proj:foo@bar"
ok 173 - Constructed should stringify as "proj:foo@bar"
ok 174 - Constructed should have key name "foo@bar"
ok 175 - Constructed should plan stringify as "!proj:foo@bar"
ok 176 - Parse "!proj:foo@bar"
ok 177 - Parsed should plan stringify as "!proj:foo@bar"
ok 178 - "!proj:foo@bar" should be conflicting
ok 179 - "!proj:foo@bar" should not be required
ok 180 - "!proj:foo@bar" type should be "conflict"
ok 181 - Should have got project from "!proj:foo@bar"
ok 182 - Should have project "proj" for "!proj:foo@bar"
ok 183 - "!proj:foo@bar" should be external
ok 184 - "!proj:foo@bar" should not be internal
ok 185 - Should not have got ID from "!proj:foo@bar"
ok 186 - Construct "9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 187 - Constructed should stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 188 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 189 - Constructed should plan stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 190 - Parse "9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 191 - Parsed should plan stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 192 - "9ed961ad7902a67fe0804c8e49e8993719fd5065" should be required
ok 193 - "9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be conflicting
ok 194 - "9ed961ad7902a67fe0804c8e49e8993719fd5065" type should be "require"
ok 195 - Should not have got project from "9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 196 - Should have undef project for "9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 197 - "9ed961ad7902a67fe0804c8e49e8993719fd5065" should be external
ok 198 - "9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be internal
ok 199 - Should have got ID from "9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 200 - Construct "!9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 201 - Constructed should stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 202 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 203 - Constructed should plan stringify as "!9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 204 - Parse "!9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 205 - Parsed should plan stringify as "!9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 206 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065" should be conflicting
ok 207 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be required
ok 208 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065" type should be "conflict"
ok 209 - Should not have got project from "!9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 210 - Should have undef project for "!9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 211 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065" should be external
ok 212 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be internal
ok 213 - Should have got ID from "!9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 214 - Construct "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 215 - Constructed should stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 216 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 217 - Constructed should plan stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 218 - Parse "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 219 - Parsed should plan stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 220 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should be required
ok 221 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be conflicting
ok 222 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" type should be "require"
ok 223 - Should have got project from "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 224 - Should have project "foo" for "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 225 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should be external
ok 226 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be internal
ok 227 - Should have got ID from "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 228 - Construct "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 229 - Constructed should stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 230 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 231 - Constructed should plan stringify as "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 232 - Parse "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 233 - Parsed should plan stringify as "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 234 - "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should be conflicting
ok 235 - "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be required
ok 236 - "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" type should be "conflict"
ok 237 - Should have got project from "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 238 - Should have project "foo" for "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 239 - "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should be external
ok 240 - "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be internal
ok 241 - Should have got ID from "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065"
ok 242 - Construct "9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 243 - Constructed should stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 244 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 245 - Constructed should plan stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 246 - Parse "9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 247 - Parsed should plan stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 248 - "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should be required
ok 249 - "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should not be conflicting
ok 250 - "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" type should be "require"
ok 251 - Should not have got project from "9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 252 - Should have project "depend" for "9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 253 - "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should not be external
ok 254 - "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should be internal
ok 255 - Should not have got ID from "9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 256 - Construct "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 257 - Constructed should stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 258 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 259 - Constructed should plan stringify as "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 260 - Parse "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 261 - Parsed should plan stringify as "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 262 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should be conflicting
ok 263 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should not be required
ok 264 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" type should be "conflict"
ok 265 - Should not have got project from "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 266 - Should have project "depend" for "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 267 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should not be external
ok 268 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should be internal
ok 269 - Should not have got ID from "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 270 - Construct "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 271 - Constructed should stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 272 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 273 - Constructed should plan stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 274 - Parse "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 275 - Parsed should plan stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 276 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should be required
ok 277 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should not be conflicting
ok 278 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" type should be "require"
ok 279 - Should have got project from "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 280 - Should have project "foo" for "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 281 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should be external
ok 282 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should not be internal
ok 283 - Should not have got ID from "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what"
ok 284 - Should fail to parse "foo bar"
ok 285 - Should fail to parse "foo+@bar"
ok 286 - Should fail to parse "foo:+bar"
ok 287 - Should fail to parse "foo@bar+"
ok 288 - Should fail to parse "proj:foo@bar+"
ok 289 - Should get exception for no change or tag
ok 290 - No change or tag error ident should be "DEV"
ok 291 - No change or tag error message should be correct
ok 292 - Should get an error for ID + change
ok 293 - ID + change error ident ident should be "DEV"
ok 294 - ID + change error message should be correct
ok 295 - Should get an error for ID + tag
ok 296 - ID + tag error ident ident should be "DEV"
ok 297 - ID + tag error message should be correct
ok 298 - Should get an error for ID + change and tag
ok 299 - ID + change and tag error ident ident should be "DEV"
ok 300 - ID + change and tag error message should be correct
ok 301 - Create "roles" dependency
ok 302 - Should find the "roles" ID in the plan
ok 303 - The "roles" change should not be external
ok 304 - The "roles" change should be internal
ok 305 - Create "elsewhere:roles" dependency
ok 306 - The "elsewhere:roles" id should be undef
ok 307 - The "elsewhere:roles" change should be external
ok 308 - The "elsewhere:roles" change should not be internal
ok 309 - Create depend using external ID
ok 310 - The external ID should be set
ok 311 - The external ID should register as external
ok 312 - The external ID should not register as internal
ok 313 - Create depend using "roles" ID
ok 314 - The "roles" ID should be set
ok 315 - The "roles" ID should not register as external
ok 316 - The "roles" ID should register as internal
ok 317 - Create "nonexistent" dependency
ok 318 - Should get error for nonexistent change
ok 319 - Nonexistent change error ident should be "plan"
ok 320 - Nonexistent change error message should be correct
ok 321 - Create depend without ID
ok 322 - Resolved ID should be undef
ok 323 - Set resolved ID
ok 324 - Resolved ID should be set
ok 325 - Unset resolved ID
ok 326 - Resolved ID should be undef again
ok
t/deploy.t .........
ok 1 - require App::Sqitch::Command::deploy;
ok 2 - The class isa App::Sqitch::Command
ok 3 - App::Sqitch::Command::deploy->can(...)
ok 4 - Options should be correct
ok 5 - Should have default configuration with no config or opts
ok 6 - Should have mode, verify, set, and log-only options
ok 7 - Should have mode and verify configuration
ok 8 - Should have merged variables
ok 9 - The object isa App::Sqitch::Command::deploy
ok 10 - Should pick up variables from configuration
ok 11 - The object isa App::Sqitch::Command::deploy
ok 12 - to_target should be undef
ok 13 - mode should be "all"
ok 14 - Execute to "@alpha"
ok 15 - "@alpha" "all", and 0 should be passed to the engine
ok 16 - Execute
ok 17 - undef, "all", and 0 should be passed to the engine
ok 18 - Object with to, mode, log_only, and variables isa App::Sqitch::Command::deploy
ok 19 - Execute again
ok 20 - Engine should verify
ok 21 - "foo", "tag", and 1 should be passed to the engine
ok 22 - Vars should have been passed through to the engine
ok 23 - "all" should be a valid mode
ok 24 - "tag" should be a valid mode
ok 25 - "change" should be a valid mode
ok 26 - "foo" should not be a valid mode
ok 27 - "bad" should not be a valid mode
ok 28 - "gar" should not be a valid mode
1..28
ok
t/engine.t .........
1..546
ok 1 - use App::Sqitch::Engine;
ok 2 - App::Sqitch::Engine->can(...)
ok 3 - Load a sqitch sqitch object
ok 4 - Should get an exception for missing sqitch param
ok 5 - Should get an exception for array sqitch param
ok 6 - Should get an exception for string sqitch param
ok 7 - The object isa App::Sqitch::Engine
ok 8 - Load a "whu" engine
ok 9 - The object isa App::Sqitch::Engine::whu
ok 10 - The sqitch attribute should be set
ok 11 - Should die on invalid engine
ok 12 - Should get load error message
ok 13 - Should have relevant previoius exception
ok 14 - No engine should die
ok 15 - It should be the expected message
ok 16 - Should die on bad engine module
ok 17 - Should get another load error message
ok 18 - Should have relevant previoius exception from the bad module
ok 19 - App::Sqitch::Engine->can('name')
ok 20 - Create a App::Sqitch::Engine object
ok 21 - Base class name should be ""
ok 22 - Base object name should be ""
ok 23 - Create a subclass name object
ok 24 - Subclass oject name should be "whu"
ok 25 - Subclass class name should be "whu"
ok 26 - App::Sqitch::Engine->can('config_vars')
ok 27 - Should have no config vars in engine base class
ok 28 - App::Sqitch::Engine->can(...)
ok 29 - Should have no variables
ok 30 - Add a variable
ok 31 - Should have the variable
ok 32 - Set more variables
ok 33 - Should have all of the variables
ok 34 - Should again have no variables
ok 35 - Create a App::Sqitch::Engine object again
ok 36 - Should get an unimplemented exception from initialized()
ok 37 - Should get an unimplemented exception from initialize()
ok 38 - Should get an unimplemented exception from register_project()
ok 39 - Should get an unimplemented exception from run_file()
ok 40 - Should get an unimplemented exception from run_handle()
ok 41 - Should get an unimplemented exception from log_deploy_change()
ok 42 - Should get an unimplemented exception from log_fail_change()
ok 43 - Should get an unimplemented exception from log_revert_change()
ok 44 - Should get an unimplemented exception from log_new_tags()
ok 45 - Should get an unimplemented exception from is_deployed_tag()
ok 46 - Should get an unimplemented exception from is_deployed_change()
ok 47 - Should get an unimplemented exception from are_deployed_changes()
ok 48 - Should get an unimplemented exception from change_id_for()
ok 49 - Should get an unimplemented exception from changes_requiring_change()
ok 50 - Should get an unimplemented exception from earliest_change_id()
ok 51 - Should get an unimplemented exception from latest_change_id()
ok 52 - Should get an unimplemented exception from deployed_changes()
ok 53 - Should get an unimplemented exception from deployed_changes_since()
ok 54 - Should get an unimplemented exception from load_change()
ok 55 - Should get an unimplemented exception from name_for_change_id()
ok 56 - Should get an unimplemented exception from current_state()
ok 57 - Should get an unimplemented exception from current_changes()
ok 58 - Should get an unimplemented exception from current_tags()
ok 59 - Should get an unimplemented exception from search_events()
ok 60 - Should get an unimplemented exception from registered_projects()
ok 61 - Should get an unimplemented exception from change_offset_from_id()
ok 62 - App::Sqitch::Engine->can('_load_changes')
ok 63 - Should load changes with no change
ok 64 - Should load changes with undef
ok 65 - Should load changes with no tags
ok 66 - Should load changes with multiple hashes with no tags
ok 67 - Should load changes with tags
ok 68 - Should load changes with tags with leading @
ok 69 - Should load changes with multiple hashes with tags
ok 70 - Should load changes with reworked change
ok 71 - Should load changes with reworked change & multiple tags
ok 72 - Should load changes with doubly reworked change
ok 73 - Create a subclass name object again
ok 74 - App::Sqitch::Engine::whu->can(...)
ok 75 - Deploy a change
ok 76 - deploy_change should have called the proper methods
ok 77 - Output should reflect the deployment
ok 78 - Output should reflect success
ok 79 - Only log a change
ok 80 - log-only deploy_change should not have called run_file
ok 81 - Output should reflect the logging
ok 82 - Output should reflect deploy success
ok 83 - Enable verification
ok 84 - Deploy a change to be verified
ok 85 - deploy_change with verification should run the verify file
ok 86 - Output should reflect the logging
ok 87 - Output should reflect deploy success
ok 88 - Verify and log a change
ok 89 - deploy_change with verification and log-only should not run deploy
ok 90 - Output should reflect the logging
ok 91 - Output should reflect deploy success
ok 92 - Deploy change with error
ok 93 - Error should be from run_file
ok 94 - Should have logged change failure
ok 95 - Output should reflect the deployment, even with failure
ok 96 - Output should reflect deploy failure
ok 97 - Deploy change with failed verification
ok 98 - Error should be from deploy_change
ok 99 - Should have logged verify failure
ok 100 - Output should reflect the deployment, even with verify failure
ok 101 - Output should reflect deploy failure
ok 102 - Verify error should have been vented
ok 103 - Deploy a change with no verify script
ok 104 - deploy_change with no verify file should not run it
ok 105 - Output should reflect the logging
ok 106 - Output should reflect deploy success
ok 107 - A warning about no verify file should have been emitted
ok 108 - Revert a change
ok 109 - revert_change should have called the proper methods
ok 110 - Output should reflect reversion
ok 111 - Output should acknowldge revert success
ok 112 - Revert a change with log-only
ok 113 - Log-only revert_change should not have run the change script
ok 114 - Output should reflect logged reversion
ok 115 - Output should acknowldge revert success
ok 116 - Engine with sqitch with plan file
ok 117 - Should get proper change from latest_change()
ok 118 - Latest change ID should have been called with no arg
ok 119 - Should again get proper change from latest_change()
ok 120 - Latest change ID should have been called with offset arg
ok 121 - Should get proper change from earliest_change()
ok 122 - Earliest change ID should have been called with no arg
ok 123 - Should again get proper change from earliest_change()
ok 124 - Earliest change ID should have been called with offset arg
ok 125 - App::Sqitch::Engine->can('_sync_plan')
ok 126 - Plan should start at position -1
ok 127 - start_at should be undef
ok 128 - Sync the plan
ok 129 - Plan should still be at position -1
ok 130 - start_at should still be undef
ok 131 - Should not have updated IDs
ok 132 - Sync the plan again
ok 133 - Plan should again be at position -1
ok 134 - start_at should again be undef
ok 135 - Still should not have updated IDs
ok 136 - Sync the plan to a tag
ok 137 - Plan should now be at position 1
ok 138 - start_at should now be widgets@beta
ok 139 - Should have updated IDs
ok 140 - App::Sqitch::Engine->can('deploy')
ok 141 - Deploy to @alpha
ok 142 - Plan should be at position 1
ok 143 - Should have deployed through @alpha
ok 144 - Should have called _deploy_all()
ok 145 - Should have seen the output of the deploy to @alpha
ok 146 - Both change names should be output
ok 147 - Log-only deploy in $mode mode to @alpha
ok 148 - Plan should be at position 1
ok 149 - Should have deployed through @alpha without running files
ok 150 - Should have called _deploy_by_change()
ok 151 - Should have seen the output of the deploy to @alpha
ok 152 - Both change names should be output
ok 153 - Log-only deploy in $mode mode to @alpha
ok 154 - Plan should be at position 1
ok 155 - Should have deployed through @alpha without running files
ok 156 - Should have called _deploy_by_tag()
ok 157 - Should have seen the output of the deploy to @alpha
ok 158 - Both change names should be output
ok 159 - Log-only deploy in $mode mode to @alpha
ok 160 - Plan should be at position 1
ok 161 - Should have deployed through @alpha without running files
ok 162 - Should have called _deploy_all()
ok 163 - Should have seen the output of the deploy to @alpha
ok 164 - Both change names should be output
ok 165 - Deploy to @alpha with tag mode
ok 166 - Plan should again be at position 1
ok 167 - Should have deployed through @alpha without initialization
ok 168 - Should have called _deploy_by_tag()
ok 169 - Should have seen the output of the deploy to @alpha
ok 170 - Both change names should be output
ok 171 - Should get an error for an unknown target
ok 172 - The exception should report the unknown target
ok 173 - Only latest_item() should have been called
ok 174 - Deploy to alpha thrice
ok 175 - Only latest_item() should have been called
ok 176 - Should notify user that already at @alpha
ok 177 - Should fail targeting older change
ok 178 - Should be a "deploy" error
ok 179 - It should suggest using "revert"
ok 180 - Should have called latest_item() and latest_tag()
ok 181 - Deploy everything by change
ok 182 - Plan should be at position 3
ok 183 - Should have deployed everything
ok 184 - Should have called _deploy_by_change()
ok 185 - Should have emitted deploy announcement and successes
ok 186 - Should have seen the output of the deploy to the end
ok 187 - Should catch exception for attempt to deploy to up-to-date DB
ok 188 - Should be a "deploy" error
ok 189 - And the message should reflect up-to-dateness
ok 190 - It should have just fetched the latest change ID
ok 191 - Should fail on invalid mode
ok 192 - Should be a "deploy" error
ok 193 - And the message should reflect the unknown mode
ok 194 - It should have check for initialization
ok 195 - Should have announced destination
ok 196 - Engine with sqitch with no file
ok 197 - Should die with no changes
ok 198 - Should have the localized message
ok 199 - It should have checked for the latest item
ok 200 - Deploy changewise to index 1
ok 201 - Should changewise deploy to index 2
ok 202 - Should have seen output of each change
ok 203 - Output should reflect deploy successes
ok 204 - Deploy changewise to index 2
ok 205 - Should changewise deploy to from index 2 to index 3
ok 206 - Should have seen output of changes 2-3
ok 207 - Output should reflect deploy successes
ok 208 - Die in _deploy_by_change
ok 209 - It should have died in run_file
ok 210 - It should have logged the failure
ok 211 - Should have seen output for first change
ok 212 - Output should reflect deploy failure
ok 213 - Deploy tagwise to index 1
ok 214 - Should tagwise deploy to index 1
ok 215 - Should have seen output of each change
ok 216 - Output should reflect deploy successes
ok 217 - Deploy tagwise to index 3
ok 218 - Should tagwise deploy from index 2 to index 3
ok 219 - Should have seen output of changes 3-3
ok 220 - Output should reflect deploy successes
ok 221 - Die in log_deploy_change
ok 222 - Should get final deploy failure message
ok 223 - It should have reverted back to the last deployed tag
ok 224 - Should have seen deploy and revert messages (excluding curry revert)
ok 225 - Output should reflect deploy successes and failure
ok 226 - The original error should have been vented
ok 227 - Die in _deploy_by_tag again
ok 228 - Should again get final deploy failure message
ok 229 - Should have logged back to the beginning
ok 230 - Should have seen deploy and revert messages
ok 231 - Output should reflect deploy successes and failure
ok 232 - Should have one vented message
ok 233 - And it should be the underlying error
ok 234 - And it should had notified that all changes were reverted
ok 235 - Die in _deploy_by_tag yet again
ok 236 - Should die "Deploy failed" again
ok 237 - Should have reverted back to last tag
ok 238 - Should have user change reversion messages
ok 239 - Output should reflect deploy successes and failure
ok 240 - Should see underlying error and reversion message
ok 241 - Die in _deploy_by_tag again
ok 242 - Should once again get final deploy failure message
ok 243 - Should have tried to revert one change
ok 244 - Should have seen revert message
ok 245 - Output should reflect deploy successes and failure
ok 246 - Should get reversion failure message
ok 247 - Deploy all to index 1
ok 248 - Should tagwise deploy to index 1
ok 249 - Should have seen output of each change
ok 250 - Output should reflect deploy successes
ok 251 - Deploy tagwise to index 2
ok 252 - Should tagwise deploy to from index 1 to index 2
ok 253 - Should have seen output of changes 3-4
ok 254 - Output should reflect deploy successe
ok 255 - Die in _deploy_all
ok 256 - Should get final deploy failure message
ok 257 - It should have logged up to the failure
ok 258 - Should have seen deploy and revert messages excluding revert for failed logging
ok 259 - Output should reflect deploy successes and failures
ok 260 - The original error should have been vented
ok 261 - Die in _deploy_all again
ok 262 - Should again get final deploy failure message
ok 263 - Should have reveted all changes and tags
ok 264 - Should see all changes revert
ok 265 - Output should reflect deploy successes and failures
ok 266 - Should notifiy user of error and rollback
ok 267 - Die in _deploy_all on the last change
ok 268 - Should once again get final deploy failure message
ok 269 - Should have deployed to dr_evil and revered down to @alpha
ok 270 - Should see changes revert back to @alpha
ok 271 - Output should reflect deploy successes and failures
ok 272 - Should notifiy user of error and rollback to @alpha
ok 273 - Test is_deployed(tag)
ok 274 - It should have called is_deployed_tag()
ok 275 - Test is_deployed(change)
ok 276 - It should have called is_deployed_change()
ok 277 - App::Sqitch::Engine::whu->can('deploy_change')
ok 278 - Deploy a change
ok 279 - It should have been deployed
ok 280 - Should have shown change name
ok 281 - Output should reflect deploy success
ok 282 - Shuld die on deploy failure
ok 283 - Should be told the deploy failed
ok 284 - It should failed to have been deployed
ok 285 - Should have vented the original error
ok 286 - Should have shown change name
ok 287 - Output should reflect deploy failure
ok 288 - App::Sqitch::Engine::whu->can('revert_change')
ok 289 - Revert the change
ok 290 - It should have been reverted
ok 291 - Should have shown reverted change name
ok 292 - And the revert failure should be "ok"
ok 293 - App::Sqitch::Engine::whu->can('revert')
ok 294 - Should get exception for no changes to revert
ok 295 - Should be a revert exception
ok 296 - Should have notified that there is nothing to revert
ok 297 - Exit val should be 1
ok 298 - It should only have called deployed_changes()
ok 299 - Nothing should have been output
ok 300 - Revert should die on unknown change
ok 301 - Should be another "revert" error
ok 302 - The message should mention it is an unknown target
ok 303 - Should have called change_id_for() with change name
ok 304 - Nothing should have been output
ok 305 - Revert should die on unknown change ID
ok 306 - Should be another "revert" error
ok 307 - The message should mention it is an unknown target
ok 308 - Shoudl have called change_id_for() with change ID
ok 309 - Nothing should have been output
ok 310 - Revert should die on undeployed change
ok 311 - Should be another "revert" error
ok 312 - The message should mention that the target is not deployed
ok 313 - change_id_for
ok 314 - Nothing should have been output
ok 315 - Should get error reverting when no subsequent changes
ok 316 - No subsequent change error ident should be "revert"
ok 317 - No subsequent change error exitval should be 1
ok 318 - No subsequent change error message should be correct
ok 319 - Should have called change_id_for and deployed_changes_since
ok 320 - Should get error for known but undeployed change
ok 321 - No changes error should be "revert"
ok 322 - No changes exitval should be 1
ok 323 - No changes message should be correct
ok 324 - Should have called deployed_changes
ok 325 - Revert all changes
ok 326 - Should have reverted the changes in reverse order
ok 327 - Should have prompted to revert all changes
ok 328 - It should have said it was reverting all changes and listed them
ok 329 - And the revert successes should be emitted
ok 330 - Revert all changes log-only
ok 331 - Log-only Should have reverted the changes in reverse order
ok 332 - Log-only should have prompted to revert all changes
ok 333 - It should have said it was reverting all changes and listed them
ok 334 - And the revert successes should be emitted
ok 335 - Should abort declined revert
ok 336 - Declined revert ident should be "revert"
ok 337 - Should have exited with value 1
ok 338 - Should have exited with proper message
ok 339 - Should have called deployed_changes only
ok 340 - Should have prompt to revert all changes
ok 341 - It should have emitted nothing else
ok 342 - Revert all changes with no prompt
ok 343 - Should have reverted the changes in reverse order
ok 344 - Should have no prompt
ok 345 - It should have said it was reverting all changes and listed them
ok 346 - And the revert successes should be emitted
ok 347 - Revert to @alpha
ok 348 - Should have reverted only changes after @alpha
ok 349 - Should have prompt to revert to target
ok 350 - Output should show what it reverts to
ok 351 - And the revert successes should be emitted
ok 352 - Should abort declined revert to @alpha
ok 353 - Declined revert ident should be "revert"
ok 354 - Should have exited with value 1
ok 355 - Should have exited with proper message
ok 356 - Should have called revert methods
ok 357 - Should have prompt to revert to @alpha
ok 358 - It should have emitted nothing else
ok 359 - Revert to @HEAD^
ok 360 - Should have reverted one changes for @HEAD^
ok 361 - Should have no prompt
ok 362 - Output should show what it reverts to
ok 363 - And the header and "ok" should be emitted
ok 364 - App::Sqitch::Engine->can('change_id_for_depend')
ok 365 - Should get error from change_id_for_depend when change not in plan
ok 366 - Should get ident "plan" from change_id_for_depend
ok 367 - Should have proper message from change_id_for_depend error
ok 368 - Should get error from change_id_for_depend when no ID
ok 369 - Should get ident "engine" when no ID
ok 370 - Should have proper messag from change_id_for_depend error
ok 371 - Get a change id
ok 372 - Should have passed dependency params to change_id_for()
ok 373 - App::Sqitch::Engine->can('find_change')
ok 374 - find_change() should work
ok 375 - Its parameters should have been passed to change_id_for and change_offset_from_id
ok 376 - find_change() should work
ok 377 - Project and offset should have been passed off
ok 378 - App::Sqitch::Engine->can('verify_change')
ok 379 - Verify a change
ok 380 - The change file should have been run
ok 381 - Should have no info output
ok 382 - Verify a change with no verify script.
ok 383 - No abstract methods should be called
ok 384 - Should have no info output
ok 385 - A warning about no verify file should have been emitted
ok 386 - App::Sqitch::Engine::whu->can('check_deploy_dependencies')
ok 387 - All planned changes should be okay
ok 388 - Should have called are_deployed_changes
ok 389 - Dependencies should check out even when within those to be deployed
ok 390 - Resolved ID should be populated
ok 391 - Conflict should throw exception
ok 392 - Should be a "deploy" error
ok 393 - Should have localized message about the local conflict
ok 394 - Conflict should throw exception
ok 395 - Should be a "deploy" error
ok 396 - Should have localized message about conflicts
ok 397 - Should have called change_id_for() twice
ok 398 - Conflicting dependencies should have no resolved IDs
ok 399 - Conflict should throw another exception
ok 400 - Should be a "deploy" error
ok 401 - Should have localized message about all three conflicts
ok 402 - Should have called change_id_for() twice
ok 403 - Conflicting dependencies should have no resolved IDs
ok 404 - Missing dependencies should throw exception
ok 405 - Should be another "deploy" error
ok 406 - Should have localized message missing dependencies
ok 407 - Should have called check_requires
ok 408 - Missing requirements should not have resolved
ok 409 - Missing dependencies should throw exception
ok 410 - Should be another "deploy" error
ok 411 - Should have localized conflicts and required error messages
ok 412 - Should have called check_requires
ok 413 - Missing requirements should not have resolved
ok 414 - App::Sqitch::Engine::whu->can('check_revert_dependencies')
ok 415 - Should get error reverting change another depend on
ok 416 - Dependent error ident should be "revert"
ok 417 - Dependent error message should be correct
ok 418 - It should have check for requiring changes
ok 419 - Should get error reverting change others depend on
ok 420 - Dependent error ident should be "revert"
ok 421 - Dependent error message should be correct
ok 422 - It should have check for requiring changes
ok 423 - Should get error reverting change others depend on
ok 424 - Dependent error ident should be "revert"
ok 425 - Dependent error message should be correct
ok 426 - It should have checked twice for requiring changes
ok 427 - App::Sqitch::Engine::whu->can('_trim_to')
ok 428 - _trim_to should complain about a nonexistent change key
ok 429 - _trim_to nonexistent key error ident should be "foo"
ok 430 - _trim_to nonexistent key error message should be correct
ok 431 - _trim_to should complain about an undeployed change key
ok 432 - _trim_to undeployed change error ident should be "yep"
ok 433 - _trim_to undeployed change error message should be correct
ok 434 - _trim_to should complain about an unplanned change key
ok 435 - _trim_to unplanned change error ident should be "oop"
ok 436 - _trim_to unplanned change error message should be correct
ok 437 - _trim_to should find "roles" at index 0
ok 438 - Changes should be untrimmed
ok 439 - _trim_to should find "widgets" at index 2
ok 440 - First two changes should be shifted off
ok 441 - _trim_to should find "dr_evil" at last index
ok 442 - Changes should be untrimmed
ok 443 - _trim_to should find "tacos" at index 4
ok 444 - Last two changes should be popped off
ok 445 - _trim_to should find "@HEAD" at index 2
ok 446 - First two changes should be shifted off
ok 447 - _trim_to should find "@ROOT" at index 2
ok 448 - All but First three changes should be popped off
ok 449 - App::Sqitch::Engine::whu->can('_verify_changes')
ok 450 - Verify of a single change should return errcount 0
ok 451 - Declared output should list the change
ok 452 - Emitted Output should reflect the verification of the change
ok 453 - Should have no comments
ok 454 - The verify script should have been run
ok 455 - Verify of another single change should return errcount 0
ok 456 - Declared output should list the change
ok 457 - Emitted Output should reflect the verification of the change
ok 458 - Should have no comments
ok 459 - A warning about no verify file should have been emitted
ok 460 - The verify script should not have been run
ok 461 - Verify of two changes should return errcount 0
ok 462 - Declared output should list both changes
ok 463 - Emitted Output should reflect the verification of the changes
ok 464 - Should have no comments
ok 465 - A warning about no verify file should have been emitted
ok 466 - Only one verify script should have been run
ok 467 - Verify of two changes and show pending
ok 468 - Delcared output should list deployed changes
ok 469 - Emitted output should include list of pending changes
ok 470 - Should have no comments
ok 471 - A warning about no verify file should have been emitted
ok 472 - Only one verify script should have been run
ok 473 - Verify of a change not in the plan should return errcount 1
ok 474 - Declared Output should reflect the verification of the change
ok 475 - Emitted Output should reflect the failure of the verify
ok 476 - Should have a comment about the change missing from the plan
ok 477 - No verify script should have been run
ok 478 - Verify of an out-of-order change should return errcount 1
ok 479 - Declared output should reflect the verification of the change
ok 480 - Emitted Output should reflect the failure of the verify
ok 481 - Should have a comment about the out-of-order change
ok 482 - The verify script should have been run
ok 483 - Verify of a change with 2 issues should return 2
ok 484 - Declared output should reflect the verification of the change
ok 485 - Emitted Output should reflect the failure of the verify
ok 486 - Should have comment about the out-of-order change and script failure
ok 487 - No abstract methods should have been called
ok 488 - Verify of 2 changes with 2 issues each should return 4
ok 489 - Declraed output should reflect the verification of both changes
ok 490 - Emitted Output should reflect the failure of both verifies
ok 491 - Should have comment about the out-of-order changes and script failures
ok 492 - No abstract methods should have been called
ok 493 - _verify_changes with two undeployed changes should returne 2
ok 494 - Listed changes should be both deployed and undeployed
ok 495 - Emitted Output should reflect 1 pass
ok 496 - Should have comments for undeployed changes
ok 497 - No abstract methods should have been called
ok 498 - App::Sqitch::Engine::whu->can('verify')
ok 499 - Should get error for no deployed changes
ok 500 - No deployed changes ident should be "verify"
ok 501 - No deployed changes exitval should be 1
ok 502 - No deployed changes message should be correct
ok 503 - Notification of the verify should be emitted
ok 504 - Should get error for no changes
ok 505 - No changes ident should be "verify"
ok 506 - No changes exitval should be 1
ok 507 - No changes message should be correct
ok 508 - Notification of the verify should be emitted
ok 509 - Should get error for no planned changes
ok 510 - No planned changes ident should be "verify"
ok 511 - No planned changes exitval should be 2
ok 512 - No planned changes message should be correct
ok 513 - Notification of the verify should be emitted
ok 514 - Verify one change
ok 515 - Notification of the verify should be emitted
ok 516 - The one change name should be declared
ok 517 - Success should be emitted
ok 518 - Should have no comments
ok 519 - Verify two changes
ok 520 - Notification of the verify should be emitted
ok 521 - The two change names should be declared
ok 522 - Both successes should be emitted
ok 523 - Should have no comments
ok 524 - Should have warning about missing verify script
ok 525 - Verify with a reworked change changes
ok 526 - Notification of the verify should be emitted
ok 527 - The two change names should be emitted
ok 528 - Both successes should be emitted
ok 529 - Should have no comments
ok 530 - Should have no warnings
ok 531 - Verify two specific changes
ok 532 - Notification of the verify should be emitted
ok 533 - The two change names should be emitted
ok 534 - Both successes should be emitted
ok 535 - Should have no comments
ok 536 - Should have warning about missing verify script
ok 537 - Should get failure for failing verify scripts
ok 538 - Failed verify ident should be "verify"
ok 539 - Failed verify exitval should be 2
ok 540 - Faield verify message should be correct
ok 541 - Notification of the verify should be emitted
ok 542 - Both change names should be declared
ok 543 - Output should include the failure report
ok 544 - Should have the errors in comments
ok 545 - Nothing should have been vented
ok 546 - no warnings
ok
t/help.t ...........
1..11
ok 1 - Load a sqitch sqitch object
ok 2 - Load help command isa App::Sqitch::Command::help
ok 3 - Execute help
ok 4 - Should show sqitch app docs
ok 5 - Execute "config" help
ok 6 - Should show "config" command docs
ok 7 - Should get an exception for "nonexistent" help
ok 8 - Exception ident should be "help"
ok 9 - Should get failure message for nonexistent command
ok 10 - Exception exit val should be 1
ok 11 - no warnings
ok
t/init.t ...........
1..158
ok 1 - use App::Sqitch::Command::init;
ok 2 - App::Sqitch::Command::init isa App::Sqitch::Command
ok 3 - New init object isa App::Sqitch::Command::init
ok 4 - App::Sqitch::Command::init->can(...)
ok 5 - Options should be correct
ok 6 - Default config should be empty
ok 7 - Should accept a URI in options
ok 8 - processed uri option isa URI
ok 9 - App::Sqitch::Command::init->can('make_directories')
ok 10 - dir init.mkdir does not exist
ok 11 - dir init.mkdir\deploy does not exist
ok 12 - dir init.mkdir\revert does not exist
ok 13 - dir init.mkdir\verify does not exist
ok 14 - Make the directories
ok 15 - dir init.mkdir exists
ok 16 - dir init.mkdir\deploy exists
ok 17 - dir init.mkdir\revert exists
ok 18 - dir init.mkdir\verify exists
ok 19 - Each should have been sent to info
ok 20 - Make the directories again
ok 21 - Nothing should have been sent to info
ok 22 - Make the directories once more
ok 23 - revert dir exists again
ok 24 - Should have noted creation of revert dir
ok 25 - Should fail on permission issue
ok 26 - Permission error should have ident "init"
ok 27 - The permission error should be formatted properly
ok 28 - App::Sqitch::Command::init->can('write_config')
ok 29 - Another init object
ok 30 - nonexistent.conf does not exist
ok 31 - Write the config
ok 32 - nonexistent.conf exists
ok 33 - The configuration file should have no variables
ok 34 - The creation should be sent to info
ok 35 - All in core section should be commented-out
ok 36 - Another init object
ok 37 - Write the config
ok 38 - nonexistent.conf exists
ok 39 - The configuration should have been written with the one setting
ok 40 - The creation should be sent to info
ok 41 - Other settings should be commented-out
ok 42 - Write the config again
ok 43 - The configuration should be unchanged
ok 44 - Nothing should have been sent to info
ok 45 - Make an init object with user config
ok 46 - nonexistent.conf does not exist
ok 47 - Write the config with a user conf
ok 48 - nonexistent.conf exists
ok 49 - The configuration should just have core.top_dir
ok 50 - The creation should be sent to info again
ok 51 - Other settings should be commented-out
ok 52 - Make an init object with system config
ok 53 - nonexistent.conf does not exist
ok 54 - Write the config with a system conf
ok 55 - nonexistent.conf exists
ok 56 - The configuration should have local and system config
ok 57 - The creation should be sent to info again
ok 58 - Other settings should be commented-out
ok 59 - Create new init with sqitch non-default attributes
ok 60 - Write the config with core attrs
ok 61 - The creation should be sent to info once more
ok 62 - The configuration should have been written with all the core values
ok 63 - Create new init with sqitch with non-default engine attributes
ok 64 - Write the config with engine attrs
ok 65 - The creation should be sent to info yet again
ok 66 - The configuration should have been written with sqlite values
ok 67 - sqitch_prefix should be included in a comment
ok 68 - Create new init with sqitch with default engine attributes
ok 69 - Write the config with engine attrs
ok 70 - The creation should be sent to info again again
ok 71 - The configuration should have been written with only the engine var
ok 72 - Engine section should be present but commented-out
ok 73 - Make an init with sqlite and user config
ok 74 - nonexistent.conf does not exist
ok 75 - Write the config with sqlite config
ok 76 - The creation should be sent to info once more
ok 77 - New config should have been written with sqlite values
ok 78 - Configured client should be included in a comment
ok 79 - Configured sqitch_prefix should be included in a comment
ok 80 - Create new init with sqitch with more non-default engine attributes
ok 81 - Write the config with more engine attrs
ok 82 - The creation should be sent to info one more time
ok 83 - The configuration should have been written with pg values
ok 84 - sqitch_schema should be included in a comment
ok 85 - password should be included in a comment
ok 86 - Create new init with sqitch with default engine attributes
ok 87 - Write the config with engine attrs
ok 88 - The creation should be sent to info again again again
ok 89 - The configuration should have been written with only the engine var
ok 90 - Engine section should be present but commented-out
ok 91 - Make an init with pg and user config
ok 92 - nonexistent.conf does not exist
ok 93 - Write the config with pg config
ok 94 - The pg config creation should be sent to info
ok 95 - The configuration should have been written with pg options
ok 96 - Configured sqitch_schema should be in a comment
ok 97 - password should be included in a comment
ok 98 - Configured username should be in a comment
ok 99 - Configured host should be in a comment
ok 100 - App::Sqitch::Command::init->can('write_plan')
ok 101 - Plan file should not yet exist
ok 102 - Write the plan file
ok 103 - The plan creation should be sent to info
ok 104 - Plan file should now exist
ok 105 - The contents should be correct
ok 106 - Write the plan file again
ok 107 - The file should not be overwritten
ok 108 - Create new init with sqitch with project and URI
ok 109 - Write the plan file again
ok 110 - The plan creation should be sent to info againq
ok 111 - Plan file should again exist
ok 112 - The plan should include the project and uri pragmas
ok 113 - App::Sqitch::Command::init->can('_validate_project')
ok 114 - No project should yield usage
ok 115 - No args should be passed to usage
ok 116 - Should get error for invalid project name "^foo"
ok 117 - Bad project "^foo" ident should be "init"
ok 118 - Bad project "^foo" error message should be correct
ok 119 - Should get error for invalid project name "foo^"
ok 120 - Bad project "foo^" ident should be "init"
ok 121 - Bad project "foo^" error message should be correct
ok 122 - Should get error for invalid project name "foo^6"
ok 123 - Bad project "foo^6" ident should be "init"
ok 124 - Bad project "foo^6" error message should be correct
ok 125 - Should get error for invalid project name "foo^666"
ok 126 - Bad project "foo^666" ident should be "init"
ok 127 - Bad project "foo^666" error message should be correct
ok 128 - Should get error for invalid project name "%hi"
ok 129 - Bad project "%hi" ident should be "init"
ok 130 - Bad project "%hi" error message should be correct
ok 131 - Should get error for invalid project name "hi!"
ok 132 - Bad project "hi!" ident should be "init"
ok 133 - Bad project "hi!" error message should be correct
ok 134 - Should get error for invalid project name "foo@bar"
ok 135 - Bad project "foo@bar" ident should be "init"
ok 136 - Bad project "foo@bar" error message should be correct
ok 137 - Should get error for invalid project name "foo:bar"
ok 138 - Bad project "foo:bar" ident should be "init"
ok 139 - Bad project "foo:bar" error message should be correct
ok 140 - Should get error for invalid project name "+foo"
ok 141 - Bad project "+foo" ident should be "init"
ok 142 - Bad project "+foo" error message should be correct
ok 143 - Should get error for invalid project name "-foo"
ok 144 - Bad project "-foo" ident should be "init"
ok 145 - Bad project "-foo" error message should be correct
ok 146 - Should get error for invalid project name "@foo"
ok 147 - Bad project "@foo" ident should be "init"
ok 148 - Bad project "@foo" error message should be correct
ok 149 - Execute!
ok 150 - dir plan.dir exists
ok 151 - dir plan.dir\deploy exists
ok 152 - dir plan.dir\revert exists
ok 153 - dir plan.dir\verify exists
ok 154 - nonexistent.conf exists
ok 155 - plan.dir\sqitch.plan exists
ok 156 - Should have status messages
ok 157 - The plan should have the --project name
ok 158 - no warnings
ok
t/linelist.t .......
1..22
ok 1 - require App::Sqitch::Plan::LineList;
ok 2 - Count should be six
ok 3 - Lines should be in order
ok 4 - Should have foo at 0
ok 5 - Should have bar at 1
ok 6 - Should have yo1 at 2
ok 7 - Should have @alpha at 3
ok 8 - Should have blank at 4
ok 9 - Should have baz at 5
ok 10 - Should have yo2 at 6
ok 11 - Should not find "non"
ok 12 - Should find foo at 0
ok 13 - Should find bar at 1
ok 14 - Should find yo1 at 2
ok 15 - Should find @alpha at 3
ok 16 - Should find blank at 4
ok 17 - Should find baz at 5
ok 18 - Should find yo2 at 6
ok 19 - Append hi
ok 20 - Count should now be eight
ok 21 - Lines should be in order with $hi at the end
ok 22 - no warnings
ok
t/log.t ............
1..236
ok 1 - require App::Sqitch::Command::log;
ok 2 - Load a sqitch sqitch object
ok 3 - log command isa App::Sqitch::Command::log
ok 4 - App::Sqitch::Command::log->can(...)
ok 5 - Options should be correct
ok 6 - Should get empty hash for no config or options
ok 7 - Should get error for invalid date format in config
ok 8 - Invalid date format error ident should be "datetime"
ok 9 - Invalid date format error message should be correct
ok 10 - Should get error for invalid date format in optsions
ok 11 - Invalid date format error ident should be "log"
ok 12 - Invalid date format error message should be correct
ok 13 - Should get error for invalid format in config
ok 14 - Invalid format error ident should be "log"
ok 15 - Invalid format error message should be correct
ok 16 - Should get error for invalid format in optsions
ok 17 - Invalid format error ident should be "log"
ok 18 - Invalid format error message should be correct
ok 19 - Configuration should respect --no-color, setting "never"
ok 20 - Configuration should respect --no-color even when configure is set
ok 21 - Configuration should respect color option
ok 22 - Colors should be disabled for "never"
ok 23 - Configuration should respect color config
ok 24 - Colors should be disabled for "never"
ok 25 - Configuration should respect color option
ok 26 - Colors should be enabled for "always"
ok 27 - Configuration should respect color config
ok 28 - Colors should be enabled for "always"
ok 29 - Configuration should respect color option
ok 30 - Auto color option should change nothing
ok 31 - Configuration should respect color config
ok 32 - Auto color config should change nothing
ok 33 - Configuration should respect color option
ok 34 - Auto color option should change nothing
ok 35 - Configuration should respect color config
ok 36 - Auto color config should change nothing
ok 37 - Instantiate with format "raw"
ok 38 - Format "raw" should output correctly
ok 39 - Format "raw" should output correctly without tags
ok 40 - Instantiate with format "full"
ok 41 - Format "full" should output correctly
ok 42 - Instantiate with format "full" and date format "rfc"
ok 43 - Format "full" and date format "rfc" should output correctly
ok 44 - Instantiate with format "full" and date format "long"
ok 45 - Format "full" and date format "long" should output correctly
ok 46 - Instantiate with format "full" and date format "medium"
ok 47 - Format "full" and date format "medium" should output correctly
ok 48 - Format "full" should output correctly without tags
ok 49 - Instantiate with format "long"
ok 50 - Format "long" should output correctly
ok 51 - Format "long" should output correctly without tags
ok 52 - Instantiate with format "medium"
ok 53 - Format "medium" should output correctly
ok 54 - Instantiate with format "medium" and date format "rfc"
ok 55 - Format "medium" and date format "rfc" should output correctly
ok 56 - Instantiate with format "medium" and date format "long"
ok 57 - Format "medium" and date format "long" should output correctly
ok 58 - Instantiate with format "medium" and date format "medium"
ok 59 - Format "medium" and date format "medium" should output correctly
ok 60 - Instantiate with format "short"
ok 61 - Format "short" should output correctly
ok 62 - Instantiate with format "oneline"
ok 63 - Format "oneline" should output correctly
ok 64 - Format "%e" should output "deploy"
ok 65 - Format "%e" should output "revert"
ok 66 - Format "%e" should output "fail"
ok 67 - Format "%L" should output "Deploy"
ok 68 - Format "%L" should output "Revert"
ok 69 - Format "%L" should output "Fail"
ok 70 - Format "%l" should output "deploy"
ok 71 - Format "%l" should output "revert"
ok 72 - Format "%l" should output "fail"
ok 73 - Format "%{event}_" should output "Event: "
ok 74 - Format "%{change}_" should output "Change: "
ok 75 - Format "%{committer}_" should output "Committer:"
ok 76 - Format "%{planner}_" should output "Planner: "
ok 77 - Format "%{by}_" should output "By: "
ok 78 - Format "%{date}_" should output "Date: "
ok 79 - Format "%{committed}_" should output "Committed:"
ok 80 - Format "%{planned}_" should output "Planned: "
ok 81 - Format "%{name}_" should output "Name: "
ok 82 - Format "%{email}_" should output "Email: "
ok 83 - Format "%{requires}_" should output "Requires: "
ok 84 - Format "%{conflicts}_" should output "Conflicts:"
ok 85 - Format "%H" should output "123456789"
ok 86 - Format "%h" should output "123456789"
ok 87 - Format "%{5}h" should output "12345"
ok 88 - Format "%{7}h" should output "1234567"
ok 89 - Format "%n" should output "foo"
ok 90 - Format "%n" should output "bar"
ok 91 - Format "%o" should output "foo"
ok 92 - Format "%o" should output "bar"
ok 93 - Format "%c" should output "larry "
ok 94 - Format "%{n}c" should output "damian"
ok 95 - Format "%{name}c" should output "chip"
ok 96 - Format "%{e}c" should output "larry@example.com"
ok 97 - Format "%{email}c" should output "damian@example.com"
ok 98 - Format "%{date}c" should output "2013-02-21 21:09:25 -0800"
ok 99 - Format "%{date:rfc}c" should output "Thu, 21 Feb 2013 21:09:25 -0800"
ok 100 - Format "%{d:long}c" should output "February 21, 2013 9:09:25 PM PST"
ok 101 - Format "%{d:cldr:HH'h' mm'm'}c" should output "21h 09m"
ok 102 - Format "%{d:strftime:%a at %H:%M:%S}c" should output "Thu at 21:09:25"
ok 103 - Format "%p" should output "larry "
ok 104 - Format "%{n}p" should output "damian"
ok 105 - Format "%{name}p" should output "chip"
ok 106 - Format "%{e}p" should output "larry@example.com"
ok 107 - Format "%{email}p" should output "damian@example.com"
ok 108 - Format "%{date}p" should output "2013-02-20 21:09:25 -0800"
ok 109 - Format "%{date:rfc}p" should output "Wed, 20 Feb 2013 21:09:25 -0800"
ok 110 - Format "%{d:long}p" should output "February 20, 2013 9:09:25 PM PST"
ok 111 - Format "%{d:cldr:HH'h' mm'm'}p" should output "21h 09m"
ok 112 - Format "%{d:strftime:%a at %H:%M:%S}p" should output "Wed at 21:09:25"
ok 113 - Format "%t" should output ""
ok 114 - Format "%t" should output " @foo"
ok 115 - Format "%t" should output " @foo, @bar"
ok 116 - Format "%{|}t" should output ""
ok 117 - Format "%{|}t" should output " @foo"
ok 118 - Format "%{|}t" should output " @foo|@bar"
ok 119 - Format "%T" should output ""
ok 120 - Format "%T" should output " (@foo)"
ok 121 - Format "%T" should output " (@foo, @bar)"
ok 122 - Format "%{|}T" should output ""
ok 123 - Format "%{|}T" should output " (@foo)"
ok 124 - Format "%{|}T" should output " (@foo|@bar)"
ok 125 - Format "%r" should output ""
ok 126 - Format "%r" should output " foo"
ok 127 - Format "%r" should output " foo, bar"
ok 128 - Format "%{|}r" should output ""
ok 129 - Format "%{|}r" should output " foo"
ok 130 - Format "%{|}r" should output " foo|bar"
ok 131 - Format "%R" should output ""
ok 132 - Format "%R" should output "Requires: foo[newline]"
ok 133 - Format "%R" should output "Requires: foo, bar[newline]"
ok 134 - Format "%{|}R" should output ""
ok 135 - Format "%{|}R" should output "Requires: foo[newline]"
ok 136 - Format "%{|}R" should output "Requires: foo|bar[newline]"
ok 137 - Format "%x" should output ""
ok 138 - Format "%x" should output " foo"
ok 139 - Format "%x" should output " foo, bax"
ok 140 - Format "%{|}x" should output ""
ok 141 - Format "%{|}x" should output " foo"
ok 142 - Format "%{|}x" should output " foo|bax"
ok 143 - Format "%X" should output ""
ok 144 - Format "%X" should output "Conflicts: foo[newline]"
ok 145 - Format "%X" should output "Conflicts: foo, bar[newline]"
ok 146 - Format "%{|}X" should output ""
ok 147 - Format "%{|}X" should output "Conflicts: foo[newline]"
ok 148 - Format "%{|}X" should output "Conflicts: foo|bar[newline]"
ok 149 - Format "%{yellow}C" should output ""
ok 150 - Format "%{:event}C" should output ""
ok 151 - Format "%v" should output "[newline]"
ok 152 - Format "%%" should output "%"
ok 153 - Format "%s" should output "hi there"
ok 154 - Format "%s" should output "hi there"
ok 155 - Format "%s" should output "subject line"
ok 156 - Format "%{ }s" should output " hi there"
ok 157 - Format "%{xx}s" should output "xxhi there"
ok 158 - Format "%b" should output ""
ok 159 - Format "%b" should output "yo"
ok 160 - Format "%b" should output "first graph[newline][newline]second graph[newline][newline]"
ok 161 - Format "%{ }b" should output ""
ok 162 - Format "%{xxx }b" should output "xxx yo"
ok 163 - Format "%{x}b" should output "xfirst graph[newline]x[newline]xsecond graph[newline]x[newline]"
ok 164 - Format "%{ }b" should output " yo"
ok 165 - Format "%B" should output "hi there"
ok 166 - Format "%B" should output "hi there[newline]yo"
ok 167 - Format "%B" should output "subject line[newline][newline]first graph[newline][newline]second graph[newline][newline]"
ok 168 - Format "%{ }B" should output " hi there"
ok 169 - Format "%{xxx }B" should output "xxx hi there[newline]xxx yo"
ok 170 - Format "%{x}B" should output "xsubject line[newline]x[newline]xfirst graph[newline]x[newline]xsecond graph[newline]x[newline]"
ok 171 - Format "%{ }B" should output " hi there
[newline] yo"
ok 172 - Format "%{change}a" should output "change lolz[newline]"
ok 173 - Format "%{change_id}a" should output "change_id 000011112222333444[newline]"
ok 174 - Format "%{event}a" should output "event deploy[newline]"
ok 175 - Format "%{tags}a" should output "tags @beta, @gamma[newline]"
ok 176 - Format "%{requires}a" should output "requires foo, bar[newline]"
ok 177 - Format "%{conflicts}a" should output ""
ok 178 - Format "%{committer_name}a" should output "committer_name larry[newline]"
ok 179 - Format "%{committed_at}a" should output "committed_at 2013-02-22T05:09:25Z[newline]"
ok 180 - Should get exception for format "%_"
ok 181 - %_ error ident should be "log"
ok 182 - %_ error message should be correct
ok 183 - Should get exception for unknown label in format "%_"
ok 184 - Invalid %_ label error ident should be "log"
ok 185 - Invalid %_ label error message should be correct
ok 186 - Instantiate with abbrev => 4
ok 187 - %h should respect abbrev
ok 188 - %H should not respect abbrev
ok 189 - Instantiate with date_format => "rfc"
ok 190 - %{date}c should respect the date_format attribute
ok 191 - %{iso}c should override the date_format attribute
ok 192 - Should get exception for unknown attribute passed to %a
ok 193 - %a error ident should be "log"
ok 194 - %a error message should be correct
ok 195 - Format "%{yellow}C" should output [33myellow[0m
ok 196 - Format "%{red}C" should output [31mred[0m
ok 197 - Format "%{blue}C" should output [34mblue[0m
ok 198 - Format "%{cyan}C" should output [36mcyan[0m
ok 199 - Format "%{magenta}C" should output [35mmagenta[0m
ok 200 - Format "%{:event}C" on "deploy" should output [32mgreen[0m
ok 201 - Format "%{:event}C" on "revert" should output [34mblue[0m
ok 202 - Format "%{:event}C" on "fail" should output [31mred[0m
ok 203 - Instantiate with format "full" again
ok 204 - Format "full" should output correctly with color
ok 205 - Instantiate with format "long" again
ok 206 - Format "long" should output correctly with color
ok 207 - Instantiate with format "medium" again
ok 208 - Format "medium" should output correctly with color
ok 209 - Instantiate with format "short" again
ok 210 - Format "short" should output correctly with color
ok 211 - Instantiate with format "oneline" again
ok 212 - Format "oneline" should output correctly with color
ok 213 - Should get an error for an invalid color
ok 214 - Invalid color error ident should be "log"
ok 215 - Invalid color error message should be correct
ok 216 - Should get exception for unititialied db
ok 217 - Uninit db error ident should be "log"
ok 218 - Uninit db exit val should be 1
ok 219 - Uninit db error message should be correct
ok 220 - Should get error for empty event table
ok 221 - no events error ident should be "log"
ok 222 - no events exit val should be 1
ok 223 - no events error message should be correct
ok 224 - Search should have been limited to one row
ok 225 - Execute log
ok 226 - The proper args should have been passed to search_events
ok 227 - The change should have been paged
ok 228 - log with attributes isa App::Sqitch::Command::log
ok 229 - Execute log with attributes
ok 230 - All params should have been passed to search_events
ok 231 - Both changes should have been paged
ok 232 - log with bad format isa App::Sqitch::Command::log
ok 233 - Should get an exception for a bad format code
ok 234 - bad format code format error ident should be "log"
ok 235 - bad format code format error message should be correct
ok 236 - no warnings
ok
t/options.t ........
1..25
ok 1 - use App::Sqitch;
ok 2 - App::Sqitch->can('_split_args')
ok 3 - Split on command-only
ok 4 - Split on core option plus command
ok 5 - Split on core option plus command plus command option
ok 6 - Option with arg should work
ok 7 - Option with arg should work
ok 8 - Should handle no command
ok 9 - _pod2usage should be called
ok 10 - Should exit for invalid option
ok 11 - App::Sqitch->can('_parse_core_opts')
ok 12 - Should have default config for no options
ok 13 - Ask for help
ok 14 - Should have been helped
ok 15 - Ask for man
ok 16 - Should have been manned
ok 17 - Should parse lots of options
ok 18 - top_dir isa Path::Class::Dir
ok 19 - deploy_dir isa Path::Class::Dir
ok 20 - revert_dir isa Path::Class::Dir
ok 21 - verify_dir isa Path::Class::Dir
ok 22 - --quiet should trump verbosity.
ok 23 - Short options should work
ok 24 - Run _pod2usage
ok 25 - Proper args should have been passed to Pod::Usage
ok
t/pg.t .............
ok 1 - require App::Sqitch::Engine::pg;
ok 2 - config_vars should return three vars
ok 3 - The object isa App::Sqitch::Engine::pg
ok 4 - client should default to psql
ok 5 - sqitch_schema default should be "sqitch"
ok 6 - username default should be undef
ok 7 - password default should be undef
ok 8 - db_name default should be undef
ok 9 - host default should be undef
ok 10 - port default should be undef
ok 11 - Destination should fall back on environment variables
ok 12 - psql command should be std opts-only
ok 13 - The object isa App::Sqitch::Engine::pg
ok 14 - Set some variables
ok 15 - Variables should be passed to psql via --set
ok 16 - Destination should read $PGDATABASE
ok 17 - Destination should read $PGUSER
ok 18 - Destination should fall back on sysuser
ok 19 - Destination should read username
ok 20 - Destination should prefer $PGDATABASE to username
ok 21 - Create another pg
ok 22 - client should be as configured
ok 23 - username should be as configured
ok 24 - password should be as configured
ok 25 - db_name should be as configured
ok 26 - destination should default to db_name
ok 27 - host should be as configured
ok 28 - port should be as configured
ok 29 - sqitch_schema should be as configured
ok 30 - psql command should be configured
ok 31 - Create a pg with sqitch with options
ok 32 - client should be as optioned
ok 33 - username should be as optioned
ok 34 - password should still be as configured
ok 35 - db_name should be as optioned
ok 36 - destination should still default to db_name
ok 37 - host should be as optioned
ok 38 - port should be as optioned
ok 39 - sqitch_schema should still be as configured
ok 40 - psql command should be as optioned
ok 41 - App::Sqitch::Engine::pg->can(...)
ok 42 - PGPASSWORD should be "s3cr3t"
ok 43 - Call _run
ok 44 - Command should be passed to run()
ok 45 - PGPASSWORD should be "s3cr3t"
ok 46 - Call _spool
ok 47 - Command should be passed to spool()
ok 48 - PGPASSWORD should be "s3cr3t"
ok 49 - Call _capture
ok 50 - Command should be passed to capture()
ok 51 - Create a pg with sqitch with no pw
ok 52 - PGPASSWORD should not exist
ok 53 - Call _run again
ok 54 - Command should be passed to run() again
ok 55 - PGPASSWORD should not exist
ok 56 - Call _spool again
ok 57 - Command should be passed to spool() again
ok 58 - PGPASSWORD should not exist
ok 59 - Call _capture again
ok 60 - Command should be passed to capture() again
ok 61 - PGPASSWORD should not exist
ok 62 - Run foo/bar.sql
ok 63 - File should be passed to run()
ok 64 - PGPASSWORD should not exist
ok 65 - Spool a "file handle"
ok 66 - Handle should be passed to spool()
ok 67 - PGPASSWORD should not exist
ok 68 - Verify foo/bar.sql
ok 69 - Verify file should be passed to capture()
ok 70 - PGPASSWORD should not exist
ok 71 - Verify foo/bar.sql again
ok 72 - Verifile file should be passed to run() for high verbosity
ok 73 - App::Sqitch::Engine::pg->can('_ts2char')
ok 74 - _ts2char should work
ok 75 - App::Sqitch::Engine::pg->can('_dt')
ok 76 - Return value of _dt() isa App::Sqitch::DateTime
ok 77 - DateTime year should be set
ok 78 - DateTime month should be set
ok 79 - DateTime day should be set
ok 80 - DateTime hour should be set
ok 81 - DateTime minute should be set
ok 82 - DateTime second should be set
ok 83 - DateTime TZ should be set
ok 84 - App::Sqitch::Engine::pg->can(...)
1..0 # SKIP Unable to connect to a database for testing: DBD::Pg module required to manage PostgreSQL
ok 85 # skip Unable to connect to a database for testing: DBD::Pg module required to manage PostgreSQL
1..85
ok
t/plan.t ...........
ok 1 - use App::Sqitch::Plan;
ok 2 - App::Sqitch::Plan->can(...)
ok 3 - The object isa App::Sqitch::Plan
ok 4 - Should parse simple "widgets.plan"
ok 5 - Should have sorted changes
ok 6 - changes isa ARRAY
ok 7 - lines isa ARRAY
ok 8 - All "widgets.plan" changes should be parsed
ok 9 - All "widgets.plan" lines should be parsed
ok 10 - Should parse multi-tagged "multi.plan"
ok 11 - Should have sorted changes twice
ok 12 - Should have captured the multi pragmas
ok 13 - Should have "multi.plan" lines and changes
ok 14 - Should read plan with no tags
ok 15 - Should have sorted changes
ok 16 - Should have captured the changes-only pragmas
ok 17 - Should have lines and changes for tagless plan
ok 18 - Should die on plan with bad change name
ok 19 - Bad change name error ident should be "plan"
ok 20 - And the bad change name error message should be correct
ok 21 - Should not have sorted changes
ok 22 - Should die on plan with bad name "+^foo"
ok 23 - Exception ident should be "plan"
ok 24 - And "+^foo" should trigger the appropriate message
ok 25 - Should not have sorted changes
ok 26 - Should die on plan with bad name "@^foo"
ok 27 - Exception ident should be "plan"
ok 28 - And "@^foo" should trigger the appropriate message
ok 29 - Should not have sorted changes
ok 30 - Should die on plan with bad name "+foo^"
ok 31 - Exception ident should be "plan"
ok 32 - And "+foo^" should trigger the appropriate message
ok 33 - Should not have sorted changes
ok 34 - Should die on plan with bad name "@foo^"
ok 35 - Exception ident should be "plan"
ok 36 - And "@foo^" should trigger the appropriate message
ok 37 - Should not have sorted changes
ok 38 - Should die on plan with bad name "+foo^6"
ok 39 - Exception ident should be "plan"
ok 40 - And "+foo^6" should trigger the appropriate message
ok 41 - Should not have sorted changes
ok 42 - Should die on plan with bad name "@foo^6"
ok 43 - Exception ident should be "plan"
ok 44 - And "@foo^6" should trigger the appropriate message
ok 45 - Should not have sorted changes
ok 46 - Should die on plan with bad name "+foo^666"
ok 47 - Exception ident should be "plan"
ok 48 - And "+foo^666" should trigger the appropriate message
ok 49 - Should not have sorted changes
ok 50 - Should die on plan with bad name "@foo^666"
ok 51 - Exception ident should be "plan"
ok 52 - And "@foo^666" should trigger the appropriate message
ok 53 - Should not have sorted changes
ok 54 - Should die on plan with bad name "+%hi"
ok 55 - Exception ident should be "plan"
ok 56 - And "+%hi" should trigger the appropriate message
ok 57 - Should not have sorted changes
ok 58 - Should die on plan with bad name "@%hi"
ok 59 - Exception ident should be "plan"
ok 60 - And "@%hi" should trigger the appropriate message
ok 61 - Should not have sorted changes
ok 62 - Should die on plan with bad name "+hi!"
ok 63 - Exception ident should be "plan"
ok 64 - And "+hi!" should trigger the appropriate message
ok 65 - Should not have sorted changes
ok 66 - Should die on plan with bad name "@hi!"
ok 67 - Exception ident should be "plan"
ok 68 - And "@hi!" should trigger the appropriate message
ok 69 - Should not have sorted changes
ok 70 - Should die on plan with bad name "+foo@bar"
ok 71 - Exception ident should be "plan"
ok 72 - And "+foo@bar" should trigger the appropriate message
ok 73 - Should not have sorted changes
ok 74 - Should die on plan with bad name "@foo@bar"
ok 75 - Exception ident should be "plan"
ok 76 - And "@foo@bar" should trigger the appropriate message
ok 77 - Should not have sorted changes
ok 78 - Should die on plan with bad name "+foo:bar"
ok 79 - Exception ident should be "plan"
ok 80 - And "+foo:bar" should trigger the appropriate message
ok 81 - Should not have sorted changes
ok 82 - Should die on plan with bad name "@foo:bar"
ok 83 - Exception ident should be "plan"
ok 84 - And "@foo:bar" should trigger the appropriate message
ok 85 - Should not have sorted changes
ok 86 - Should die on plan with bad name "++foo"
ok 87 - Exception ident should be "plan"
ok 88 - And "++foo" should trigger the appropriate message
ok 89 - Should not have sorted changes
ok 90 - Should die on plan with bad name "@+foo"
ok 91 - Exception ident should be "plan"
ok 92 - And "@+foo" should trigger the appropriate message
ok 93 - Should not have sorted changes
ok 94 - Should die on plan with bad name "+-foo"
ok 95 - Exception ident should be "plan"
ok 96 - And "+-foo" should trigger the appropriate message
ok 97 - Should not have sorted changes
ok 98 - Should die on plan with bad name "@-foo"
ok 99 - Exception ident should be "plan"
ok 100 - And "@-foo" should trigger the appropriate message
ok 101 - Should not have sorted changes
ok 102 - Should die on plan with bad name "+@foo"
ok 103 - Exception ident should be "plan"
ok 104 - And "+@foo" should trigger the appropriate message
ok 105 - Should not have sorted changes
ok 106 - Should die on plan with bad name "@@foo"
ok 107 - Exception ident should be "plan"
ok 108 - And "@@foo" should trigger the appropriate message
ok 109 - Should not have sorted changes
ok 110 - Should parse "foo"
ok 111 - Should have captured the foo pragmas
ok 112 - Should have pragmas in plan with change "foo"
ok 113 - Should parse "@foo"
ok 114 - Should have pragmas in plan with tag "foo"
ok 115 - Should have line and change for "@foo"
ok 116 - Should parse "12"
ok 117 - Should have captured the 12 pragmas
ok 118 - Should have pragmas in plan with change "12"
ok 119 - Should parse "@12"
ok 120 - Should have pragmas in plan with tag "12"
ok 121 - Should have line and change for "@12"
ok 122 - Should parse "t"
ok 123 - Should have captured the t pragmas
ok 124 - Should have pragmas in plan with change "t"
ok 125 - Should parse "@t"
ok 126 - Should have pragmas in plan with tag "t"
ok 127 - Should have line and change for "@t"
ok 128 - Should parse "6"
ok 129 - Should have captured the 6 pragmas
ok 130 - Should have pragmas in plan with change "6"
ok 131 - Should parse "@6"
ok 132 - Should have pragmas in plan with tag "6"
ok 133 - Should have line and change for "@6"
ok 134 - Should parse "阱阪阬"
ok 135 - Should have captured the 阱阪阬 pragmas
ok 136 - Should have pragmas in plan with change "阱阪阬"
ok 137 - Should parse "@阱阪阬"
ok 138 - Should have pragmas in plan with tag "阱阪阬"
ok 139 - Should have line and change for "@阱阪阬"
ok 140 - Should parse "foo/bar"
ok 141 - Should have captured the foo/bar pragmas
ok 142 - Should have pragmas in plan with change "foo/bar"
ok 143 - Should parse "@foo/bar"
ok 144 - Should have pragmas in plan with tag "foo/bar"
ok 145 - Should have line and change for "@foo/bar"
ok 146 - Should parse "beta1"
ok 147 - Should have captured the beta1 pragmas
ok 148 - Should have pragmas in plan with change "beta1"
ok 149 - Should parse "@beta1"
ok 150 - Should have pragmas in plan with tag "beta1"
ok 151 - Should have line and change for "@beta1"
ok 152 - Should parse "foo_"
ok 153 - Should have captured the foo_ pragmas
ok 154 - Should have pragmas in plan with change "foo_"
ok 155 - Should parse "@foo_"
ok 156 - Should have pragmas in plan with tag "foo_"
ok 157 - Should have line and change for "@foo_"
ok 158 - Should parse "_foo"
ok 159 - Should have captured the _foo pragmas
ok 160 - Should have pragmas in plan with change "_foo"
ok 161 - Should parse "@_foo"
ok 162 - Should have pragmas in plan with tag "_foo"
ok 163 - Should have line and change for "@_foo"
ok 164 - Should parse "v1.0-1b"
ok 165 - Should have captured the v1.0-1b pragmas
ok 166 - Should have pragmas in plan with change "v1.0-1b"
ok 167 - Should parse "@v1.0-1b"
ok 168 - Should have pragmas in plan with tag "v1.0-1b"
ok 169 - Should have line and change for "@v1.0-1b"
ok 170 - Should parse "v1.2-1"
ok 171 - Should have captured the v1.2-1 pragmas
ok 172 - Should have pragmas in plan with change "v1.2-1"
ok 173 - Should parse "@v1.2-1"
ok 174 - Should have pragmas in plan with tag "v1.2-1"
ok 175 - Should have line and change for "@v1.2-1"
ok 176 - Should parse "v1.2+1"
ok 177 - Should have captured the v1.2+1 pragmas
ok 178 - Should have pragmas in plan with change "v1.2+1"
ok 179 - Should parse "@v1.2+1"
ok 180 - Should have pragmas in plan with tag "v1.2+1"
ok 181 - Should have line and change for "@v1.2+1"
ok 182 - Should parse "v1.2_1"
ok 183 - Should have captured the v1.2_1 pragmas
ok 184 - Should have pragmas in plan with change "v1.2_1"
ok 185 - Should parse "@v1.2_1"
ok 186 - Should have pragmas in plan with tag "v1.2_1"
ok 187 - Should have line and change for "@v1.2_1"
ok 188 - Should have sorted changes 18 times
ok 189 - Should die on plan with reserved tag "@HEAD"
ok 190 - @HEAD exception should have ident "plan"
ok 191 - And the @HEAD error message should be correct
ok 192 - Should have sorted changes once
ok 193 - Should die on plan with reserved tag "@ROOT"
ok 194 - @ROOT exception should have ident "plan"
ok 195 - And the @ROOT error message should be correct
ok 196 - Should have sorted @ROOT changes nonce
ok 197 - Should die on plan with reserved tag "@FIRST"
ok 198 - @FIRST exception should have ident "plan"
ok 199 - And the @FIRST error message should be correct
ok 200 - Should have sorted @FIRST changes nonce
ok 201 - Should die on plan with reserved tag "@LAST"
ok 202 - @LAST exception should have ident "plan"
ok 203 - And the @LAST error message should be correct
ok 204 - Should have sorted @LAST changes nonce
ok 205 - Should die on plan with SHA1 change name
ok 206 - The SHA1 error ident should be "plan"
ok 207 - And the SHA1 error message should be correct
ok 208 - Should have sorted changes nonce
ok 209 - Should die on plan with tag but no preceding change
ok 210 - The missing change error ident should be "plan"
ok 211 - And the missing change error message should be correct
ok 212 - Should have sorted changes nonce
ok 213 - Should die on plan with dupe tag
ok 214 - The dupe tag error ident should be "plan"
ok 215 - And the missing change error message should be correct
ok 216 - Should have sorted changes twice
ok 217 - Should die on plan with dupe change
ok 218 - The dupe change error ident should be "plan"
ok 219 - And the dupe change error message should be correct
ok 220 - Should have sorted changes once
ok 221 - Should die on invalid dependency
ok 222 - The invalid dependency error ident should be "plan"
ok 223 - And the invalid dependency error message should be correct
ok 224 - Should have sorted changes nonce
ok 225 - Should die on change with no timestamp
ok 226 - The missing timestamp error ident should be "plan"
ok 227 - And the missing timestamp error message should be correct
ok 228 - Should have sorted changes nonce
ok 229 - Should die on change with no planner
ok 230 - The missing planner error ident should be "plan"
ok 231 - And the missing planner error message should be correct
ok 232 - Should have sorted changes nonce
ok 233 - Should die on change with no timestamp or planner
ok 234 - The missing timestamp or planner error ident should be "plan"
ok 235 - And the missing timestamp or planner error message should be correct
ok 236 - Should have sorted changes nonce
ok 237 - Should parse plan with pragmas"
ok 238 - Should have sorted changes once
ok 239 - Should have captured all of the pragmas
ok 240 - Should have "multi.plan" lines and changes
ok 241 - Should parse plan with deploy and revert operators
ok 242 - Should have sorted changes twice
ok 243 - Should have captured the deploy-and-revert pragmas
ok 244 - Should have "deploy-and-revert.plan" lines and changes
ok 245 - Should get exception for nonexistent plan file
ok 246 - Nonexistent plan file ident should be "plan"
ok 247 - Nonexistent plan file message should be correct
ok 248 - Plan with sqitch with plan file with dependencies isa App::Sqitch::Plan
ok 249 - Load plan with dependencies file
ok 250 - The changes should include the dependencies
ok 251 - Should have sorted changes twice
ok 252 - Plan with sqitch with plan file with project deps isa App::Sqitch::Plan
ok 253 - Load plan with project deps file
ok 254 - The changes should include the cross-project deps
ok 255 - Should have sorted changes twice
ok 256 - Plan with sqitch with plan with tag dependencies isa App::Sqitch::Plan
ok 257 - Should get an exception for tag with dependencies
ok 258 - The tag dependencies error ident should be "plan"
ok 259 - And the tag dependencies error message should be correct
ok 260 - Plan with sqitch with plan file isa App::Sqitch::Plan
ok 261 - Lines should be parsed from file
ok 262 - Changes should be parsed from file
ok 263 - Should get all tags from tags()
ok 264 - Should have sorted changes twice
ok 265 - Load should parse plan from file
ok 266 - Should have captured the multi pragmas
ok 267 - And the parsed file should have lines and changes
ok 268 - Should have sorted changes twice
ok 269 - App::Sqitch::Plan->can(...)
ok 270 - Position should start at -1
ok 271 - Current should be undef
ok 272 - Get next change
ok 273 - First change isa App::Sqitch::Plan::Change
ok 274 - It should be the first change
ok 275 - Position should be at 0
ok 276 - Count should be 4
ok 277 - Current should be current
ok 278 - Should get first change from change_at(0)
ok 279 - Peek to next change
ok 280 - Peeked change isa App::Sqitch::Plan::Change
ok 281 - Peeked change should be second change
ok 282 - last() should return last change
ok 283 - Current should still be current
ok 284 - Peek should still be next
ok 285 - Next should be the second change
ok 286 - Position should be at 1
ok 287 - Should get second change from change_at(1)
ok 288 - Peek should return an object
ok 289 - Third change isa App::Sqitch::Plan::Change
ok 290 - It should be the foo tag
ok 291 - Current should be the second change
ok 292 - Should get third change next
ok 293 - Position should be at 2
ok 294 - Current should be third change
ok 295 - Should get third change from change_at(1)
ok 296 - Get fourth change
ok 297 - Fourth change isa App::Sqitch::Plan::Change
ok 298 - Fourth change should be "hey-there"
ok 299 - Position should be at 3
ok 300 - Peek should return undef
ok 301 - Next should return undef
ok 302 - Position should be at 7
ok 303 - Next should still return undef
ok 304 - Position should still be at 7
ok 305 - Reset the plan
ok 306 - Position should be back at -1
ok 307 - Current should still be undef
ok 308 - Next should return the first change again
ok 309 - Position should be at 0 again
ok 310 - Current should be first change
ok 311 - Index of change should be 0
ok 312 - Should be able to get change 0 by name
ok 313 - Should be able to find change 0 by name
ok 314 - Should be able to get change 0 by ID
ok 315 - Should be able to find change 0 by ID
ok 316 - Index of @bar should be 3
ok 317 - Should be able to get hey-there via @bar
ok 318 - Should be able to get hey-there via @bar ID
ok 319 - Should be able to find hey-there via @bar
ok 320 - Should be able to find hey-there via @bar ID
ok 321 - Seek to the "@bar" change
ok 322 - Position should be at 3 again
ok 323 - Current should be fourth again
ok 324 - Index of you should be 1
ok 325 - Should be able to get change 1 by name
ok 326 - Should be able to find change 1 by name
ok 327 - Seek to the "you" change
ok 328 - Position should be at 1 again
ok 329 - Current should be second again
ok 330 - Index of baz should be undef
ok 331 - Index of @baz should be 3
ok 332 - Seek to the "baz" change
ok 333 - Position should be at 3 again
ok 334 - Current should be fourth again
ok 335 - Should still get first change from change_at(0)
ok 336 - Should still get second change from change_at(1)
ok 337 - Should still get third change from change_at(1)
ok 338 - Should die seeking invalid change
ok 339 - Invalid seek change error ident should be "plan"
ok 340 - And the failure message should be correct
ok 341 - All should return all changes
ok 342 - Reset the plan again
ok 343 - Change hey should be passed to do sub
ok 344 - Change hey should be the topic in do sub
ok 345 - Change you should be passed to do sub
ok 346 - Change you should be the topic in do sub
ok 347 - Change this/rocks should be passed to do sub
ok 348 - Change this/rocks should be the topic in do sub
ok 349 - Change hey-there should be passed to do sub
ok 350 - Change hey-there should be the topic in do sub
ok 351 - App::Sqitch::Plan->can('write_to')
ok 352 - plan.out does not exist
ok 353 - Write out the file
ok 354 - plan.out exists
ok 355 - The contents should look right
ok 356 - Write out the file from "this/rocks"
ok 357 - Plan should have been written from "this/rocks" through tags at end
ok 358 - Write the file up to "you"
ok 359 - Plan should have been written through "you" and its tags
ok 360 - Write from "@foo" to "this/rocks"
ok 361 - Plan should have been written from "@foo" to "this/rocks"
ok 362 - Write from "hey" to "@foo"
ok 363 - Plan should have been written from "hey" through "@foo"
ok 364 - App::Sqitch::Plan->can('_is_valid')
ok 365 - Should find "^foo" invalid
ok 366 - Invalid name "^foo" error ident should be "plan"
ok 367 - And the "^foo" error message should be correct
ok 368 - Should find "foo^" invalid
ok 369 - Invalid name "foo^" error ident should be "plan"
ok 370 - And the "foo^" error message should be correct
ok 371 - Should find "foo^6" invalid
ok 372 - Invalid name "foo^6" error ident should be "plan"
ok 373 - And the "foo^6" error message should be correct
ok 374 - Should find "foo^666" invalid
ok 375 - Invalid name "foo^666" error ident should be "plan"
ok 376 - And the "foo^666" error message should be correct
ok 377 - Should find "%hi" invalid
ok 378 - Invalid name "%hi" error ident should be "plan"
ok 379 - And the "%hi" error message should be correct
ok 380 - Should find "hi!" invalid
ok 381 - Invalid name "hi!" error ident should be "plan"
ok 382 - And the "hi!" error message should be correct
ok 383 - Should find "foo@bar" invalid
ok 384 - Invalid name "foo@bar" error ident should be "plan"
ok 385 - And the "foo@bar" error message should be correct
ok 386 - Should find "foo:bar" invalid
ok 387 - Invalid name "foo:bar" error ident should be "plan"
ok 388 - And the "foo:bar" error message should be correct
ok 389 - Should find "+foo" invalid
ok 390 - Invalid name "+foo" error ident should be "plan"
ok 391 - And the "+foo" error message should be correct
ok 392 - Should find "-foo" invalid
ok 393 - Invalid name "-foo" error ident should be "plan"
ok 394 - And the "-foo" error message should be correct
ok 395 - Should find "@foo" invalid
ok 396 - Invalid name "@foo" error ident should be "plan"
ok 397 - And the "@foo" error message should be correct
ok 398 - Name "foo" sould be valid
ok 399 - Name "12" sould be valid
ok 400 - Name "t" sould be valid
ok 401 - Name "6" sould be valid
ok 402 - Name "阱阪阬" sould be valid
ok 403 - Name "foo/bar" sould be valid
ok 404 - Name "beta1" sould be valid
ok 405 - Name "v1.2-1" sould be valid
ok 406 - Name "v1.2+1" sould be valid
ok 407 - Name "v1.2_1" sould be valid
ok 408 - Add tag "w00t"
ok 409 - Should have 4 changes
ok 410 - Should find "@w00t at index 3
ok 411 - Last change should be "hey-there"
ok 412 - The w00t tag should be on the last change
ok 413 - The object isa App::Sqitch::Plan::Tag
ok 414 - The returned tag should be @w00t
ok 415 - The @w00t change should be the last change
ok 416 - Write out the file again
ok 417 - The contents should include the "w00t" tag
ok 418 - Add tag "@alpha"
ok 419 - Should find "@alpha at index 3
ok 420 - The returned tag should be @alpha
ok 421 - The @alpha change should be the last change
ok 422 - Should get error trying to add duplicate tag
ok 423 - Duplicate tag error ident should be "plan"
ok 424 - And the error message should report it as a dupe
ok 425 - Should get error for invalid tag "^foo"
ok 426 - Invalid name "^foo" error ident should be "plan"
ok 427 - And the "^foo" error message should be correct
ok 428 - Should get error for invalid tag "foo^"
ok 429 - Invalid name "foo^" error ident should be "plan"
ok 430 - And the "foo^" error message should be correct
ok 431 - Should get error for invalid tag "foo^6"
ok 432 - Invalid name "foo^6" error ident should be "plan"
ok 433 - And the "foo^6" error message should be correct
ok 434 - Should get error for invalid tag "foo^666"
ok 435 - Invalid name "foo^666" error ident should be "plan"
ok 436 - And the "foo^666" error message should be correct
ok 437 - Should get error for invalid tag "%hi"
ok 438 - Invalid name "%hi" error ident should be "plan"
ok 439 - And the "%hi" error message should be correct
ok 440 - Should get error for invalid tag "hi!"
ok 441 - Invalid name "hi!" error ident should be "plan"
ok 442 - And the "hi!" error message should be correct
ok 443 - Should get error for invalid tag "foo@bar"
ok 444 - Invalid name "foo@bar" error ident should be "plan"
ok 445 - And the "foo@bar" error message should be correct
ok 446 - Should get error for invalid tag "foo:bar"
ok 447 - Invalid name "foo:bar" error ident should be "plan"
ok 448 - And the "foo:bar" error message should be correct
ok 449 - Should get error for invalid tag "+foo"
ok 450 - Invalid name "+foo" error ident should be "plan"
ok 451 - And the "+foo" error message should be correct
ok 452 - Should get error for invalid tag "-foo"
ok 453 - Invalid name "-foo" error ident should be "plan"
ok 454 - And the "-foo" error message should be correct
ok 455 - Should get error for invalid tag "foo\#bar"
ok 456 - Invalid name "foo\#bar" error ident should be "plan"
ok 457 - And the "foo\#bar" error message should be correct
ok 458 - Should get error for reserved tag "HEAD"
ok 459 - Reserved tag "HEAD" error ident should be "plan"
ok 460 - And the reserved tag "HEAD" message should be correct
ok 461 - Should get error for reserved tag "ROOT"
ok 462 - Reserved tag "ROOT" error ident should be "plan"
ok 463 - And the reserved tag "ROOT" message should be correct
ok 464 - Should get error for reserved tag "FIRST"
ok 465 - Reserved tag "FIRST" error ident should be "plan"
ok 466 - And the reserved tag "FIRST" message should be correct
ok 467 - Should get error for reserved tag "LAST"
ok 468 - Reserved tag "LAST" error ident should be "plan"
ok 469 - And the reserved tag "LAST" message should be correct
ok 470 - Should get error for a SHA1 tag
ok 471 - SHA1 tag error ident should be "plan"
ok 472 - And the reserved name error should be output
ok 473 - Add change "booyah"
ok 474 - Should have 5 changes
ok 475 - Should find "booyah at index 4
ok 476 - Last change should be "booyah"
ok 477 - The object isa App::Sqitch::Plan::Change
ok 478 - Should have plain stringification of "booya"
ok 479 - Write out the file again
ok 480 - The contents should include the "booyah" change
ok 481 - Add change "blow"
ok 482 - Should have 6 changes
ok 483 - Should find "blow" at index 5
ok 484 - Last change should be "blow"
ok 485 - Should have nice stringification of "blow [booyah]"
ok 486 - The new change should have been appended to the lines, too
ok 487 - Add change "jive" with dupe dependency
ok 488 - Should have 7 changes
ok 489 - Should find "jive" at index 6
ok 490 - jive change should be "jive"
ok 491 - Should have dependency "blow"
ok 492 - Should have nice stringification of "jive [blow]"
ok 493 - The new change should have been appended to the lines, too
ok 494 - Add change "moo" with dupe dependencies
ok 495 - Should have 8 changes
ok 496 - Should find "moo" at index 7
ok 497 - moo change should be "moo"
ok 498 - Should require "ext:whu"
ok 499 - Should conflict with "blow" and "ext:whu"
ok 500 - Should have nice stringification of "moo [ext:foo !blow !ext:whu]"
ok 501 - The new change should have been appended to the lines, too
ok 502 - Should get error trying to add duplicate change
ok 503 - Duplicate change error ident should be "plan"
ok 504 - And the error message should suggest "rework"
ok 505 - Should get error for invalid change "^foo"
ok 506 - Invalid name "^foo" error ident should be "plan"
ok 507 - And the "^foo" error message should be correct
ok 508 - Should get error for invalid change "foo^"
ok 509 - Invalid name "foo^" error ident should be "plan"
ok 510 - And the "foo^" error message should be correct
ok 511 - Should get error for invalid change "foo^6"
ok 512 - Invalid name "foo^6" error ident should be "plan"
ok 513 - And the "foo^6" error message should be correct
ok 514 - Should get error for invalid change "foo^666"
ok 515 - Invalid name "foo^666" error ident should be "plan"
ok 516 - And the "foo^666" error message should be correct
ok 517 - Should get error for invalid change "%hi"
ok 518 - Invalid name "%hi" error ident should be "plan"
ok 519 - And the "%hi" error message should be correct
ok 520 - Should get error for invalid change "hi!"
ok 521 - Invalid name "hi!" error ident should be "plan"
ok 522 - And the "hi!" error message should be correct
ok 523 - Should get error for invalid change "foo@bar"
ok 524 - Invalid name "foo@bar" error ident should be "plan"
ok 525 - And the "foo@bar" error message should be correct
ok 526 - Should get error for invalid change "foo:bar"
ok 527 - Invalid name "foo:bar" error ident should be "plan"
ok 528 - And the "foo:bar" error message should be correct
ok 529 - Should get error for invalid change "+foo"
ok 530 - Invalid name "+foo" error ident should be "plan"
ok 531 - And the "+foo" error message should be correct
ok 532 - Should get error for invalid change "-foo"
ok 533 - Invalid name "-foo" error ident should be "plan"
ok 534 - And the "-foo" error message should be correct
ok 535 - Should get error for invalid change "@foo"
ok 536 - Invalid name "@foo" error ident should be "plan"
ok 537 - And the "@foo" error message should be correct
ok 538 - Should get error for reserved name "HEAD"
ok 539 - Reserved name "HEAD" error ident should be "plan"
ok 540 - And the reserved name "HEAD" message should be correct
ok 541 - Should get error for reserved name "ROOT"
ok 542 - Reserved name "ROOT" error ident should be "plan"
ok 543 - And the reserved name "ROOT" message should be correct
ok 544 - Should get error for reserved name "FIRST"
ok 545 - Reserved name "FIRST" error ident should be "plan"
ok 546 - And the reserved name "FIRST" message should be correct
ok 547 - Should get error for reserved name "LAST"
ok 548 - Reserved name "LAST" error ident should be "plan"
ok 549 - And the reserved name "LAST" message should be correct
ok 550 - Should get failure for failed dependency
ok 551 - Dependency error ident should be "plan"
ok 552 - The dependency error should be correct
ok 553 - Should get failure for invalid dependency
ok 554 - Invalid dependency error ident should be "plan"
ok 555 - The invalid dependency error should be correct
ok 556 - Should get failure for invalid conflict
ok 557 - Invalid conflict error ident should be "plan"
ok 558 - The invalid conflict error should be correct
ok 559 - Should get failure for failed tag dependency
ok 560 - Tag dependency error ident should be "plan"
ok 561 - The tag dependency error should be correct
ok 562 - Should get error for a SHA1 change
ok 563 - SHA1 tag error ident should be "plan"
ok 564 - And the reserved name error should be output
ok 565 - Rework change "you"
ok 566 - The object isa App::Sqitch::Plan::Change
ok 567 - Reworked change should be "you"
ok 568 - Get original "you" change
ok 569 - It should also be named "you"
ok 570 - And it should have the one rework tag
ok 571 - The original file should now be named you@bar.sql
ok 572 - App::Sqitch::Plan->can('rework')
ok 573 - It should require the previous "you" change
ok 574 - The new "you" should have been appended to the lines, too
ok 575 - It should be at position 8
ok 576 - The plan count should be 9
ok 577 - Tag @beta1
ok 578 - Rework change "you" again
ok 579 - The object isa App::Sqitch::Plan::Change
ok 580 - New reworked change should be "you"
ok 581 - Get original "you" change again
ok 582 - It should still be named "you"
ok 583 - And it should have the one rework tag
ok 584 - Get you@beta1
ok 585 - The second "you" should be named that
ok 586 - And the second change should have the rework_tag "@beta1"
ok 587 - But the new reworked change should have no rework tags
ok 588 - It should require the previous "you" change
ok 589 - The new reworking should have been appended to the lines
ok 590 - It should be at position 9
ok 591 - The plan count should be 10
ok 592 - rework should die on nonexistent change
ok 593 - Nonexistent change error ident should be "plan"
ok 594 - And the error should suggest "sqitch add"
ok 595 - rework_stpe should die on lack of intervening tag
ok 596 - Missing tag error ident should be "plan"
ok 597 - And the error should suggest "sqitch tag"
ok 598 - rework should die on failed dependency
ok 599 - Rework dependency error ident should be "plan"
ok 600 - The rework dependency error should be correct
ok 601 - Should get failure for invalid dependency
ok 602 - Invalid dependency error ident should be "plan"
ok 603 - The invalid dependency error should be correct
ok 604 - Should get failure for invalid conflict
ok 605 - Invalid conflict error ident should be "plan"
ok 606 - The invalid conflict error should be correct
ok 607 - Plan shoud work plan with dupe change across tags isa App::Sqitch::Plan
ok 608 - Project name should be set
ok 609 - Lines with dupe change should be read from file
ok 610 - Noes with dupe change should be read from file
ok 611 - Should have sorted changes three times
ok 612 - Should get an error trying to find dupe key.
ok 613 - Dupe key error ident should be "plan"
ok 614 - Dupe key error message should be correct
ok 615 - Should get 3 for whatever@HEAD
ok 616 - Should get 0 for whatever@bar
ok 617 - Should get an error seeking dupe key.
ok 618 - Dupe key error ident should be "plan"
ok 619 - Dupe key error message should be correct
ok 620 - Should find whatever@HEAD at index 3
ok 621 - Should find whatever@HEAD at index 0
ok 622 - Should find first instance of whatever at index 0
ok 623 - Should find first instance of whatever after @bar at index 5
ok 624 - Seek whatever@HEAD
ok 625 - Position should be 3
ok 626 - Seek whatever@bar
ok 627 - Position should be 0
ok 628 - Last tagged change should be "hi"
ok 629 - App::Sqitch::Plan->can('open_script')
ok 630 - Open bar.sql
ok 631 - It should be the right file
ok 632 - Open baz.sql
ok 633 - It should be empty
ok 634 - App::Sqitch::Plan->can('check_changes')
ok 635 - Should get original order when no dependencies
ok 636 - Should get original order when no prepreqs
ok 637 - Should get original order when that requires this
ok 638 - Should get original order when other requires that
ok 639 - Should get error for out-of-order dependency
ok 640 - Unordered dependency error ident should be "plan"
ok 641 - And the unordered dependency error message should be correct
ok 642 - Should get error for multiple dependency errors
ok 643 - Multiple dependency error ident should be "plan"
ok 644 - And the multiple dependency error message should be correct
ok 645 - Should get original order when requiring a tag
ok 646 - Should get original order when requiring a step as-of a tag
ok 647 - Should get failure for a step after a tag
ok 648 - Step after tag error ident should be "plan"
ok 649 - And we the unknown change as-of a tag message should be correct
ok 650 - Should get failure for a cycle
ok 651 - Cycle error ident should be "plan"
ok 652 - The cycle error message should be correct
ok 653 - Should get failure for a two-hop cycle
ok 654 - Two-hope cycle error ident should be "plan"
ok 655 - The two-hop cycle error message should be correct
ok 656 - Should get original order with earlier dependency
ok 657 - Should get error with misordered and seen dependencies
ok 658 - Misorderd and seen error ident should be "plan"
ok 659 - And the misordered and seen error message should be correct
ok 660 - Should die on unknown dependency
ok 661 - Unknown dependency error ident should be "plan"
ok 662 - And the error should point to the offending change
ok 663 - Should die on unknown tag dependency
ok 664 - Unknown tag dependency error ident should be "plan"
ok 665 - And the error should point to the offending change
ok 666 - Should get original order with external dependency
ok 667 - Should die on self dependency
ok 668 - Self dependency error ident should be "plan"
ok 669 - And the self dependency error should be correct
ok 670 - Should get original order with cascading dependencies
ok 671 - Should get original order with multiple cascading dependencies
ok 672 - App::Sqitch::Plan->can('_check_dependencies')
ok 673 - Depend "hi" should be in project "dupe_change_diff_tag"
ok 674 - Dependency on "hi" should succeed
ok 675 - Depend "greets" should be in project "dupe_change_diff_tag"
ok 676 - Dependency on "greets" should succeed
ok 677 - Depend "whatever" should be in project "dupe_change_diff_tag"
ok 678 - Dependency on "whatever" should succeed
ok 679 - Depend "@foo" should be in project "dupe_change_diff_tag"
ok 680 - Dependency on "@foo" should succeed
ok 681 - Depend "whatever@foo" should be in project "dupe_change_diff_tag"
ok 682 - Dependency on "whatever@foo" should succeed
ok 683 - Depend "ext:larry" should be in project "ext"
ok 684 - Dependency on "ext:larry" should succeed
ok 685 - Depend "ext:greets" should be in project "ext"
ok 686 - Dependency on "ext:greets" should succeed
ok 687 - Should get error trying to depend on "wanker"
ok 688 - Dependency "req" error ident should be "plan"
ok 689 - And should get unknown dependency message for "wanker"
ok 690 - Should get error trying to depend on "@blah"
ok 691 - Dependency "req" error ident should be "plan"
ok 692 - And should get unknown dependency message for "@blah"
ok 693 - Should get error trying to depend on "greets@foo"
ok 694 - Dependency "req" error ident should be "plan"
ok 695 - And should get unknown dependency message for "greets@foo"
ok 696 - Should have undef URI when no pragma
ok 697 - Plan with sqitch with plan file with dependencies isa App::Sqitch::Plan
ok 698 - syntax_version should be set
ok 699 - Project should be set
ok 700 - Should have URI from pragma
ok 701 - It isa URI
ok 702 - Should die on plan with no project pragma
ok 703 - Missing prorject error ident should be "plan"
ok 704 - The missing project error message should be correct
ok 705 - Should die on invalid project name "^foo"
ok 706 - Ident for bad proj "^foo" should be "plan"
ok 707 - Error message for bad project "^foo" should be correct
ok 708 - Should die on invalid project name "foo^"
ok 709 - Ident for bad proj "foo^" should be "plan"
ok 710 - Error message for bad project "foo^" should be correct
ok 711 - Should die on invalid project name "foo^6"
ok 712 - Ident for bad proj "foo^6" should be "plan"
ok 713 - Error message for bad project "foo^6" should be correct
ok 714 - Should die on invalid project name "foo^666"
ok 715 - Ident for bad proj "foo^666" should be "plan"
ok 716 - Error message for bad project "foo^666" should be correct
ok 717 - Should die on invalid project name "%hi"
ok 718 - Ident for bad proj "%hi" should be "plan"
ok 719 - Error message for bad project "%hi" should be correct
ok 720 - Should die on invalid project name "hi!"
ok 721 - Ident for bad proj "hi!" should be "plan"
ok 722 - Error message for bad project "hi!" should be correct
ok 723 - Should die on invalid project name "foo@bar"
ok 724 - Ident for bad proj "foo@bar" should be "plan"
ok 725 - Error message for bad project "foo@bar" should be correct
ok 726 - Should die on invalid project name "foo:bar"
ok 727 - Ident for bad proj "foo:bar" should be "plan"
ok 728 - Error message for bad project "foo:bar" should be correct
ok 729 - Should die on invalid project name "+foo"
ok 730 - Ident for bad proj "+foo" should be "plan"
ok 731 - Error message for bad project "+foo" should be correct
ok 732 - Should die on invalid project name "-foo"
ok 733 - Ident for bad proj "-foo" should be "plan"
ok 734 - Error message for bad project "-foo" should be correct
ok 735 - Should die on invalid project name "@foo"
ok 736 - Ident for bad proj "@foo" should be "plan"
ok 737 - Error message for bad project "@foo" should be correct
1..737
ok
t/pod-coverage.t ...
1..31
ok 1 - Pod coverage on App::Sqitch
ok 2 - Pod coverage on App::Sqitch::Command
ok 3 - Pod coverage on App::Sqitch::Config
ok 4 - Pod coverage on App::Sqitch::DateTime
ok 5 - Pod coverage on App::Sqitch::Engine
ok 6 - Pod coverage on App::Sqitch::Plan
ok 7 - Pod coverage on App::Sqitch::X
ok 8 - Pod coverage on App::Sqitch::Command::add
ok 9 - Pod coverage on App::Sqitch::Command::bundle
ok 10 - Pod coverage on App::Sqitch::Command::config
ok 11 - Pod coverage on App::Sqitch::Command::deploy
ok 12 - Pod coverage on App::Sqitch::Command::help
ok 13 - Pod coverage on App::Sqitch::Command::init
ok 14 - Pod coverage on App::Sqitch::Command::log
ok 15 - Pod coverage on App::Sqitch::Command::rebase
ok 16 - Pod coverage on App::Sqitch::Command::revert
ok 17 - Pod coverage on App::Sqitch::Command::rework
ok 18 - Pod coverage on App::Sqitch::Command::show
ok 19 - Pod coverage on App::Sqitch::Command::status
ok 20 - Pod coverage on App::Sqitch::Command::tag
ok 21 - Pod coverage on App::Sqitch::Command::verify
ok 22 - Pod coverage on App::Sqitch::Engine::pg
ok 23 - Pod coverage on App::Sqitch::Engine::sqlite
ok 24 - Pod coverage on App::Sqitch::Plan::Blank
ok 25 - Pod coverage on App::Sqitch::Plan::Change
ok 26 - Pod coverage on App::Sqitch::Plan::ChangeList
ok 27 - Pod coverage on App::Sqitch::Plan::Depend
ok 28 - Pod coverage on App::Sqitch::Plan::Line
ok 29 - Pod coverage on App::Sqitch::Plan::LineList
ok 30 - Pod coverage on App::Sqitch::Plan::Pragma
ok 31 - Pod coverage on App::Sqitch::Plan::Tag
ok
t/pod.t ............
1..65
ok 1 - POD test for blib\lib\sqitch-add-usage.pod
ok 2 - POD test for blib\lib\sqitch-add.pod
ok 3 - POD test for blib\lib\sqitch-bundle-usage.pod
ok 4 - POD test for blib\lib\sqitch-bundle.pod
ok 5 - POD test for blib\lib\sqitch-config-usage.pod
ok 6 - POD test for blib\lib\sqitch-config.pod
ok 7 - POD test for blib\lib\sqitch-deploy-usage.pod
ok 8 - POD test for blib\lib\sqitch-deploy.pod
ok 9 - POD test for blib\lib\sqitch-help-usage.pod
ok 10 - POD test for blib\lib\sqitch-help.pod
ok 11 - POD test for blib\lib\sqitch-init-usage.pod
ok 12 - POD test for blib\lib\sqitch-init.pod
ok 13 - POD test for blib\lib\sqitch-log-usage.pod
ok 14 - POD test for blib\lib\sqitch-log.pod
ok 15 - POD test for blib\lib\sqitch-rebase-usage.pod
ok 16 - POD test for blib\lib\sqitch-rebase.pod
ok 17 - POD test for blib\lib\sqitch-revert-usage.pod
ok 18 - POD test for blib\lib\sqitch-revert.pod
ok 19 - POD test for blib\lib\sqitch-rework-usage.pod
ok 20 - POD test for blib\lib\sqitch-rework.pod
ok 21 - POD test for blib\lib\sqitch-show-usage.pod
ok 22 - POD test for blib\lib\sqitch-show.pod
ok 23 - POD test for blib\lib\sqitch-status-usage.pod
ok 24 - POD test for blib\lib\sqitch-status.pod
ok 25 - POD test for blib\lib\sqitch-tag-usage.pod
ok 26 - POD test for blib\lib\sqitch-tag.pod
ok 27 - POD test for blib\lib\sqitch-verify-usage.pod
ok 28 - POD test for blib\lib\sqitch-verify.pod
ok 29 - POD test for blib\lib\sqitch.pod
ok 30 - POD test for blib\lib\sqitchchanges.pod
ok 31 - POD test for blib\lib\sqitchcommands.pod
ok 32 - POD test for blib\lib\sqitchtutorial.pod
ok 33 - POD test for blib\script\sqitch (no pod)
ok 34 - POD test for blib\script\sqitch.bat (no pod)
ok 35 - POD test for blib\lib\App\Sqitch.pm
ok 36 - POD test for blib\lib\App\Sqitch\Command.pm
ok 37 - POD test for blib\lib\App\Sqitch\Config.pm
ok 38 - POD test for blib\lib\App\Sqitch\DateTime.pm
ok 39 - POD test for blib\lib\App\Sqitch\Engine.pm
ok 40 - POD test for blib\lib\App\Sqitch\Plan.pm
ok 41 - POD test for blib\lib\App\Sqitch\X.pm
ok 42 - POD test for blib\lib\App\Sqitch\Command\add.pm
ok 43 - POD test for blib\lib\App\Sqitch\Command\bundle.pm
ok 44 - POD test for blib\lib\App\Sqitch\Command\config.pm
ok 45 - POD test for blib\lib\App\Sqitch\Command\deploy.pm
ok 46 - POD test for blib\lib\App\Sqitch\Command\help.pm
ok 47 - POD test for blib\lib\App\Sqitch\Command\init.pm
ok 48 - POD test for blib\lib\App\Sqitch\Command\log.pm
ok 49 - POD test for blib\lib\App\Sqitch\Command\rebase.pm
ok 50 - POD test for blib\lib\App\Sqitch\Command\revert.pm
ok 51 - POD test for blib\lib\App\Sqitch\Command\rework.pm
ok 52 - POD test for blib\lib\App\Sqitch\Command\show.pm
ok 53 - POD test for blib\lib\App\Sqitch\Command\status.pm
ok 54 - POD test for blib\lib\App\Sqitch\Command\tag.pm
ok 55 - POD test for blib\lib\App\Sqitch\Command\verify.pm
ok 56 - POD test for blib\lib\App\Sqitch\Engine\pg.pm
ok 57 - POD test for blib\lib\App\Sqitch\Engine\sqlite.pm
ok 58 - POD test for blib\lib\App\Sqitch\Plan\Blank.pm
ok 59 - POD test for blib\lib\App\Sqitch\Plan\Change.pm
ok 60 - POD test for blib\lib\App\Sqitch\Plan\ChangeList.pm
ok 61 - POD test for blib\lib\App\Sqitch\Plan\Depend.pm
ok 62 - POD test for blib\lib\App\Sqitch\Plan\Line.pm
ok 63 - POD test for blib\lib\App\Sqitch\Plan\LineList.pm
ok 64 - POD test for blib\lib\App\Sqitch\Plan\Pragma.pm
ok 65 - POD test for blib\lib\App\Sqitch\Plan\Tag.pm
ok
t/pragma.t .........
1..10
ok 1 - require App::Sqitch::Plan::Pragma;
ok 2 - App::Sqitch::Plan::Pragma->can(...)
ok 3 - The object isa App::Sqitch::Plan::Pragma
ok 4 - The object isa App::Sqitch::Plan::Line
ok 5 - Name should format as "%foo"
ok 6 - Value should format as ""
ok 7 - should stringify to "%foo"
ok 8 - Create pragma with more stuff
ok 9 - It should stringify correctly
ok 10 - no warnings
ok
t/rebase.t .........
ok 1 - require App::Sqitch::Command::rebase;
ok 2 - The class isa App::Sqitch::Command
ok 3 - App::Sqitch::Command::rebase->can(...)
ok 4 - Options should be correct
ok 5 - Should have empty default configuration with no config or opts
ok 6 - Should have set option
ok 7 - Should have mode, deploy_variables, verify, no_prompt, and log_only
ok 8 - Should have set_revert option and no_prompt false
ok 9 - set_deploy and set_revert should overrid set
ok 10 - set_deploy and set_revert should merge with set
ok 11 - set_revert should merge with set_deploy
ok 12 - Should have deploy configuration
ok 13 - Should have merged variables
ok 14 - Should have merged --set, deploy, rebase
ok 15 - The object isa App::Sqitch::Command::rebase
ok 16 - Should pick up deploy variables from configuration
ok 17 - Should pick up revert variables from configuration
ok 18 - Should have no_prompt true
ok 19 - Should havev false no_prompt and verify from rebase config
ok 20 - Should have no_prompt true from rebase and verify from deploy
ok 21 - Should have no_prompt false and mode all again
ok 22 - Should have no_prompt false for false config
ok 23 - Should have no_prompt true with -y
ok 24 - The object isa App::Sqitch::Command::rebase
ok 25 - onto_target should be undef
ok 26 - upto_target should be undef
ok 27 - Execute to "@alpha"
ok 28 - undef, "all", and 0 should be passed to the engine deploy
ok 29 - "@alpha" and 0 should be passed to the engine revert
ok 30 - Engine should prompt
ok 31 - Execute
ok 32 - undef, "all", and 0 should be passed to the engine deploy
ok 33 - undef and = should be passed to the engine revert
ok 34 - No vars should have been passed through to the engine
ok 35 - Object with to and variables isa App::Sqitch::Command::rebase
ok 36 - Execute again
ok 37 - Engine should be no_prompt
ok 38 - Engine should verify
ok 39 - "bar", "tag", and 1 should be passed to the engine deploy
ok 40 - "foo" and 1 should be passed to the engine revert
ok 41 - Variables should have been passed to the engine twice
ok 42 - The revert vars should have been passed first
ok 43 - The deploy vars should have been next
1..43
ok
t/revert.t .........
ok 1 - require App::Sqitch::Command::revert;
ok 2 - The class isa App::Sqitch::Command
ok 3 - App::Sqitch::Command::revert->can(...)
ok 4 - Options should be correct
ok 5 - Should have empty default configuration with no config or opts
ok 6 - Should have set option
ok 7 - Should have no_prompt false
ok 8 - Should have merged variables
ok 9 - Should have merged --set, deploy, revert
ok 10 - The object isa App::Sqitch::Command::revert
ok 11 - Should pick up variables from configuration
ok 12 - Should have no_prompt true
ok 13 - Should have no_prompt false again
ok 14 - Should have no_prompt false for false config
ok 15 - Should have no_prompt true with -y
ok 16 - The object isa App::Sqitch::Command::revert
ok 17 - to_target should be undef
ok 18 - Execute to "@alpha"
ok 19 - Engine should be no_prompt
ok 20 - "@alpha" and "all" should be passed to the engine
ok 21 - Execute
ok 22 - undef and "all" should be passed to the engine
ok 23 - No vars should have been passed through to the engine
ok 24 - Object with to and variables isa App::Sqitch::Command::revert
ok 25 - Execute again
ok 26 - Engine should not be no_prompt
ok 27 - "foo" and 1 should be passed to the engine
ok 28 - Vars should have been passed through to the engine
1..28
ok
t/rework.t .........
1..80
ok 1 - Load a sqitch sqitch object
ok 2 - rework command isa App::Sqitch::Command::rework
ok 3 - App::Sqitch::Command::rework->can(...)
ok 4 - Options should be set up
ok 5 - Should have default configuration with no config or opts
ok 6 - Should have get requires, conflicts, and note options
ok 7 - Requires should be an arrayref
ok 8 - Conflicts should be an arrayref
ok 9 - Note should be an arrayref
ok 10 - Should get an example for nonexistent change
ok 11 - Nonexistent change error ident should be "plan"
ok 12 - Fail message should say the step does not exist
ok 13 - Create another add with template_directory
ok 14 - sql\deploy\foo.sql does not exist
ok 15 - sql\revert\foo.sql does not exist
ok 16 - sql\verify\foo.sql does not exist
ok 17 - sql\deploy\foo.sql exists
ok 18 - sql\revert\foo.sql exists
ok 19 - sql\verify\foo.sql exists
ok 20 - Get the "foo" change
ok 21 - Should get an example for duplicate change
ok 22 - Duplicate change error ident should be "plan"
ok 23 - Fail message should say a tag is needed
ok 24 - Tag it
ok 25 - sql\deploy\foo@alpha.sql does not exist
ok 26 - sql\revert\foo@alpha.sql does not exist
ok 27 - sql\verify\foo@alpha.sql does not exist
ok 28 - Rework "foo"
ok 29 - sql\deploy\foo.sql exists
ok 30 - sql\revert\foo.sql exists
ok 31 - sql\verify\foo.sql exists
ok 32 - sql\deploy\foo@alpha.sql exists
ok 33 - sql\revert\foo@alpha.sql exists
ok 34 - sql\verify\foo@alpha.sql exists
ok 35 - sql\deploy\foo@alpha.sql and sql\deploy\foo.sql contents are the same
ok 36 - sql\verify\foo@alpha.sql and sql\verify\foo.sql contents are the same
ok 37 - sql\revert\foo.sql and sql\deploy\foo.sql contents are the same
ok 38 - New revert should revert
ok 39 - It should have prompted for a note
ok 40 - Reload the plan file
ok 41 - Get the steps
ok 42 - Should have two steps
ok 43 - First step should be "foo"
ok 44 - Second step should also be "foo"
ok 45 - Reworked step should require the previous step
ok 46 - And the info message should suggest editing the old files
ok 47 - Debug should show file copying
ok 48 - Create another add with template_directory
ok 49 - sql\deploy\bar.sql does not exist
ok 50 - sql\revert\bar.sql does not exist
ok 51 - sql\verify\bar.sql does not exist
ok 52 - sql\deploy\bar.sql exists
ok 53 - sql\revert\bar.sql does not exist
ok 54 - sql\verify\bar.sql does not exist
ok 55 - Tag it with @beta
ok 56 - rework command with requirements and conflicts isa App::Sqitch::Command::rework
ok 57 - sql\deploy\bar@beta.sql does not exist
ok 58 - sql\revert\bar@beta.sql does not exist
ok 59 - sql\verify\bar@beta.sql does not exist
ok 60 - Rework "bar"
ok 61 - sql\deploy\bar.sql exists
ok 62 - sql\revert\bar.sql does not exist
ok 63 - sql\verify\bar.sql does not exist
ok 64 - sql\deploy\bar@beta.sql exists
ok 65 - sql\revert\bar@beta.sql does not exist
ok 66 - sql\verify\bar@beta.sql does not exist
ok 67 - It should have prompted for a note
ok 68 - Reload the plan file again
ok 69 - Get the steps
ok 70 - Should have four steps
ok 71 - First step should be "foo"
ok 72 - Second step should also be "foo"
ok 73 - First step should be "bar"
ok 74 - Second step should also be "bar"
ok 75 - Requires should have been passed to reworked change
ok 76 - Conflicts should have been passed to reworked change
ok 77 - Note should have been passed as comment
ok 78 - And the info message should show only the one file to modify
ok 79 - Should have debug oputput for missing files
ok 80 - no warnings
ok
t/show.t ...........
ok 1 - require App::Sqitch::Command::show;
ok 2 - The class isa App::Sqitch::Command
ok 3 - App::Sqitch::Command::show->can('execute')
ok 4 - Options should be correct
ok 5 - The object isa App::Sqitch::Command::show
ok 6 - Get a change
ok 7 - Find change by id
ok 8 - The change info should have been emitted
ok 9 - Find change by name
ok 10 - The change info should have been emitted again
ok 11 - Should get an error for an unknown change
ok 12 - Unknown change error ident should be "show"
ok 13 - Should get proper error for unknown change
ok 14 - Find change by tag id
ok 15 - The change info should have been emitted
ok 16 - Find change by tag
ok 17 - The change info should have been emitted
ok 18 - Find tag by id
ok 19 - The tag info should have been emitted
ok 20 - Find tag by name
ok 21 - The tag info should have been emitted
ok 22 - Find tag by formatted name
ok 23 - The tag info should have been emitted
ok 24 - Should get errof for non-existent tag
ok 25 - Unknown tag error ident should be "show"
ok 26 - Should get proper error for unknown tag
ok 27 - Should get errof for non-existent tag ID
ok 28 - Unknown tag ID error ident should be "show"
ok 29 - Should get proper error for unknown tag ID
ok 30 - Show a deploy file
ok 31 - The deploy file should have been emitted
ok 32 - Show a revert file
ok 33 - The revert file should have been emitted
ok 34 - Should get error for nonexistent varify file
ok 35 - Nonexistent file error ident should be "show"
ok 36 - Should get proper error for nonexistent file
ok 37 - Should get usage for missing params
ok 38 - Nothing should have been passed to usage
ok 39 - Should get error for uknown type
ok 40 - Unknown type error ident should be "show"
ok 41 - Should get proper error for unknown type
1..41
ok
t/sqlite.t .........
1..13
ok 1 - require App::Sqitch::Engine::sqlite;
ok 2 - config_vars should return three vars
ok 3 - The object isa App::Sqitch::Engine::sqlite
ok 4 - client should default to sqlite3
ok 5 - db_name should be required
ok 6 - sqitch_prefix should default to "sqitch"
ok 7 - Create another sqlite
ok 8 - client should fall back on config
ok 9 - db_name should fall back on config
ok 10 - sqitch_prefix should fall back on config
ok 11 - Create sqlite with sqitch with --client and --db-name
ok 12 - The client should be grabbed from sqitch
ok 13 - The db_name should be grabbed from sqitch
ok
t/status.t .........
1..91
ok 1 - require App::Sqitch::Command::status;
ok 2 - Load a sqitch object
ok 3 - status command isa App::Sqitch::Command::status
ok 4 - App::Sqitch::Command::status->can(...)
ok 5 - Options should be correct
ok 6 - Should have error for uninitialized database
ok 7 - Uninitialized database error ident should be "status"
ok 8 - Uninitialized database error message should be correct
ok 9 - new status command isa App::Sqitch::Command::status
ok 10 - Should have project "foo"
ok 11 - Load a sqitch object with SQLite
ok 12 - Create another status command
ok 13 - Should get an error for uninitialized db
ok 14 - Uninitialized db error ident should be "status"
ok 15 - Uninitialized db error message should be correct
ok 16 - Should get an error for no registered projects
ok 17 - No projects error ident should be "status"
ok 18 - No projects error message should be correct
ok 19 - Should get an error for too many projects
ok 20 - Too many projects error ident should be "status"
ok 21 - Too many projects error message should be correct
ok 22 - Should find single project
ok 23 - Load another sqitch object
ok 24 - another status command isa App::Sqitch::Command::status
ok 25 - Should have plan project
ok 26 - Should get empty hash for no config or options
ok 27 - Should get error for invalid date format in config
ok 28 - Invalid date format error ident should be "datetime"
ok 29 - Invalid date format error message should be correct
ok 30 - Should get error for invalid date format in optsions
ok 31 - Invalid date format error ident should be "status"
ok 32 - Invalid date format error message should be correct
ok 33 - Emit the state
ok 34 - The state should have been emitted
ok 35 - Emit the state with a tag
ok 36 - The state should have been emitted with a tag
ok 37 - Emit the state with multiple tags
ok 38 - The state should have been emitted with multiple tags
ok 39 - Create status command with an engine
ok 40 - Try to emit changes
ok 41 - Should have emitted no changes
ok 42 - Create change-showing status command
ok 43 - Emit changes again
ok 44 - Project "foo" should have been passed to current_changes
ok 45 - Should have emitted one change
ok 46 - Emit changes thrice
ok 47 - Project "foo" again should have been passed to current_changes
ok 48 - Should have emitted three changes
ok 49 - Try to emit tags
ok 50 - No tags should have been emitted
ok 51 - Create tag-showing status command
ok 52 - Try to emit tags again
ok 53 - Project "bar" should be passed to current_tags()
ok 54 - Should have emitted a header for no tags
ok 55 - Emit tags
ok 56 - Project "bar" should again be passed to current_tags()
ok 57 - Should have emitted one tag
ok 58 - Emit tags again
ok 59 - Project "bar" should once more be passed to current_tags()
ok 60 - Should have emitted all three tags
ok 61 - Create status command with actual plan command
ok 62 - Emit status
ok 63 - Should have a blank comment line
ok 64 - Should emit up-to-date output
ok 65 - Emit status again
ok 66 - Should have a blank comment line
ok 67 - Should emit list of undeployed changes
ok 68 - Emit status thrice
ok 69 - Should have a blank comment line
ok 70 - Should emit list of undeployed changes
ok 71 - Die on invalid ID
ok 72 - Invalid ID error ident should be "status"
ok 73 - The invalid ID error message should be correct
ok 74 - Should have a blank comment line
ok 75 - Should have a message about inability to find the change
ok 76 - Execute
ok 77 - The state should have been emitted
ok 78 - Should emit list of undeployed changes
ok 79 - Create status command with specified project
ok 80 - Execute for specified project
ok 81 - The specified project state should have been emitted
ok 82 - Should emit unknown status message for specified project
ok 83 - Create status command with external project
ok 84 - Execute for external project
ok 85 - The external project state should have been emitted
ok 86 - Should emit unknown status message for external project
ok 87 - Die on no state
ok 88 - No state error ident should be "status"
ok 89 - No state error message should be correct
ok 90 - The "On database" comment should have been emitted
ok 91 - no warnings
ok
t/tag.t ............
1..27
ok 1 - require App::Sqitch::Plan::Tag;
ok 2 - App::Sqitch::Plan::Tag->can(...)
ok 3 - The object isa App::Sqitch::Plan::Tag
ok 4 - The object isa App::Sqitch::Plan::Line
ok 5 - Name should format as "@foo"
ok 6 - Timestamp isa App::Sqitch::DateTime
ok 7 - Planner name shoudld default to user name
ok 8 - Planner email shoudld default to user email
ok 9 - Planner name and email should format properly
ok 10 - Should as_string to "@foo" + timstamp + planner
ok 11 - Tag info should incldue the URI
ok 12 - Old tag info should incldue the URI
ok 13 - Create tag with more stuff
ok 14 - It should as_string correctly
ok 15 - Change should be correct
ok 16 - Planner name and email should format properly
ok 17 - Change should be for previous change
ok 18 - Tag info should include the change
ok 19 - Tag ID should be correct
ok 20 - Old tag info should include the change
ok 21 - Old tag ID should be correct
ok 22 - Create tag with UTF-8 name
ok 23 - The name should be decoded text in info
ok 24 - Tag ID should be hahsed from encoded UTF-8
ok 25 - Old name should be decoded text in info
ok 26 - Old tag ID should be hahsed from encoded UTF-8
ok 27 - no warnings
ok
t/tag_cmd.t ........
1..29
ok 1 - Load a sqitch sqitch object
ok 2 - tag command isa App::Sqitch::Command::tag
ok 3 - App::Sqitch::Command::tag->can(...)
ok 4 - Should have note option
ok 5 - Add change "foo"
ok 6 - Tag @alpha
ok 7 - Should have tagged "foo"
ok 8 - Reload plan
ok 9 - New tag should have been written
ok 10 - New tag should have empty note
ok 11 - Should have requested a note
ok 12 - The info message should be correct
ok 13 - Execute with no arg
ok 14 - The one tag should have been listed
ok 15 - Should have requested a note
ok 16 - Add tag @beta
ok 17 - Execute with no arg again
ok 18 - Both tags should have been listed
ok 19 - Should have requested a note
ok 20 - tag command with note isa App::Sqitch::Command::tag
ok 21 - Tag @gamma
ok 22 - Gamma tag should be on change "foo"
ok 23 - Gamma tag should have note
ok 24 - Reload plan
ok 25 - Gamma tag should have been written
ok 26 - Written tag should have note
ok 27 - Should have requested a note
ok 28 - The gamma note should be correct
ok 29 - no warnings
ok
t/verify.t .........
ok 1 - require App::Sqitch::Command::verify;
ok 2 - The class isa App::Sqitch::Command
ok 3 - App::Sqitch::Command::verify->can(...)
ok 4 - Options should be correct
ok 5 - Should have default configuration with no config or opts
ok 6 - Should have targets and variables from options
ok 7 - Should have no config if no options
ok 8 - Should have merged variables
ok 9 - The object isa App::Sqitch::Command::verify
ok 10 - Should pick up variables from configuration
ok 11 - The object isa App::Sqitch::Command::verify
ok 12 - from_target should be undef
ok 13 - to_target should be undef
ok 14 - Execute with nothing.
ok 15 - Two undefs should be passed to the engine
ok 16 - Execute from "@alpha"
ok 17 - "@alpha" and undef should be passed to the engine
ok 18 - Execute from "@alpha" to "@beta"
ok 19 - "@alpha" and "@beat" should be passed to the engine
ok 20 - Object with from, to, and variables isa App::Sqitch::Command::verify
ok 21 - Execute again
ok 22 - "foo" and "bar" should be passed to the engine
ok 23 - Vars should have been passed through to the engine
ok 24 - Execute with command-line args
ok 25 - "foo" and "bar" should be passed to the engine
ok 26 - Vars should have been passed through to the engine
1..26
ok
t/x.t ..............
ok 1 - require App::Sqitch::X;
ok 2 - X object isa App::Sqitch::X
ok 3 - X object does Throwable
ok 4 - X object does Role::HasMessage
ok 5 - X object does StackTrace::Auto
ok 6 - X object does Role::Identifiable::HasIdent
ok 7 - Create X without ident
ok 8 - Default ident should be "DEV"
ok 9 - threw App::Sqitch::X
ok 10 - Thrown object isa App::Sqitch::X
ok 11 - Ident should be "basic"
ok 12 - The message should have been passed
ok 13 - It should have a stack trace
ok 14 - Exit val should be 2
ok 15 - The trace should start in this file
ok 16 - threw App::Sqitch::X
ok 17 - Thrown object isa App::Sqitch::X
ok 18 - Ident should be "DEV"
ok 19 - The message should have been passed
ok 20 - Exit val should again be 2
ok 21 - threw App::Sqitch::X
ok 22 - Thrown object isa App::Sqitch::X
ok 23 - The params should have been passed
ok 24 - Exit val should be 1
ok 25 - Stringification should work
ok 26 - Stringification should work
ok 27 - Should be an "io" exception
ok 28 - Should catch error called via &goto
1..28
ok
All tests successful.
Files=33, Tests=3972, 43 wallclock secs ( 0.37 usr + 0.08 sys = 0.45 CPU)
Result: PASS
DWHEELER/App-Sqitch-0.953.tar.gz
C:\Perl-5.12\bin\perl.exe ./Build test verbose=1 -- OK
David E. Wheeler <david@justatheory.com>
Sane database change management
>>> (cd C:\cpanfly-5.12\var\cpan\build\App-Sqitch-0.953-zOYffs && tar cvf - App-Sqitch-0.953.ppd blib) | gzip -c >C:/cpanfly-5.12/var/REPO/D/DW/DWHEELER/App-Sqitch-0.953.tar.gz
App-Sqitch-0.953.ppd
blib/
blib/etc/
blib/etc/templates/
blib/etc/templates/deploy.tmpl
blib/etc/templates/revert.tmpl
blib/etc/templates/verify.tmpl
blib/lib/
blib/lib/App/
blib/lib/App/Sqitch/
blib/lib/App/Sqitch/Command/
blib/lib/App/Sqitch/Command/add.pm
blib/lib/App/Sqitch/Command/bundle.pm
blib/lib/App/Sqitch/Command/config.pm
blib/lib/App/Sqitch/Command/deploy.pm
blib/lib/App/Sqitch/Command/help.pm
blib/lib/App/Sqitch/Command/init.pm
blib/lib/App/Sqitch/Command/log.pm
blib/lib/App/Sqitch/Command/rebase.pm
blib/lib/App/Sqitch/Command/revert.pm
blib/lib/App/Sqitch/Command/rework.pm
blib/lib/App/Sqitch/Command/show.pm
blib/lib/App/Sqitch/Command/status.pm
blib/lib/App/Sqitch/Command/tag.pm
blib/lib/App/Sqitch/Command/verify.pm
blib/lib/App/Sqitch/Command.pm
blib/lib/App/Sqitch/Config.pm
blib/lib/App/Sqitch/DateTime.pm
blib/lib/App/Sqitch/Engine/
blib/lib/App/Sqitch/Engine/pg.pm
blib/lib/App/Sqitch/Engine/pg.sql
blib/lib/App/Sqitch/Engine/sqlite.pm
blib/lib/App/Sqitch/Engine.pm
blib/lib/App/Sqitch/Plan/
blib/lib/App/Sqitch/Plan/Blank.pm
blib/lib/App/Sqitch/Plan/Change.pm
blib/lib/App/Sqitch/Plan/ChangeList.pm
blib/lib/App/Sqitch/Plan/Depend.pm
blib/lib/App/Sqitch/Plan/Line.pm
blib/lib/App/Sqitch/Plan/LineList.pm
blib/lib/App/Sqitch/Plan/Pragma.pm
blib/lib/App/Sqitch/Plan/Tag.pm
blib/lib/App/Sqitch/Plan.pm
blib/lib/App/Sqitch/X.pm
blib/lib/App/Sqitch.pm
blib/lib/LocaleData/
blib/lib/LocaleData/de/
blib/lib/LocaleData/de/LC_MESSAGES/
blib/lib/LocaleData/de/LC_MESSAGES/App-Sqitch.mo
blib/lib/LocaleData/fr/
blib/lib/LocaleData/fr/LC_MESSAGES/
blib/lib/LocaleData/fr/LC_MESSAGES/App-Sqitch.mo
blib/lib/sqitch-add-usage.pod
blib/lib/sqitch-add.pod
blib/lib/sqitch-bundle-usage.pod
blib/lib/sqitch-bundle.pod
blib/lib/sqitch-config-usage.pod
blib/lib/sqitch-config.pod
blib/lib/sqitch-deploy-usage.pod
blib/lib/sqitch-deploy.pod
blib/lib/sqitch-help-usage.pod
blib/lib/sqitch-help.pod
blib/lib/sqitch-init-usage.pod
blib/lib/sqitch-init.pod
blib/lib/sqitch-log-usage.pod
blib/lib/sqitch-log.pod
blib/lib/sqitch-rebase-usage.pod
blib/lib/sqitch-rebase.pod
blib/lib/sqitch-revert-usage.pod
blib/lib/sqitch-revert.pod
blib/lib/sqitch-rework-usage.pod
blib/lib/sqitch-rework.pod
blib/lib/sqitch-show-usage.pod
blib/lib/sqitch-show.pod
blib/lib/sqitch-status-usage.pod
blib/lib/sqitch-status.pod
blib/lib/sqitch-tag-usage.pod
blib/lib/sqitch-tag.pod
blib/lib/sqitch-verify-usage.pod
blib/lib/sqitch-verify.pod
blib/lib/sqitch.pod
blib/lib/sqitchchanges.pod
blib/lib/sqitchcommands.pod
blib/lib/sqitchtutorial.pod
blib/script/
blib/script/sqitch
blib/script/sqitch.bat
>>> mv C:\cpanfly-5.12\var\cpan\build\App-Sqitch-0.953-zOYffs/App-Sqitch-0.953.ppd C:/cpanfly-5.12/var/REPO/D/DW/DWHEELER
Finished 2013-02-21T21:09:51