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:\cygwin\bin;C:\cpanfly-5.14\var\megalib\bin;C:\Perl-5.14\site\bin;C:\Perl-5.14\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 2015-05-21T00:27:05
ActivePerl-1400 CPAN-2.00
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.14/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:\cygwin\bin;C:\CPANFL~1.14\var\megalib\bin;C:\Perl-5.14\site\bin;C:\Perl-5.14\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
Reading 'C:\cpanfly-5.14\var\cpan\Metadata'
Database was generated on Thu, 21 May 2015 02:53:18 GMT
Running make for D/DW/DWHEELER/App-Sqitch-0.9992.tar.gz
Fetching with LWP:
http://cpan.nas1.activestate.com/authors/id/D/DW/DWHEELER/App-Sqitch-0.9992.tar.gz
Fetching with LWP:
http://cpan.nas1.activestate.com/authors/id/D/DW/DWHEELER/CHECKSUMS
Checksum for C:\cpanfly-5.14\var\cpan\sources\authors\id\D\DW\DWHEELER\App-Sqitch-0.9992.tar.gz ok
App-Sqitch-0.9992/t
App-Sqitch-0.9992/t/x.t
App-Sqitch-0.9992/t/pg.t
App-Sqitch-0.9992
App-Sqitch-0.9992/README
App-Sqitch-0.9992/Changes
App-Sqitch-0.9992/t/add.t
App-Sqitch-0.9992/t/log.t
App-Sqitch-0.9992/t/tag.t
App-Sqitch-0.9992/LICENSE
App-Sqitch-0.9992/t/base.t
App-Sqitch-0.9992/t/die.pl
App-Sqitch-0.9992/t/help.t
App-Sqitch-0.9992/t/init.t
App-Sqitch-0.9992/t/plan.t
App-Sqitch-0.9992/t/show.t
App-Sqitch-0.9992/t/sqitch
App-Sqitch-0.9992/META.yml
App-Sqitch-0.9992/MANIFEST
App-Sqitch-0.9992/Build.PL
App-Sqitch-0.9992/README.md
App-Sqitch-0.9992/t/blank.t
App-Sqitch-0.9992/t/echo.pl
App-Sqitch-0.9992/t/mysql.t
App-Sqitch-0.9992/t/read.pl
App-Sqitch-0.9992/META.json
App-Sqitch-0.9992/bin
App-Sqitch-0.9992/bin/sqitch
App-Sqitch-0.9992/t/bundle.t
App-Sqitch-0.9992/t/change.t
App-Sqitch-0.9992/t/config.t
App-Sqitch-0.9992/t/depend.t
App-Sqitch-0.9992/t/deploy.t
App-Sqitch-0.9992/t/engine.t
App-Sqitch-0.9992/t/oracle.t
App-Sqitch-0.9992/t/pragma.t
App-Sqitch-0.9992/t/rebase.t
App-Sqitch-0.9992/t/revert.t
App-Sqitch-0.9992/t/rework.t
App-Sqitch-0.9992/t/sqlite.t
App-Sqitch-0.9992/t/status.t
App-Sqitch-0.9992/t/target.t
App-Sqitch-0.9992/t/verify.t
App-Sqitch-0.9992/t/command.t
App-Sqitch-0.9992/t/core.conf
App-Sqitch-0.9992/t/options.t
App-Sqitch-0.9992/t/tag_cmd.t
App-Sqitch-0.9992/t/upgrade.t
App-Sqitch-0.9992/t/user.conf
App-Sqitch-0.9992/t/vertica.t
App-Sqitch-0.9992/t/checkout.t
App-Sqitch-0.9992/t/datetime.t
App-Sqitch-0.9992/t/firebird.t
App-Sqitch-0.9992/t/linelist.t
App-Sqitch-0.9992/t/local.conf
App-Sqitch-0.9992/t/engine.conf
App-Sqitch-0.9992/t/rework.conf
App-Sqitch-0.9992/t/sqitch.conf
App-Sqitch-0.9992/t/target.conf
App-Sqitch-0.9992/lib
App-Sqitch-0.9992/lib/sqitch.pod
App-Sqitch-0.9992/t/changelist.t
App-Sqitch-0.9992/t/engine_cmd.t
App-Sqitch-0.9992/t/target_cmd.t
App-Sqitch-0.9992/dist
App-Sqitch-0.9992/dist/sqitch.spec
App-Sqitch-0.9992/t/multiplan.conf
App-Sqitch-0.9992/t/plan_command.t
App-Sqitch-0.9992/t/templates.conf
App-Sqitch-0.9992/t/plans
App-Sqitch-0.9992/t/plans/dos.plan
App-Sqitch-0.9992/xt/release
App-Sqitch-0.9992/xt/release/pod.t
App-Sqitch-0.9992/lib/App
App-Sqitch-0.9992/lib/App/Sqitch.pm
App-Sqitch-0.9992/t/add_change.conf
App-Sqitch-0.9992/t/configuration.t
App-Sqitch-0.9992/t/sql
App-Sqitch-0.9992/t/sql/sqitch.plan
App-Sqitch-0.9992/lib/sqitch-add.pod
App-Sqitch-0.9992/lib/sqitch-log.pod
App-Sqitch-0.9992/lib/sqitch-tag.pod
App-Sqitch-0.9992/t/core_target.conf
App-Sqitch-0.9992/t/item_formatter.t
App-Sqitch-0.9992/t/plans/multi.plan
App-Sqitch-0.9992/lib/sqitch-help.pod
App-Sqitch-0.9992/lib/sqitch-init.pod
App-Sqitch-0.9992/lib/sqitch-plan.pod
App-Sqitch-0.9992/lib/sqitch-show.pod
App-Sqitch-0.9992/lib/sqitchusage.pod
App-Sqitch-0.9992/lib/App/Sqitch
App-Sqitch-0.9992/lib/App/Sqitch/X.pm
App-Sqitch-0.9992/t/lib
App-Sqitch-0.9992/t/lib/MockOutput.pm
App-Sqitch-0.9992/lib/sqitchguides.pod
App-Sqitch-0.9992/t/engine
App-Sqitch-0.9992/t/engine/sqitch.plan
App-Sqitch-0.9992/t/plans/pragmas.plan
App-Sqitch-0.9992/t/plans/widgets.plan
App-Sqitch-0.9992/lib/sqitch-bundle.pod
App-Sqitch-0.9992/lib/sqitch-config.pod
App-Sqitch-0.9992/lib/sqitch-deploy.pod
App-Sqitch-0.9992/lib/sqitch-engine.pod
App-Sqitch-0.9992/lib/sqitch-rebase.pod
App-Sqitch-0.9992/lib/sqitch-revert.pod
App-Sqitch-0.9992/lib/sqitch-rework.pod
App-Sqitch-0.9992/lib/sqitch-status.pod
App-Sqitch-0.9992/lib/sqitch-target.pod
App-Sqitch-0.9992/lib/sqitch-verify.pod
App-Sqitch-0.9992/lib/sqitchchanges.pod
App-Sqitch-0.9992/t/plans/dupe-tag.plan
App-Sqitch-0.9992/lib/sqitch-upgrade.pod
App-Sqitch-0.9992/lib/sqitchcommands.pod
App-Sqitch-0.9992/lib/sqitchtutorial.pod
App-Sqitch-0.9992/lib/App/Sqitch/Plan.pm
App-Sqitch-0.9992/t/lib/DBIEngineTest.pm
App-Sqitch-0.9992/t/sql/deploy
App-Sqitch-0.9992/t/sql/deploy/roles.sql
App-Sqitch-0.9992/t/sql/deploy/users.sql
App-Sqitch-0.9992/t/sql/verify
App-Sqitch-0.9992/t/sql/verify/users.sql
App-Sqitch-0.9992/lib/sqitch-checkout.pod
App-Sqitch-0.9992/lib/App/Sqitch/Types.pm
App-Sqitch-0.9992/t/plans/bad-change.plan
App-Sqitch-0.9992/lib/sqitch-add-usage.pod
App-Sqitch-0.9992/lib/sqitch-log-usage.pod
App-Sqitch-0.9992/lib/sqitch-passwords.pod
App-Sqitch-0.9992/lib/sqitch-tag-usage.pod
App-Sqitch-0.9992/lib/App/Sqitch/Config.pm
App-Sqitch-0.9992/lib/App/Sqitch/Engine.pm
App-Sqitch-0.9992/lib/App/Sqitch/Target.pm
App-Sqitch-0.9992/t/plans/dupe-change.plan
App-Sqitch-0.9992/t/sql/deploy/widgets.sql
App-Sqitch-0.9992/lib/sqitch-help-usage.pod
App-Sqitch-0.9992/lib/sqitch-init-usage.pod
App-Sqitch-0.9992/lib/sqitch-plan-usage.pod
App-Sqitch-0.9992/lib/sqitch-show-usage.pod
App-Sqitch-0.9992/lib/App/Sqitch/Command.pm
App-Sqitch-0.9992/t/engine/deploy
App-Sqitch-0.9992/t/engine/deploy/users.sql
App-Sqitch-0.9992/t/engine/revert
App-Sqitch-0.9992/t/engine/revert/users.sql
App-Sqitch-0.9992/t/plans/changes-only.plan
App-Sqitch-0.9992/t/plans/dependencies.plan
App-Sqitch-0.9992/t/plans/project_deps.plan
App-Sqitch-0.9992/t/plans/reserved-tag.plan
App-Sqitch-0.9992/xt/release/pod-coverage.t
App-Sqitch-0.9992/xt/release/pod-spelling.t
App-Sqitch-0.9992/inc/Module/Build
App-Sqitch-0.9992/inc/Module/Build/Sqitch.pm
App-Sqitch-0.9992/lib/sqitch-environment.pod
App-Sqitch-0.9992/lib/App/Sqitch/DateTime.pm
App-Sqitch-0.9992/lib/App/Sqitch/Plan
App-Sqitch-0.9992/lib/App/Sqitch/Plan/Tag.pm
App-Sqitch-0.9992/lib/sqitch-bundle-usage.pod
App-Sqitch-0.9992/lib/sqitch-config-usage.pod
App-Sqitch-0.9992/lib/sqitch-deploy-usage.pod
App-Sqitch-0.9992/lib/sqitch-engine-usage.pod
App-Sqitch-0.9992/lib/sqitch-rebase-usage.pod
App-Sqitch-0.9992/lib/sqitch-revert-usage.pod
App-Sqitch-0.9992/lib/sqitch-rework-usage.pod
App-Sqitch-0.9992/lib/sqitch-status-usage.pod
App-Sqitch-0.9992/lib/sqitch-target-usage.pod
App-Sqitch-0.9992/lib/sqitch-verify-usage.pod
App-Sqitch-0.9992/lib/App/Sqitch/Engine
App-Sqitch-0.9992/lib/App/Sqitch/Engine/pg.pm
App-Sqitch-0.9992/lib/App/Sqitch/Plan/Line.pm
App-Sqitch-0.9992/t/engine/deploy/widgets.sql
App-Sqitch-0.9992/t/engine/revert/widgets.sql
App-Sqitch-0.9992/etc/templates/deploy
App-Sqitch-0.9992/etc/templates/deploy/pg.tmpl
App-Sqitch-0.9992/etc/templates/revert
App-Sqitch-0.9992/etc/templates/revert/pg.tmpl
App-Sqitch-0.9992/etc/templates/verify
App-Sqitch-0.9992/etc/templates/verify/pg.tmpl
App-Sqitch-0.9992/lib/sqitch-configuration.pod
App-Sqitch-0.9992/lib/sqitch-upgrade-usage.pod
App-Sqitch-0.9992/lib/sqitchtutorial-mysql.pod
App-Sqitch-0.9992/lib/App/Sqitch/Engine/pg.sql
App-Sqitch-0.9992/lib/App/Sqitch/Plan/Blank.pm
App-Sqitch-0.9992/lib/sqitch-checkout-usage.pod
App-Sqitch-0.9992/lib/sqitchtutorial-oracle.pod
App-Sqitch-0.9992/lib/sqitchtutorial-sqlite.pod
App-Sqitch-0.9992/lib/App/Sqitch/Command
App-Sqitch-0.9992/lib/App/Sqitch/Command/add.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/log.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/tag.pm
App-Sqitch-0.9992/lib/App/Sqitch/Plan/Change.pm
App-Sqitch-0.9992/lib/App/Sqitch/Plan/Depend.pm
App-Sqitch-0.9992/lib/App/Sqitch/Plan/Pragma.pm
App-Sqitch-0.9992/lib/sqitchtutorial-vertica.pod
App-Sqitch-0.9992/lib/App/Sqitch/Command/help.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/init.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/plan.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/show.pm
App-Sqitch-0.9992/lib/App/Sqitch/Engine/mysql.pm
App-Sqitch-0.9992/t/lib/App/Sqitch/Engine
App-Sqitch-0.9992/t/lib/App/Sqitch/Engine/bad.pm
App-Sqitch-0.9992/t/plans/deploy-and-revert.plan
App-Sqitch-0.9992/etc/templates/deploy/mysql.tmpl
App-Sqitch-0.9992/etc/templates/revert/mysql.tmpl
App-Sqitch-0.9992/etc/templates/verify/mysql.tmpl
App-Sqitch-0.9992/lib/sqitchtutorial-firebird.pod
App-Sqitch-0.9992/lib/App/Sqitch/ItemFormatter.pm
App-Sqitch-0.9992/lib/App/Sqitch/Engine/mysql.sql
App-Sqitch-0.9992/lib/App/Sqitch/Engine/oracle.pm
App-Sqitch-0.9992/lib/App/Sqitch/Engine/sqlite.pm
App-Sqitch-0.9992/lib/App/Sqitch/Plan/LineList.pm
App-Sqitch-0.9992/t/lib/App/Sqitch/Command
App-Sqitch-0.9992/t/lib/App/Sqitch/Command/bad.pm
App-Sqitch-0.9992/t/lib/App/Sqitch/Engine/good.pm
App-Sqitch-0.9992/etc/templates/deploy/oracle.tmpl
App-Sqitch-0.9992/etc/templates/deploy/sqlite.tmpl
App-Sqitch-0.9992/etc/templates/revert/oracle.tmpl
App-Sqitch-0.9992/etc/templates/revert/sqlite.tmpl
App-Sqitch-0.9992/etc/templates/verify/oracle.tmpl
App-Sqitch-0.9992/etc/templates/verify/sqlite.tmpl
App-Sqitch-0.9992/lib/App/Sqitch/Command/bundle.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/config.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/deploy.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/engine.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/rebase.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/revert.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/rework.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/status.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/target.pm
App-Sqitch-0.9992/lib/App/Sqitch/Command/verify.pm
App-Sqitch-0.9992/lib/App/Sqitch/Engine/oracle.sql
App-Sqitch-0.9992/lib/App/Sqitch/Engine/sqlite.sql
App-Sqitch-0.9992/lib/App/Sqitch/Engine/vertica.pm
App-Sqitch-0.9992/lib/App/Sqitch/Role
App-Sqitch-0.9992/lib/App/Sqitch/Role/DBIEngine.pm
App-Sqitch-0.9992/t/lib/App/Sqitch/Command/good.pm
App-Sqitch-0.9992/etc/templates/deploy/vertica.tmpl
App-Sqitch-0.9992/etc/templates/revert/vertica.tmpl
App-Sqitch-0.9992/etc/templates/verify/vertica.tmpl
App-Sqitch-0.9992/lib/App/Sqitch/Command/upgrade.pm
App-Sqitch-0.9992/lib/App/Sqitch/Engine/firebird.pm
App-Sqitch-0.9992/lib/App/Sqitch/Engine/vertica.sql
App-Sqitch-0.9992/lib/App/Sqitch/Plan/ChangeList.pm
App-Sqitch-0.9992/t/engine/deploy/func
App-Sqitch-0.9992/t/engine/deploy/func/add_user.sql
App-Sqitch-0.9992/t/engine/revert/func
App-Sqitch-0.9992/t/engine/revert/func/add_user.sql
App-Sqitch-0.9992/t/plans/dupe-change-diff-tag.plan
App-Sqitch-0.9992/etc/templates/deploy/firebird.tmpl
App-Sqitch-0.9992/etc/templates/revert/firebird.tmpl
App-Sqitch-0.9992/etc/templates/verify/firebird.tmpl
App-Sqitch-0.9992/lib/App/Sqitch/Command/checkout.pm
App-Sqitch-0.9992/lib/App/Sqitch/Engine/firebird.sql
App-Sqitch-0.9992/t/lib/upgradable_registries
App-Sqitch-0.9992/t/lib/upgradable_registries/pg.sql
App-Sqitch-0.9992/t/lib/upgradable_registries/mysql.sql
App-Sqitch-0.9992/t/lib/upgradable_registries/oracle.sql
App-Sqitch-0.9992/t/lib/upgradable_registries/sqlite.sql
App-Sqitch-0.9992/t/lib/upgradable_registries/vertica.sql
App-Sqitch-0.9992/lib/App/Sqitch/Engine/Upgrade
App-Sqitch-0.9992/lib/App/Sqitch/Engine/Upgrade/pg-1.0.sql
App-Sqitch-0.9992/lib/App/Sqitch/Engine/Upgrade/pg-1.1.sql
App-Sqitch-0.9992/t/lib/upgradable_registries/firebird.sql
App-Sqitch-0.9992/lib/App/Sqitch/Role/RevertDeployCommand.pm
App-Sqitch-0.9992/lib/App/Sqitch/Engine/Upgrade/mysql-1.0.sql
App-Sqitch-0.9992/lib/App/Sqitch/Engine/Upgrade/mysql-1.1.sql
App-Sqitch-0.9992/lib/LocaleData/de/LC_MESSAGES
App-Sqitch-0.9992/lib/LocaleData/de/LC_MESSAGES/App-Sqitch.mo
App-Sqitch-0.9992/lib/LocaleData/fr/LC_MESSAGES
App-Sqitch-0.9992/lib/LocaleData/fr/LC_MESSAGES/App-Sqitch.mo
App-Sqitch-0.9992/lib/App/Sqitch/Engine/Upgrade/oracle-1.0.sql
App-Sqitch-0.9992/lib/App/Sqitch/Engine/Upgrade/oracle-1.1.sql
App-Sqitch-0.9992/lib/App/Sqitch/Engine/Upgrade/sqlite-1.0.sql
App-Sqitch-0.9992/lib/App/Sqitch/Engine/Upgrade/sqlite-1.1.sql
App-Sqitch-0.9992/etc/tools
App-Sqitch-0.9992/etc/tools/upgrade-registry-to-mysql-5.5.0.sql
App-Sqitch-0.9992/etc/tools/upgrade-registry-to-mysql-5.6.4.sql
App-Sqitch-0.9992/lib/App/Sqitch/Engine/Upgrade/vertica-1.0.sql
App-Sqitch-0.9992/lib/App/Sqitch/Engine/Upgrade/vertica-1.1.sql
App-Sqitch-0.9992/lib/App/Sqitch/Engine/Upgrade/firebird-1.0.sql
App-Sqitch-0.9992/lib/App/Sqitch/Engine/Upgrade/firebird-1.1.sql
CPAN.pm: Building D/DW/DWHEELER/App-Sqitch-0.9992.tar.gz
>>> C:\Perl-5.14\bin\perl.exe Build.PL
Checking prerequisites...
requires:
! DateTime::TimeZone::Local::Win32 is not installed
ERRORS/WARNINGS FOUND IN PREREQUISITES. You may wish to install the versions
of the modules indicated above before proceeding with this installation
Created MYMETA.yml and MYMETA.json
Creating new 'Build' script for 'App-Sqitch' version '0.9992'
---- Unsatisfied dependencies detected during ----
---- DWHEELER/App-Sqitch-0.9992.tar.gz ----
DateTime::TimeZone::Local::Win32 [requires]
Running Build test
Delayed until after prerequisites
Running test for module 'DateTime::TimeZone::Local::Win32'
Running make for D/DA/DAPINK/DateTime-TimeZone-Local-Win32-1.82.tar.gz
Checksum for C:\cpanfly-5.14\var\cpan\sources\authors\id\D\DA\DAPINK\DateTime-TimeZone-Local-Win32-1.82.tar.gz ok
DateTime-TimeZone-Local-Win32-1.82
DateTime-TimeZone-Local-Win32-1.82/README
DateTime-TimeZone-Local-Win32-1.82/Changes
DateTime-TimeZone-Local-Win32-1.82/LICENSE
DateTime-TimeZone-Local-Win32-1.82/INSTALL
DateTime-TimeZone-Local-Win32-1.82/dist.ini
DateTime-TimeZone-Local-Win32-1.82/MANIFEST
DateTime-TimeZone-Local-Win32-1.82/META.json
DateTime-TimeZone-Local-Win32-1.82/Makefile.PL
DateTime-TimeZone-Local-Win32-1.82/t
DateTime-TimeZone-Local-Win32-1.82/t/00-compile.t
DateTime-TimeZone-Local-Win32-1.82/t/01-local-win32.t
DateTime-TimeZone-Local-Win32-1.82/inc/Devel
DateTime-TimeZone-Local-Win32-1.82/inc/Devel/CheckOS.pm
DateTime-TimeZone-Local-Win32-1.82/inc/Devel/AssertOS.pm
DateTime-TimeZone-Local-Win32-1.82/xt/release
DateTime-TimeZone-Local-Win32-1.82/xt/release/pod-syntax.t
DateTime-TimeZone-Local-Win32-1.82/t/000-report-versions-tiny.t
DateTime-TimeZone-Local-Win32-1.82/inc/Devel/AssertOS
DateTime-TimeZone-Local-Win32-1.82/inc/Devel/AssertOS/MSWin32.pm
DateTime-TimeZone-Local-Win32-1.82/xt/release/changes_has_content.t
DateTime-TimeZone-Local-Win32-1.82/lib/DateTime/TimeZone/Local
DateTime-TimeZone-Local-Win32-1.82/lib/DateTime/TimeZone/Local/Win32.pm
CPAN.pm: Building D/DA/DAPINK/DateTime-TimeZone-Local-Win32-1.82.tar.gz
>>> C:\Perl-5.14\bin\perl.exe Makefile.PL
Checking if your kit is complete...
Warning: the following files are missing in your kit:
inc\Devel\AssertOS.pm
inc\Devel\AssertOS\MSWin32.pm
inc\Devel\CheckOS.pm
Please inform the author.
Generating a nmake-style Makefile
Writing Makefile for DateTime::TimeZone::Local::Win32
Writing MYMETA.yml and MYMETA.json
>>> nmake
Microsoft (R) Program Maintenance Utility Version 7.00.8882
Copyright (C) Microsoft Corp 1988-2000. All rights reserved.
cp lib/DateTime/TimeZone/Local/Win32.pm blib\lib\DateTime\TimeZone\Local\Win32.pm
DAPINK/DateTime-TimeZone-Local-Win32-1.82.tar.gz
nmake -- OK
Running make test
>>> nmake test TEST_VERBOSE=1
Microsoft (R) Program Maintenance Utility Version 7.00.8882
Copyright (C) Microsoft Corp 1988-2000. All rights reserved.
"C:\Perl-5.14\bin\perl.exe" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib\lib', 'blib\arch')" t\*.t
t\00-compile.t ................
1..1
ok 1 - DateTime/TimeZone/Local/Win32.pm loaded ok
ok
#
#
# Generated by Dist::Zilla::Plugin::ReportVersions::Tiny v1.10
# perl: 5.014000 (wanted 5.006) on MSWin32 from C:\Perl-5.14\bin\perl.exe
#
# DateTime => 0.72 (want any version)
# DateTime::TimeZone::Local => 1.90 (want 1.85)
# ExtUtils::MakeMaker => 7.04 (want 6.58)
# File::Basename => 2.82 (want any version)
# File::Spec => 3.47 (want any version)
# IO::Handle => 1.28 (want any version)
# IPC::Open3 => 1.09 (want any version)
# Sys::Hostname => 1.1601 (want any version)
# Test::More => 1.001009 (want 0.88)
# Try::Tiny => 0.22 (want any version)
# Win32::TieRegistry => 0.29 (want 0.27)
# lib => 0.63 (want any version)
# parent => 0.232 (want any version)
# strict => 1.04 (want any version)
# warnings => 1.12 (want any version)
#
# Thanks for using my code. I hope it works for you.
# If not, please try and include this output in the bug report.
# That will help me reproduce the issue and solve your problem.
#
t\000-report-versions-tiny.t ..
ok 1 - we really didn't test anything, just reporting data
1..1
ok
t\01-local-win32.t ............ skipped: These tests require write access to TimeZoneInformation registry key
All tests successful.
Files=3, Tests=2, 2 wallclock secs ( 0.06 usr + 0.00 sys = 0.06 CPU)
Result: PASS
DAPINK/DateTime-TimeZone-Local-Win32-1.82.tar.gz
nmake test TEST_VERBOSE=1 -- OK
Fetching with LWP:
http://cpan.nas1.activestate.com/authors/id/D/DA/DAPINK/CHECKSUMS
Picked up version from Makefile
Picked up distname from Makefile
Picked up abstract from Makefile
David Pinkowitz <dapink@cpan.org>
Determine the local system's time zone on Windows
>>> (cd C:\cpanfly-5.14\var\cpan\build\DateTime-TimeZone-Local-Win32-1.82-os1QdD && tar cvf - DateTime-TimeZone-Local-Win32-1.82.ppd blib) | gzip -c >C:/cpanfly-5.14/var/REPO/D/DA/DAPINK/DateTime-TimeZone-Local-Win32-1.82.tar.gz
DateTime-TimeZone-Local-Win32-1.82.ppd
blib/
blib/lib/
blib/lib/DateTime/
blib/lib/DateTime/TimeZone/
blib/lib/DateTime/TimeZone/Local/
blib/lib/DateTime/TimeZone/Local/Win32.pm
>>> mv C:\cpanfly-5.14\var\cpan\build\DateTime-TimeZone-Local-Win32-1.82-os1QdD/DateTime-TimeZone-Local-Win32-1.82.ppd C:/cpanfly-5.14/var/REPO/D/DA/DAPINK
Running Build for D/DW/DWHEELER/App-Sqitch-0.9992.tar.gz
Prepending C:\cpanfly-5.14\var\cpan\build\DateTime-TimeZone-Local-Win32-1.82-os1QdD/blib/arch C:\cpanfly-5.14\var\cpan\build\DateTime-TimeZone-Local-Win32-1.82-os1QdD/blib/lib to PERL5LIB for 'get'
Has already been unwrapped into directory C:\cpanfly-5.14\var\cpan\build\App-Sqitch-0.9992-m0ozmJ
Prepending C:\cpanfly-5.14\var\cpan\build\DateTime-TimeZone-Local-Win32-1.82-os1QdD/blib/arch C:\cpanfly-5.14\var\cpan\build\DateTime-TimeZone-Local-Win32-1.82-os1QdD/blib/lib to PERL5LIB for 'make'
CPAN.pm: Building D/DW/DWHEELER/App-Sqitch-0.9992.tar.gz
>>> C:\Perl-5.14\bin\perl.exe ./Build
Building App-Sqitch
DWHEELER/App-Sqitch-0.9992.tar.gz
C:\Perl-5.14\bin\perl.exe ./Build -- OK
Prepending C:\cpanfly-5.14\var\cpan\build\DateTime-TimeZone-Local-Win32-1.82-os1QdD/blib/arch C:\cpanfly-5.14\var\cpan\build\DateTime-TimeZone-Local-Win32-1.82-os1QdD/blib/lib to PERL5LIB for 'test'
Running Build test
>>> C:\Perl-5.14\bin\perl.exe ./Build test verbose=1
t/add.t .............
1..226
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 set up template name option
ok 15 - Should have get template options
ok 16 - Variables should by default not be loaded from config
ok 17 - --set should be merged with config variables
ok 18 - --set should be override config variables
ok 19 - Requires should be an arrayref
ok 20 - Conflicts should be an arrayref
ok 21 - Notes should be an arrayref
ok 22 - Varibles should be a hashref
ok 23 - Default dir should be undef
ok 24 - Default temlate_name should be undef
ok 25 - Default with_scripts should be empty
ok 26 - Default templates should be empty
ok 27 - '_check_script' isa 'CODE'
ok 28 - _check_script should be okay with script
ok 29 - _check_script should die on nonexistent file
ok 30 - Nonexistent file ident should be "add"
ok 31 - Nonexistent file error message should be correct
ok 32 - _check_script should die on directory
ok 33 - Directory error ident should be "add"
ok 34 - Directory error message should be correct
ok 35 - Load another sqitch sqitch object
ok 36 - Create add with template config
ok 37 - Should load the config templates
ok 38 - Add object with template directory
ok 39 - Template name should be undef
ok 40 - Should find all templates in directory
ok 41 - Add object with template name
ok 42 - Should find all templates in user directory
ok 43 - Add object with another template name
ok 44 - Should find all templates in systsem directory
ok 45 - Add object with temporary template directory
ok 46 - Template dir files should override others
ok 47 - Add object with configured templates
ok 48 - Template dir files should override others
ok 49 - Add object requiring deploy template
ok 50 - Should get error for missing deploy template
ok 51 - Missing deploy template ident should be "add"
ok 52 - Missing deploy template message should be correct
ok 53 - Add object requiring revert template
ok 54 - Should get error for missing revert template
ok 55 - Missing revert template ident should be "add"
ok 56 - Missing revert template message should be correct
ok 57 - Add object requiring verify template
ok 58 - Should get error for missing verify template
ok 59 - Missing verify template ident should be "add"
ok 60 - Missing verify template message should be correct
ok 61 - _slurp() should load a reference to file contents
ok 62 - test-add\sqitch_change_test.sql does not exist
ok 63 - Create add command
ok 64 - Write out a script
ok 65 - test-add\sqitch_change_test.sql exists
ok 66 - The template should have been evaluated
ok 67 - Info should show $out created
ok 68 - Create add cmd with requires and conflicts
ok 69 - Write out a script with requires and conflicts
ok 70 - Info should show $out created
ok 71 - The template should have been evaluated with requires and conflicts
ok 72 - test-add\sqitch_change_test.sql does not exist
ok 73 - Create add command
ok 74 - Write out a script
ok 75 - test-add\sqitch_change_test.sql exists
ok 76 - The template should have been evaluated
ok 77 - Info should show $out created
ok 78 - Create add cmd with requires and conflicts
ok 79 - Write out a script with requires and conflicts
ok 80 - Info should show $out created
ok 81 - The template should have been evaluated with requires and conflicts
ok 82 - Create add command
ok 83 - Should get an exception on TT syntax error
ok 84 - TT exception ident should be "add"
ok 85 - TT exception message should include the original error message
ok 86 - Create another add with template_directory
ok 87 - Should not have "widgets_table" in plan
ok 88 - dir test-add\deploy does not exist
ok 89 - dir test-add\revert does not exist
ok 90 - dir test-add\verify does not exist
ok 91 - Add change "widgets_table"
ok 92 - 'Added change' isa 'App::Sqitch::Plan::Change'
ok 93 - Change name should be set
ok 94 - It should have no requires
ok 95 - It should have no conflicts
ok 96 - It should have prompted for a note
ok 97 - test-add\deploy\widgets_table.sql exists
ok 98 - test-add\revert\widgets_table.sql exists
ok 99 - test-add\verify\widgets_table.sql exists
ok 100 - Deploy script should look right
ok 101 - Revert script should look right
ok 102 - Verify script should look right
ok 103 - Info should have reported file creation
ok 104 - 'Added change in reloaded plan' isa 'App::Sqitch::Plan::Change'
ok 105 - Create another add with template_directory and no verify script
ok 106 - test-add\deploy\foo_table.sql exists
ok 107 - test-add\revert\foo_table.sql does not exist
ok 108 - test-add\ferify\foo_table.sql does not exist
ok 109 - Should not have "foo_table" in plan
ok 110 - Add change "foo_table"
ok 111 - test-add\deploy\foo_table.sql exists
ok 112 - test-add\revert\foo_table.sql exists
ok 113 - test-add\ferify\foo_table.sql does not exist
ok 114 - '"foo_table" change' isa 'App::Sqitch::Plan::Change'
ok 115 - It should have prompted for a note
ok 116 - Change name should be set to "foo_table"
ok 117 - It should have requires
ok 118 - It should have conflicts
ok 119 - It should have a comment
ok 120 - Info should report skipping file and include dependencies
ok 121 - Should get an error on unkonwn argument
ok 122 - Unkown argument error ident should be "add"
ok 123 - Unknown argument error message should be correct
ok 124 - Create another add with open_editor
ok 125 - Should not have "open_editor" in plan
ok 126 - Add change "open_editor"
ok 127 - 'Added change' isa 'App::Sqitch::Plan::Change'
ok 128 - Change name should be set
ok 129 - It should have prompted to edit sql files
ok 130 - test-add\deploy\open_editor.sql exists
ok 131 - test-add\revert\open_editor.sql exists
ok 132 - test-add\verify\open_editor.sql exists
ok 133 - Deploy script should look right
ok 134 - Revert script should look right
ok 135 - Verify script should look right
ok 136 - Info should have reported file creation
ok 137 - Create another add with custom script and no verify
ok 138 - Add change "custom_script"
ok 139 - 'Added change' isa 'App::Sqitch::Plan::Change'
ok 140 - Change name should be set
ok 141 - It should have no requires
ok 142 - It should have no conflicts
ok 143 - It should have prompted for a note
ok 144 - test-add\deploy\custom_script.sql exists
ok 145 - test-add\revert\custom_script.sql exists
ok 146 - test-add\whatev\custom_script.sql exists
ok 147 - test-add\verify\custom_script.sql does not exist
ok 148 - Deploy script should look right
ok 149 - Revert script should look right
ok 150 - Whatev script should look right
ok 151 - Whatev script should be based on the MySQL verify script
ok 152 - Info should have reported file creation
ok 153 - 'Added change in reloaded plan' isa 'App::Sqitch::Plan::Change'
ok 154 - Create another add with custom multiplan config
ok 155 - Should have three targets
ok 156 - Add change "widgets" to all plans
ok 157 - Should have "widgets" in pg plan
ok 158 - Should have "widgets" in sqlite plan
ok 159 - Should have "widgets" in mysql plan
ok 160 - pg\deploy\widgets.sql exists
ok 161 - pg\revert\widgets.sql exists
ok 162 - pg\verify\widgets.sql exists
ok 163 - sqlite\deploy\widgets.sql exists
ok 164 - sqlite\revert\widgets.sql exists
ok 165 - sqlite\verify\widgets.sql exists
ok 166 - mysql\deploy\widgets.sql exists
ok 167 - mysql\revert\widgets.sql exists
ok 168 - mysql\verify\widgets.sql exists
ok 169 - Info should have reported all script creations and plan updates
ok 170 - Should get an error for --all and a target arg
ok 171 - Mixed arguments error ident should be "add"
ok 172 - Mixed arguments error message should be correct
ok 173 - Create yet another add with custom multiplan config
ok 174 - Add change "choc" to the sqlite plan
ok 175 - Should still have three targets
ok 176 - Should not have "choc" in the pg plan
ok 177 - Should not have "choc" in the mysql plan
ok 178 - Should have "choc" in the sqlite plan
ok 179 - sqlite\deploy\choc.sql exists
ok 180 - sqlite\revert\choc.sql exists
ok 181 - sqlite\verify\choc.sql exists
ok 182 - pg\deploy\choc.sql does not exist
ok 183 - pg\revert\choc.sql does not exist
ok 184 - pg\verify\choc.sql does not exist
ok 185 - mysql\deploy\choc.sql does not exist
ok 186 - mysql\revert\choc.sql does not exist
ok 187 - mysql\verify\choc.sql does not exist
ok 188 - Info should have reported sqlite choc script creations and plan updates
ok 189 - Create another add with single plan, multi-target config
ok 190 - Should have two targets
ok 191 - Targets should use the same plan file
ok 192 - Add change "widgets" to all plans
ok 193 - Should have "widgets" in the plan
ok 194 - pg\deploy\widgets.sql exists
ok 195 - pg\revert\widgets.sql exists
ok 196 - pg\verify\widgets.sql exists
ok 197 - sqlite\deploy\widgets.sql exists
ok 198 - sqlite\revert\widgets.sql exists
ok 199 - sqlite\verify\widgets.sql exists
ok 200 - Should have the proper files listed in the note promt
ok 201 - Info should have reported all script creations and one plan update
ok 202 - Create another add with two targets, one top dir
ok 203 - Should have two targets
ok 204 - First target plan should be in pg.plan
ok 205 - Second target plan should be in sqlite.plan
ok 206 - Add change "widgets" to all plans
ok 207 - Should have "widgets" in pg plan
ok 208 - Should have "widgets" in sqlite plan
ok 209 - deploy\widgets.sql exists
ok 210 - revert\widgets.sql exists
ok 211 - verify\widgets.sql exists
ok 212 - Should have the proper files listed in the note promt
ok 213 - Info should have script creations and skips
ok 214 - App::Sqitch::Command::add->can(...)
ok 215 - Create a App::Sqitch::Command::add object again
ok 216 - Base _parse_opts should return an empty hash
ok 217 - _parse_opts() hould use options spec
ok 218 - _parse_opts() should parse options spec
ok 219 - Args array should be cleared of options
ok 220 - _parse_opts() should parse --set options
ok 221 - Args array should be cleared of options
ok 222 - _parse_opts() should parse --set options with repeting key
ok 223 - Args array should be cleared of options
ok 224 - _parse_opts() should parse --with, --without, and --user
ok 225 - Args array should be cleared of options
ok 226 - no warnings
ok
'--nosuchscript.ply--' is not recognized as an internal or external command,
operable program or batch file.
t/base.t ............
1..134
ok 1 - use App::Sqitch;
ok 2 - App::Sqitch->can(...)
ok 3 - 'A new object' isa 'App::Sqitch'
ok 4 - verbosity should be 1
ok 5 - Default user_name should be set from system
ok 6 - Default user_email should be set from system
ok 7 - Should get 0 from go()
ok 8 - 'Command' isa 'App::Sqitch::Command::help'
ok 9 - Extra args should be passed to execute
ok 10 - An object of class 'App::Sqitch' isa 'App::Sqitch'
ok 11 - Should have collected --engine
ok 12 - Get the Sqitch config
ok 13 - Should have local config overriding user
ok 14 - Should fall back on user config
ok 15 - Should have read user name from configuration
ok 16 - Should have read user email from configuration
ok 17 - Should have options
ok 18 - Go should return 2 on Sqitch exception
ok 19 - The error should have been vented
ok 20 - The stack trace should have been sent to trace
ok 21 - Go should return exitval on another exception
ok 22 - Both the message and the trace should have been vented
ok 23 - Nothing should have been traced
ok 24 - Go should return 2 on a third Sqitch exception
ok 25 - Should have one thing vented
ok 26 - And it should include our message
ok 27 - editor should use use parameter
ok 28 - editor should use $EDITOR
ok 29 - editor should prefer $SQITCH_EDITOR
ok 30 - editor fall back on vi when not Windows
ok 31 - editor fall back on notepad on Windows
ok 32 - trace should work
ok 33 - Should get no trace output for verbosity 2
ok 34 - trace_literal should work
ok 35 - Should get no trace_literal output for verbosity 2
ok 36 - debug should work
ok 37 - Should get no debug output for verbosity 1
ok 38 - debug_literal should work
ok 39 - Should get no debug_literal output for verbosity 1
ok 40 - info should work
ok 41 - Should get no info output for verbosity 0
ok 42 - info_literal should work
ok 43 - Should get no info_literal output for verbosity 0
ok 44 - comment should work
ok 45 - comment should work with verbosity 0
ok 46 - comment_literal should work
ok 47 - comment_literal should work with verbosity 0
ok 48 - emit should work
ok 49 - emit should work even with verbosity 0
ok 50 - emit_literal should work
ok 51 - emit_literal should work even with verbosity 0
ok 52 - warn should work
ok 53 - warn_literal should work
ok 54 - vent should work
ok 55 - vent_literal should work
ok 56 - App::Sqitch->can('run')
ok 57 - Should get success back from run echo
ok 58 - The echo script should have run
ok 59 - Nothing should have gone to STDERR
ok 60 - run die should, well, die
ok 61 - The die script should have its STDOUT ummolested
ok 62 - The die script should have its STDERR unmolested
ok 63 - App::Sqitch->can('shell')
ok 64 - Should get success back from shell echo
ok 65 - The echo script should have shell
ok 66 - Nothing should have gone to STDERR
ok 67 - shell die should, well, die
ok 68 - The die script should have its STDOUT ummolested
ok 69 - The die script should have its STDERR unmolested
ok 70 - quote_shell should work
ok 71 - App::Sqitch->can('capture')
ok 72 - The echo script output should have been returned
ok 73 - Should get an error if the command errors out
ok 74 - The die script STDERR should have passed through
ok 75 - App::Sqitch->can('probe')
ok 76 - Should have just chomped first line of output
ok 77 - App::Sqitch->can('spool')
ok 78 - Spool to read.pl
ok 79 - Data should have been sent to STDOUT by read.pl
ok 80 - Spool to read.pl
ok 81 - All data should have been sent to STDOUT by read.pl
ok 82 - Should get error when die.pl dies
ok 83 - Error ident should be "io"
ok 84 - The error message should be one of the I/O messages
ok 85 - The die script STDERR should have passed through
ok 86 - Should get an error for a bad command
ok 87 - Error ident should be "io"
ok 88 - Error message should be about inability to exec
ok 89 - Should get error for no prompt message
ok 90 - No prompt ident should be "DEV"
ok 91 - No prompt error message should be correct
ok 92 - Prompt should return input
ok 93 - Prompt should prompt
ok 94 - Prompt with default should return input
ok 95 - Prompt should prompt with default
ok 96 - Prompt with undef default should return input
ok 97 - Prompt should prompt with bracket for undef default
ok 98 - Prompt should return default for undef input
ok 99 - Prompt should show default when undef input
ok 100 - Prompt should return input for empty input
ok 101 - Prompt should show default when empty input
ok 102 - Should get error when uattended and no default
ok 103 - Unattended error ident should be "io"
ok 104 - Unattended error message should be correct
ok 105 - Prompt should return input
ok 106 - Prompt should show default as selected when unattended
ok 107 - Should get error for no ask_y_n message
ok 108 - No ask_y_n ident should be "DEV"
ok 109 - No ask_y_n error message should be correct
ok 110 - Should get error for invalid ask_y_n default
ok 111 - Invalid ask_y_n default ident should be "DEV"
ok 112 - Invalid ask_y_n default error message should be correct
ok 113 - ask_y_n should return true for "y" input
ok 114 - ask_y_n() should prompt
ok 115 - ask_y_n should return false for "no" input
ok 116 - ask_y_n() should prompt for no
ok 117 - ask_y_n should return false for "Nein"
ok 118 - ask_y_n() should prompt for no
ok 119 - ask_y_n should return true for "Yep"
ok 120 - ask_y_n() should prompt for yes
ok 121 - ask_y_n should return true default "y"
ok 122 - ask_y_n() should prompt and show default "y"
ok 123 - ask_y_n should return false default "n"
ok 124 - ask_y_n() should prompt and show default "n"
ok 125 - Should get error for bad answers
ok 126 - Bad answers ident should be "IO"
ok 127 - Bad answers message should be correct
ok 128 - _readline should work
ok 129 - _readline should return undef when unattended
ok 130 - Localied string should be valid UTF-8
ok 131 - Localied string should be decoded
ok 132 - Localied string should be valid UTF-8
ok 133 - Localied string should be decoded
ok 134 - no warnings
ok
t/blank.t ...........
1..34
ok 1 - require App::Sqitch::Plan::Blank;
ok 2 - App::Sqitch::Plan::Blank->can(...)
ok 3 - An object of class 'App::Sqitch::Plan::Blank' isa 'App::Sqitch::Plan::Blank'
ok 4 - An object of class 'App::Sqitch::Plan::Blank' 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 Leading and trailing newlines and spaces from note
ok 20 - Should have localized not prompt
ok 21 - Shell command should start with 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 - Shell command should start with 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..276
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 engine top_dir
ok 19 - 'engine 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/engine/deploy
ok 22 - Dest revert dir should be _build/sql/engine/revert
ok 23 - Dest verify dir should be _build/sql/engine/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 no 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\engine\sqitch.plan does not exist
ok 63 - Bundle the default target plan file
ok 64 - _build\sql\engine\sqitch.plan exists
ok 65 - _build\sql\engine\sqitch.plan and engine\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 default target plan file with from arg
ok 70 - Statement of the bits written should have been emitted
ok 71 - Plan should have written only "widgets" and "func/add_user"
ok 72 - '--to bundle command' isa 'App::Sqitch::Command::bundle'
ok 73 - To should be "users"
ok 74 - Bundle the default target plan file with to arg
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\engine\deploy\users.sql does not exist
ok 78 - _build\sql\engine\revert\users.sql does not exist
ok 79 - _build\sql\engine\deploy\widgets.sql does not exist
ok 80 - _build\sql\engine\revert\widgets.sql does not exist
ok 81 - _build\sql\engine\deploy\func\add_user.sql does not exist
ok 82 - _build\sql\engine\revert\func\add_user.sql does not exist
ok 83 - Load engine sqitch object
ok 84 - 'another bundle command' isa 'App::Sqitch::Command::bundle'
ok 85 - Bundle default target scripts
ok 86 - _build\sql\engine\deploy\users.sql exists
ok 87 - _build\sql\engine\revert\users.sql exists
ok 88 - _build\sql\engine\deploy\widgets.sql exists
ok 89 - _build\sql\engine\revert\widgets.sql exists
ok 90 - _build\sql\engine\deploy\func\add_user.sql exists
ok 91 - _build\sql\engine\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\engine\deploy\users.sql does not exist
ok 96 - _build\sql\engine\revert\users.sql does not exist
ok 97 - _build\sql\engine\deploy\widgets.sql exists
ok 98 - _build\sql\engine\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\engine\deploy\users.sql exists
ok 103 - _build\sql\engine\revert\users.sql exists
ok 104 - _build\sql\engine\deploy\widgets.sql does not exist
ok 105 - _build\sql\engine\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\engine\sqitch.plan does not exist
ok 115 - _build\sql\engine\deploy\users.sql does not exist
ok 116 - _build\sql\engine\revert\users.sql does not exist
ok 117 - _build\sql\engine\deploy\widgets.sql does not exist
ok 118 - _build\sql\engine\revert\widgets.sql does not exist
ok 119 - _build\sql\engine\deploy\func\add_user.sql does not exist
ok 120 - _build\sql\engine\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\engine\sqitch.plan exists
ok 125 - _build\sql\engine\deploy\users.sql exists
ok 126 - _build\sql\engine\revert\users.sql exists
ok 127 - _build\sql\engine\deploy\widgets.sql exists
ok 128 - _build\sql\engine\revert\widgets.sql exists
ok 129 - _build\sql\engine\deploy\func\add_user.sql exists
ok 130 - _build\sql\engine\revert\func\add_user.sql exists
ok 131 - Should have all notices
ok 132 - _build\multiplan.conf does not exist
ok 133 - _build\sql\sqitch.plan does not exist
ok 134 - _build\sql\deploy\roles.sql does not exist
ok 135 - _build\sql\deploy\users.sql does not exist
ok 136 - _build\sql\verify\users.sql does not exist
ok 137 - _build\sql\deploy\widgets.sql does not exist
ok 138 - _build\engine\sqitch.plan does not exist
ok 139 - _build\engine\deploy\users.sql does not exist
ok 140 - _build\engine\revert\users.sql does not exist
ok 141 - _build\engine\deploy\widgets.sql does not exist
ok 142 - _build\engine\revert\widgets.sql does not exist
ok 143 - _build\engine\deploy\func\add_user.sql does not exist
ok 144 - _build\engine\revert\func\add_user.sql does not exist
ok 145 - 'all xmultiplan bundle command' isa 'App::Sqitch::Command::bundle'
ok 146 - Execute multi-target bundle!
ok 147 - _build\multiplan.conf exists
ok 148 - _build\sql\sqitch.plan exists
ok 149 - _build\sql\deploy\roles.sql exists
ok 150 - _build\sql\deploy\users.sql exists
ok 151 - _build\sql\verify\users.sql exists
ok 152 - _build\sql\deploy\widgets.sql exists
ok 153 - _build\engine\sqitch.plan exists
ok 154 - _build\engine\deploy\users.sql exists
ok 155 - _build\engine\revert\users.sql exists
ok 156 - _build\engine\deploy\widgets.sql exists
ok 157 - _build\engine\revert\widgets.sql exists
ok 158 - _build\engine\deploy\func\add_user.sql exists
ok 159 - _build\engine\revert\func\add_user.sql exists
ok 160 - Should get an error for --all and a target arg
ok 161 - Mixed arguments error ident should be "bundle"
ok 162 - Mixed arguments error message should be correct
ok 163 - 'multiplan bundle command' isa 'App::Sqitch::Command::bundle'
ok 164 - Execute with no arg
ok 165 - _build\multiplan.conf exists
ok 166 - _build\engine\sqitch.plan exists
ok 167 - _build\engine\deploy\users.sql exists
ok 168 - _build\engine\revert\users.sql exists
ok 169 - _build\engine\deploy\widgets.sql exists
ok 170 - _build\engine\revert\widgets.sql exists
ok 171 - _build\engine\deploy\func\add_user.sql exists
ok 172 - _build\engine\revert\func\add_user.sql exists
ok 173 - _build\sql\sqitch.plan does not exist
ok 174 - _build\sql\deploy\roles.sql does not exist
ok 175 - _build\sql\deploy\users.sql does not exist
ok 176 - _build\sql\verify\users.sql does not exist
ok 177 - _build\sql\deploy\widgets.sql does not exist
ok 178 - Execute with bundle.all config
ok 179 - _build\multiplan.conf exists
ok 180 - _build\engine\sqitch.plan exists
ok 181 - _build\engine\deploy\users.sql exists
ok 182 - _build\engine\revert\users.sql exists
ok 183 - _build\engine\deploy\widgets.sql exists
ok 184 - _build\engine\revert\widgets.sql exists
ok 185 - _build\engine\deploy\func\add_user.sql exists
ok 186 - _build\engine\revert\func\add_user.sql exists
ok 187 - _build\sql\sqitch.plan exists
ok 188 - _build\sql\deploy\roles.sql exists
ok 189 - _build\sql\deploy\users.sql exists
ok 190 - _build\sql\verify\users.sql exists
ok 191 - _build\sql\deploy\widgets.sql exists
ok 192 - Execute with target arg "pg"
ok 193 - _build\multiplan.conf exists
ok 194 - _build\engine\sqitch.plan exists
ok 195 - _build\engine\deploy\users.sql exists
ok 196 - _build\engine\revert\users.sql exists
ok 197 - _build\engine\deploy\widgets.sql exists
ok 198 - _build\engine\revert\widgets.sql exists
ok 199 - _build\engine\deploy\func\add_user.sql exists
ok 200 - _build\engine\revert\func\add_user.sql exists
ok 201 - _build\sql\sqitch.plan does not exist
ok 202 - _build\sql\deploy\roles.sql does not exist
ok 203 - _build\sql\deploy\users.sql does not exist
ok 204 - _build\sql\verify\users.sql does not exist
ok 205 - _build\sql\deploy\widgets.sql does not exist
ok 206 - Execute with plan file arg "engine\sqitch.plan"
ok 207 - _build\multiplan.conf exists
ok 208 - _build\engine\sqitch.plan exists
ok 209 - _build\engine\deploy\users.sql exists
ok 210 - _build\engine\revert\users.sql exists
ok 211 - _build\engine\deploy\widgets.sql exists
ok 212 - _build\engine\revert\widgets.sql exists
ok 213 - _build\engine\deploy\func\add_user.sql exists
ok 214 - _build\engine\revert\func\add_user.sql exists
ok 215 - _build\sql\sqitch.plan does not exist
ok 216 - _build\sql\deploy\roles.sql does not exist
ok 217 - _build\sql\deploy\users.sql does not exist
ok 218 - _build\sql\verify\users.sql does not exist
ok 219 - _build\sql\deploy\widgets.sql does not exist
ok 220 - Execute with target arg "mysql"
ok 221 - _build\multiplan.conf exists
ok 222 - _build\sql\sqitch.plan exists
ok 223 - _build\sql\deploy\roles.sql exists
ok 224 - _build\sql\deploy\users.sql exists
ok 225 - _build\sql\verify\users.sql exists
ok 226 - _build\sql\deploy\widgets.sql exists
ok 227 - _build\engine\sqitch.plan does not exist
ok 228 - _build\engine\deploy\users.sql does not exist
ok 229 - _build\engine\revert\users.sql does not exist
ok 230 - _build\engine\deploy\widgets.sql does not exist
ok 231 - _build\engine\revert\widgets.sql does not exist
ok 232 - _build\engine\deploy\func\add_user.sql does not exist
ok 233 - _build\engine\revert\func\add_user.sql does not exist
ok 234 - Execute with plan file arg "sql\sqitch.plan"
ok 235 - _build\multiplan.conf exists
ok 236 - _build\sql\sqitch.plan exists
ok 237 - _build\sql\deploy\roles.sql exists
ok 238 - _build\sql\deploy\users.sql exists
ok 239 - _build\sql\verify\users.sql exists
ok 240 - _build\sql\deploy\widgets.sql exists
ok 241 - _build\engine\sqitch.plan does not exist
ok 242 - _build\engine\deploy\users.sql does not exist
ok 243 - _build\engine\revert\users.sql does not exist
ok 244 - _build\engine\deploy\widgets.sql does not exist
ok 245 - _build\engine\revert\widgets.sql does not exist
ok 246 - _build\engine\deploy\func\add_user.sql does not exist
ok 247 - _build\engine\revert\func\add_user.sql does not exist
ok 248 - 'to/from bundle command' isa 'App::Sqitch::Command::bundle'
ok 249 - Execute to/from bundle!
ok 250 - _build\multiplan.conf exists
ok 251 - _build\engine\sqitch.plan exists
ok 252 - _build\engine\deploy\widgets.sql exists
ok 253 - _build\engine\revert\widgets.sql exists
ok 254 - _build\engine\deploy\users.sql does not exist
ok 255 - _build\engine\revert\users.sql does not exist
ok 256 - _build\engine\deploy\func\add_user.sql does not exist
ok 257 - _build\engine\revert\func\add_user.sql does not exist
ok 258 - Plan should have written only "widgets"
ok 259 - 'another bundle command' isa 'App::Sqitch::Command::bundle'
ok 260 - Execute bundle with to/from args!
ok 261 - _build\multiplan.conf exists
ok 262 - _build\engine\sqitch.plan exists
ok 263 - _build\engine\deploy\widgets.sql exists
ok 264 - _build\engine\revert\widgets.sql exists
ok 265 - _build\engine\deploy\func\add_user.sql exists
ok 266 - _build\engine\revert\func\add_user.sql exists
ok 267 - _build\engine\deploy\users.sql does not exist
ok 268 - _build\engine\revert\users.sql does not exist
ok 269 - Plan should have written "widgets" and "func/add_user"
ok 270 - Should get an exception for unknown argument
ok 271 - Unknown argument error ident shoud be "bundle"
ok 272 - Unknown argument error message should be correct
ok 273 - Should get an exception for unknown arguments
ok 274 - Unknown arguments error ident shoud be "bundle"
ok 275 - Unknown arguments error message should be correct
ok 276 - no warnings
ok
t/change.t ..........
1..87
ok 1 - require App::Sqitch::Plan::Change;
ok 2 - App::Sqitch::Plan::Change->can(...)
ok 3 - An object of class 'App::Sqitch::Plan::Change' isa 'App::Sqitch::Plan::Change'
ok 4 - An object of class 'App::Sqitch::Plan::Change' 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 - Nonexistent deploy script hash should be undef
ok 16 - Deploy script hash should be correct
ok 17 - Add a rework tag
ok 18 - Reworked tag should be stored
ok 19 - The change should be reworked
ok 20 - path_segments should now include suffix
ok 21 - The change should not be reworked
ok 22 - Add two rework tags
ok 23 - The change should again be reworked
ok 24 - path_segments should now include the correct suffixc
ok 25 - Name should format as "foo"
ok 26 - Name should format with tags as "foo"
ok 27 - Dependencies should format as ""
ok 28 - Name should format with dependencies as "foo"
ok 29 - Name should format op without dependencies as "foo"
ok 30 - Change content should format correctly without dependencies
ok 31 - Planner name shoudld default to user name
ok 32 - Planner email shoudld default to user email
ok 33 - Planner name and email should format properly
ok 34 - should stringify to "foo" + planner
ok 35 - Since tag should be undef
ok 36 - Parent should be undef
ok 37 - Old change info should be correct
ok 38 - Old change ID should be correct
ok 39 - Change info should be correct
ok 40 - Change ID should be correct
ok 41 - Create change with more stuff
ok 42 - It should stringify correctly
ok 43 - It should not be a deploy change
ok 44 - It should be a revert change
ok 45 - It should say so
ok 46 - It should have a since tag
ok 47 - It should have a parent
ok 48 - Old info should not since tag
ok 49 - Info should include parent and dependencies
ok 50 - Should have no tags
ok 51 - Add a tag
ok 52 - Should have the tag
ok 53 - Should format name with tags
ok 54 - Add another tag
ok 55 - Should have both tags
ok 56 - Should format name with both tags
ok 57 - Planner name and email should format properly
ok 58 - Dependencies should format as "[foo bar @baz !dr_evil]"
ok 59 - Name should format with dependencies as "yo/howdy [foo bar @baz !dr_evil]"
ok 60 - Name should format op with dependencies as "yo/howdy [foo bar @baz !dr_evil]"
ok 61 - Change content should format correctly with dependencies
ok 62 - path_segments should include directories
ok 63 - The deploy file should include the suffix
ok 64 - The revert file should include the suffix
ok 65 - The verify file should include the suffix
ok 66 - Create change "baz"
ok 67 - Create change "bar"
ok 68 - Get deploy handle
ok 69 - It should be the deploy file
ok 70 - Get revert handle
ok 71 - It should be the revert file
ok 72 - Get verify handle
ok 73 - It should be the verify file
ok 74 - Create a change with explicit requires and conflicts
ok 75 - requires should be set
ok 76 - conflicts should be set
ok 77 - Dependencies should include requires and conflicts
ok 78 - Should find changes for requires
ok 79 - Should find changes for conflicts
ok 80 - Create change with UTF-8 name
ok 81 - The name should be decoded text in old info
ok 82 - Old change ID should be hashed from encoded UTF-8
ok 83 - The name should be decoded text in info
ok 84 - Change ID should be hashed from encoded UTF-8
ok 85 - note_prompt() should work
ok 86 - note_prompt() should work
ok 87 - no warnings
ok
t/changelist.t ......
1..257
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 get multiple indexes error looking for index of "yo"
ok 40 - Multiple indexes error ident should be "plan"
ok 41 - Multiple indexes message should be correct
ok 42 - Should unknown tag error for invalid tag
ok 43 - Unknown tag error ident should be "plan"
ok 44 - Unknown taf message should be correct
ok 45 - Should get 2 for yo@alpha
ok 46 - Should get 1 for yo@alpha^
ok 47 - Should get 4 for yo@HEAD
ok 48 - Should get 3 for yo@HEAD^
ok 49 - Should get undef for yo@HEAD~
ok 50 - Should get undef for yo@HEAD~~
ok 51 - Should get 0 for foo@alpha
ok 52 - Should get 0 for foo@HEAD
ok 53 - Should get 0 for foo@ROOT
ok 54 - Should get undef for baz@alpha
ok 55 - Should get 3 for baz@HEAD
ok 56 - Should get 4 for @HEAD
ok 57 - Should get 0 for @ROOT
ok 58 - Should get 3 for @HEAD^
ok 59 - Should get undef for @HEAD~
ok 60 - Should get 1 for @ROOT~
ok 61 - Should get undef for @ROOT^
ok 62 - Should get 4 for HEAD
ok 63 - Should get 0 for ROOT
ok 64 - Should get 3 for HEAD^
ok 65 - Should get undef for HEAD~
ok 66 - Should get 1 for ROOT~
ok 67 - Should get undef for ROOT^
ok 68 - Should get foo for "foo"
ok 69 - Should get bar for "foo~"
ok 70 - Should get foo by ID
ok 71 - Should get foo by old ID
ok 72 - Should get bar for "bar"
ok 73 - Should get foo for "bar^"
ok 74 - Should get yo1 for "bar~"
ok 75 - Should get baz for "bar~~"
ok 76 - Should get yo2 for "bar~3"
ok 77 - Should get bar by ID
ok 78 - Should get bar by old ID
ok 79 - Should get "yo" by the @alpha tag ID
ok 80 - Should get "yo" by the @alpha tag old ID
ok 81 - Should get baz for "baz"
ok 82 - Should get baz by ID
ok 83 - Should get baz by old ID
ok 84 - Should get baz for "@HEAD^"
ok 85 - Should get yo1 for "@HEAD^^"
ok 86 - Should get bar for "@HEAD^3"
ok 87 - Should get foo for "@ROOT"
ok 88 - Should get baz for "HEAD^"
ok 89 - Should get yo1 for "HEAD^^"
ok 90 - Should get bar for "HEAD^3"
ok 91 - Should get foo for "ROOT"
ok 92 - Should get yo1 for yo@alpha
ok 93 - Should get yo2 for yo@HEAD
ok 94 - Should get foo for foo@alpha
ok 95 - Should get foo for foo@HEAD
ok 96 - Should get undef for baz@alpha
ok 97 - Should get baz for baz@HEAD
ok 98 - Should get yo2 for "yo@HEAD"
ok 99 - Should get foo for "foo@ROOT"
ok 100 - Should find yo1 with "yo"
ok 101 - Should find yo1 with "yo@alpha"
ok 102 - Should find yo2 with yo@HEAD
ok 103 - Should find foo for "foo"
ok 104 - Should find foo for "foo@alpha"
ok 105 - Should find foo for "foo@HEAD"
ok 106 - Should find bar with "yo^"
ok 107 - Should find foo with "yo^^"
ok 108 - Should find foo with "yo^2"
ok 109 - Should find baz with "yo~"
ok 110 - Should find yo2 with "yo~~"
ok 111 - Should find yo2 with "yo~2"
ok 112 - Should find bar with "yo@alpha^"
ok 113 - Should find baz with "yo@alpha^"
ok 114 - Should find baz with yo@HEAD^
ok 115 - Should find baz with @HEAD^
ok 116 - Should find bar with @ROOT~^
ok 117 - Should find baz with HEAD^
ok 118 - Should find bar with ROOT~^
ok 119 - Should contain yo1 with "yo"
ok 120 - Should contain yo1 with "yo@alpha"
ok 121 - Should contain yo2 with yo@HEAD
ok 122 - Should contain foo for "foo"
ok 123 - Should contain foo for "foo@alpha"
ok 124 - Should contain foo for "foo@HEAD"
ok 125 - Should contain bar with "yo^"
ok 126 - Should contain foo with "yo^^"
ok 127 - Should contain foo with "yo^2"
ok 128 - Should contain baz with "yo~"
ok 129 - Should contain yo2 with "yo~~"
ok 130 - Should contain yo2 with "yo~2"
ok 131 - Should contain bar with "yo@alpha^"
ok 132 - Should contain baz with "yo@alpha^"
ok 133 - Should contain baz with yo@HEAD^
ok 134 - Should contain baz with @HEAD^
ok 135 - Should contain bar with @ROOT~^
ok 136 - Should contain baz with HEAD^
ok 137 - Should contain bar with ROOT~^
ok 138 - Should get multiple indexes error looking for index of "yo"
ok 139 - Multiple indexes error ident should be "plan"
ok 140 - Multiple indexes message should be correct
ok 141 - Should unknown tag error for invalid tag
ok 142 - Unknown tag error ident should be "plan"
ok 143 - Unknown taf message should be correct
ok 144 - Push hi
ok 145 - Count should now be six
ok 146 - Changes should be in order with $hi at the end
ok 147 - Should find "hi" at index 5
ok 148 - Should find "hi" by ID at index 5
ok 149 - Should find "hi" by old ID at index 5
ok 150 - Index of @ROOT should still be 0
ok 151 - Index of @HEAD should now be 5
ok 152 - Index of ROOT should still be 0
ok 153 - Index of HEAD should now be 5
ok 154 - First index of "non" should be undef
ok 155 - First index of "foo" should be 0
ok 156 - First index of "foo~" should be 1
ok 157 - First index of "foo~~" should be 2
ok 158 - First index of "foo~3" should be 3
ok 159 - Should not find first index of "foo~~~"
ok 160 - First index of "foo" since @ROOT should be undef
ok 161 - First index of "bar" should be 1
ok 162 - First index of "yo" should be 2
ok 163 - First index of "yo" since @ROOT should be 2
ok 164 - First index of "baz" should be 3
ok 165 - First index of "baz^" should be 2
ok 166 - First index of "baz^^" should be 1
ok 167 - First index of "baz^3" should be 0
ok 168 - Should not find first index of "baz^^^"
ok 169 - First index of "yo" since "@alpha" should be 4
ok 170 - First index of "yo" since "baz" should be 4
ok 171 - First index of "yo^" since "baz" should be 4
ok 172 - First index of "yo~" since "baz" should be 5
ok 173 - Should get an exception for an unknown change passed to first_index_of()
ok 174 - Unknown change error ident should be "plan"
ok 175 - Unknown change message should be correct
ok 176 - Push so and fu
ok 177 - Count should now be eight
ok 178 - Index of @ROOT should remain 0
ok 179 - Index of @HEAD should now be 7
ok 180 - Index of ROOT should remain 0
ok 181 - Index of HEAD should now be 7
ok 182 - Changes should be in order with $so and $fu at the end
ok 183 - Index beta
ok 184 - Should find @beta at index 4
ok 185 - Should find yo2 via @beta
ok 186 - Should find yo2 via @beta ID
ok 187 - Should find yo2 via @beta old ID
ok 188 - Tags should return both tags
ok 189 - Should get 2 for last tagged index
ok 190 - Should find "yo" as last tagged
ok 191 - Should get 8 for count
ok 192 - Should find fu as last change
ok 193 - Should find last tagged index at 0
ok 194 - Should find last tagged at 0
ok 195 - Should get count 1
ok 196 - Should find last change at 0
ok 197 - Should find last tagged index at 1
ok 198 - Should find last tagged at 1
ok 199 - Should get count 2
ok 200 - Should find last change at 1
ok 201 - Should find last tagged index at 3
ok 202 - Should find last tagged at 3
ok 203 - Should get count 4
ok 204 - Should find last change at 3
ok 205 - Should find last tagged index at 4
ok 206 - Should find last tagged at 4
ok 207 - Should get count 5
ok 208 - Should find last change at 4
ok 209 - Should not find tag index in 0 changes
ok 210 - Should not find tag in 0 changes
ok 211 - Should find no change in empty plan
ok 212 - Should not find tag index in 2 changes
ok 213 - Should not find tag in 2 changes
ok 214 - Should not find tag index in 4 changes
ok 215 - Should not find tag in 4 changes
ok 216 - An object of class 'App::Sqitch::Plan::ChangeList' isa 'App::Sqitch::Plan::ChangeList'
ok 217 - Should not find index of "foo" in empty list
ok 218 - Should not find first index of "foo" in empty list
ok 219 - Should get undef for "foo" in empty list
ok 220 - Should not contain "foo" in empty list
ok 221 - Should find undef for "foo" in empty list
ok 222 - Should not find index of "bar" in empty list
ok 223 - Should not find first index of "bar" in empty list
ok 224 - Should get undef for "bar" in empty list
ok 225 - Should not contain "bar" in empty list
ok 226 - Should find undef for "bar" in empty list
ok 227 - Should not find index of "HEAD" in empty list
ok 228 - Should not find first index of "HEAD" in empty list
ok 229 - Should get undef for "HEAD" in empty list
ok 230 - Should not contain "HEAD" in empty list
ok 231 - Should find undef for "HEAD" in empty list
ok 232 - Should not find index of "@HEAD" in empty list
ok 233 - Should not find first index of "@HEAD" in empty list
ok 234 - Should get undef for "@HEAD" in empty list
ok 235 - Should not contain "@HEAD" in empty list
ok 236 - Should find undef for "@HEAD" in empty list
ok 237 - Should not find index of "ROOT" in empty list
ok 238 - Should not find first index of "ROOT" in empty list
ok 239 - Should get undef for "ROOT" in empty list
ok 240 - Should not contain "ROOT" in empty list
ok 241 - Should find undef for "ROOT" in empty list
ok 242 - Should not find index of "@ROOT" in empty list
ok 243 - Should not find first index of "@ROOT" in empty list
ok 244 - Should get undef for "@ROOT" in empty list
ok 245 - Should not contain "@ROOT" in empty list
ok 246 - Should find undef for "@ROOT" in empty list
ok 247 - Should not find index of "alpha" in empty list
ok 248 - Should not find first index of "alpha" in empty list
ok 249 - Should get undef for "alpha" in empty list
ok 250 - Should not contain "alpha" in empty list
ok 251 - Should find undef for "alpha" in empty list
ok 252 - Should not find index of "@alpha" in empty list
ok 253 - Should not find first index of "@alpha" in empty list
ok 254 - Should get undef for "@alpha" in empty list
ok 255 - Should not contain "@alpha" in empty list
ok 256 - Should find undef for "@alpha" in empty list
ok 257 - no warnings
ok
t/checkout.t ........
ok 1 - require App::Sqitch::Command::checkout;
ok 2 - The class (or class-like) 'App::Sqitch::Command::checkout' isa 'App::Sqitch::Command'
ok 3 - App::Sqitch::Command::checkout->can(...)
ok 4 - Options should be correct
ok 5 - Load a sqitch object
ok 6 - Check default configuration
ok 7 - Should have set option
ok 8 - Should have mode, deploy_variables, verify, no_prompt, and log_only
ok 9 - Should have set_revert option and no_prompt false
ok 10 - set_deploy and set_revert should overrid set
ok 11 - set_deploy and set_revert should merge with set
ok 12 - set_revert should merge with set_deploy
ok 13 - Should have deploy configuration
ok 14 - Should have merged variables
ok 15 - Should have merged --set, deploy, checkout
ok 16 - An object of class 'App::Sqitch::Command::checkout' isa 'App::Sqitch::Command::checkout'
ok 17 - Should pick up deploy variables from configuration
ok 18 - Should pick up revert variables from configuration
ok 19 - Should have no_prompt and prompt_accept from revert config
ok 20 - Should have false log_only, verify, true prompt_accept from checkout config
ok 21 - Should have log_only, prompt_accept true from checkout and verify from deploy
ok 22 - Should have log_only false and mode all again
ok 23 - Should have log_only false for false config
ok 24 - Should have no_prompt true with -y
ok 25 - 'checkout command' isa 'App::Sqitch::Command::checkout'
ok 26 - Should get an error current branch
ok 27 - Current branch error ident should be "checkout"
ok 28 - Should get proper error for current branch error
ok 29 - The proper args should have been passed to rev-parse
ok 30 - Should get an error for plans without a common change
ok 31 - The no common change error ident should be "checkout"
ok 32 - The no common change error message should be correct
ok 33 - 'Object with to and variables' isa 'App::Sqitch::Command::checkout'
ok 34 - Checkout master
ok 35 - The proper args should again have been passed to rev-parse
ok 36 - Should have requested the plan file contents as of master
ok 37 - Should have checked out other branch
ok 38 - Should have no warnings
ok 39 - Should have emitted info identifying the last common change
ok 40 - "users" ID and 1 should be passed to the engine revert
ok 41 - Should have had the current changes for revision
ok 42 - undef, "tag", and 1 should be passed to the engine deploy
ok 43 - Should have had the other branch changes (decoded) for deploy
ok 44 - Engine should verify
ok 45 - The engine should be set to log_only
ok 46 - Variables should have been passed to the engine twice
ok 47 - The revert vars should have been passed first
ok 48 - The deploy vars should have been next
ok 49 - Checkout master with target
ok 50 - Target should be passed to engine
ok 51 - Should have no warnings
ok 52 - 'Object with to and variables' isa 'App::Sqitch::Command::checkout'
ok 53 - Checkout master again
ok 54 - Target should be passed to engine
ok 55 - Should have no warnings
ok 56 - The engine should not be set to log_only
ok 57 - The engine should not be set with_verfy
ok 58 - undef, "tag", and 1 should be passed to the engine deploy again
ok 59 - Should have had the other branch changes (decoded) for deploy again
ok 60 - Variables should again have been passed to the engine twice
ok 61 - The revert vars should again have been passed first
ok 62 - The deploy vars should again have been next
ok 63 - Checkout master again with target
ok 64 - Target should be passed to engine
ok 65 - Should have warning about two targets
ok 66 - Should get an exception for unknown arg
ok 67 - Unknow arg ident should be "checkout"
ok 68 - Should get an exeption for two unknown arg
ok 69 - Should get an exception for unknown args
ok 70 - Unknow args ident should be "checkout"
ok 71 - Should get an exeption for two unknown args
ok 72 - Should rethrow confirm exception
ok 73 - Should rethrow fatal exception
ok 74 - Should rethrow unknown exception
1..74
ok
t/command.t .........
1..163
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 - An object of class 'App::Sqitch::Command' 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 - An object of class 'App::Sqitch::Command::whu' 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 - Nonexistent command error ident should be "config"
ok 19 - Should get proper mesage for nonexistent command
ok 20 - Nonexistent command should yield exitval of 1
ok 21 - Should die on bad command
ok 22 - Bad command error ident should be "config"
ok 23 - Should get proper mesage for bad command
ok 24 - Bad command should yield exitval of 1
ok 25 - No command should yield usage
ok 26 - No args should be passed to usage
ok 27 - Should die on broken command module
ok 28 - Broken command error ident should be "config"
ok 29 - Should get proper mesage for broken command
ok 30 - Broken command should yield exitval of 1
ok 31 - Load a "whu" command with "--feathers" optin
ok 32 - The "feathers" attribute should be set
ok 33 - Load a "wah-hoo" command
ok 34 - 'It' isa 'App::Sqitch::Command::wah_hoo'
ok 35 - command() should return hyphenated name
ok 36 - Create a App::Sqitch::Command object
ok 37 - 'default target' isa 'App::Sqitch::Target'
ok 38 - Default target name should be "db:"
ok 39 - Default target URI should be "db:"
ok 40 - Create a App::Sqitch::Command object
ok 41 - Should try to fetch core.engine
ok 42 - Should try to fetch core.target
ok 43 - Should try to fetch core.engine
ok 44 - Should try to fetch engine.sqlite.target
ok 45 - Should try to fetch core.sqlite.target
ok 46 - 'default target' isa 'App::Sqitch::Target'
ok 47 - Default target name should be "db:sqlite:"
ok 48 - Default target URI should be "db:sqlite:"
ok 49 - Create a App::Sqitch::Command object
ok 50 - Should try to fetch engine.pg.target
ok 51 - Should try to fetch core.pg.target
ok 52 - 'default target' isa 'App::Sqitch::Target'
ok 53 - Default target name should be "db:pg:"
ok 54 - Default target URI should be "db:pg:"
ok 55 - Create a App::Sqitch::Command object
ok 56 - Should try to fetch engine.pg.target
ok 57 - 'default target' isa 'App::Sqitch::Target'
ok 58 - Default target name should be "db:pg:foo"
ok 59 - Default target URI should be "db:pg:foo"
ok 60 - App::Sqitch::Command->can('execute')
ok 61 - Create a App::Sqitch::Command object
ok 62 - Base class command should be ""
ok 63 - Base object command should be ""
ok 64 - Should get an error calling execute on command base class
ok 65 - Execute exception ident should be "DEV"
ok 66 - The execute() error message should be correct
ok 67 - Create a subclass command object
ok 68 - Subclass oject command should be "whu"
ok 69 - Subclass class command should be "whu"
ok 70 - Should get an error for un-overridden execute() method
ok 71 - Un-overidden execute() exception ident should be "DEV"
ok 72 - The unoverridden execute() error message should be correct
ok 73 - App::Sqitch::Command->can(...)
ok 74 - Create a App::Sqitch::Command object again
ok 75 - Base _parse_opts should return an empty hash
ok 76 - Create a subclass command object again
ok 77 - Subclass should return an empty hash for no args
ok 78 - Subclass should use options spec
ok 79 - Subclass should parse options spec
ok 80 - Args array should be cleared of options
ok 81 - Should get warning for unknown option
ok 82 - Should call _pod2usage on options parse failure
ok 83 - 'Good command object' isa 'App::Sqitch::Command::good'
ok 84 - Should get warning for unknown option when there are no options
ok 85 - Should call _pod2usage on no options parse failure
ok 86 - Load Sqitch with config and plan
ok 87 - Load cmd with config and plan
ok 88 - Parsing no args should return default target
ok 89 - Single unknown arg raise an error
ok 90 - Unknown error ident should be ""
ok 91 - Unknown error message should be correct
ok 92 - Single change should be recognized as change
ok 93 - Single target should be recognized as target
ok 94 - URI target should be recognized as target, too
ok 95 - Target and change should be recognized
ok 96 - Change and target should be recognized
ok 97 - Change, target, and unknown name should be recognized
ok 98 - Multiple changes, target, and unknown name should be recognized
ok 99 - Multiple names should be recognized
ok 100 - Should get an error with name and unknown
ok 101 - Unknown error ident should be ""
ok 102 - Unknown error message should be correct
ok 103 - Should get an error with name and two unknowns
ok 104 - Two unknowns error ident should be ""
ok 105 - Two unknowns error message should be correct
ok 106 - Load Sqitch with config
ok 107 - Load cmd with config
ok 108 - Change following target should be recognized from target plan
ok 109 - Passed target should always be returned
ok 110 - Passed and specified targets should always be returned
ok 111 - Change unknown to passed target should error
ok 112 - Change unknown error ident should be ""
ok 113 - Change unknown error message should be correct
ok 114 - Should get known changes from default target (t/sql/sqitch.plan)
ok 115 - Change seen after target should error if not in that target
ok 116 - Change after target error ident should be ""
ok 117 - Change after target error message should be correct
ok 118 - Should resolve plan file to a target
ok 119 - SHould resolve default plan file to target
ok 120 - Should resolve engine "pg" file to its target
ok 121 - Should resolve engine "sqlite" file to its target
ok 122 - Call _pod2usage on base object
ok 123 - Default params should be passed to Pod::Usage
ok 124 - Call _pod2usage on "whu" command object
ok 125 - Default params should be passed to Pod::Usage
ok 126 - 'Config command object' isa 'App::Sqitch::Command::config'
ok 127 - Call _pod2usage on "config" command object
ok 128 - Should find sqitch-config docs to pass to Pod::Usage
ok 129 - 'Good command object' isa 'App::Sqitch::Command::good'
ok 130 - Call _pod2usage on "good" command object
ok 131 - Should find App::Sqitch::Command::good docs to pass to Pod::Usage
ok 132 - App::Sqitch::Command::good->can('usage')
ok 133 - Should find App::Sqitch::Command::good docs to pass to Pod::Usage
ok 134 - App::Sqitch::Command->can('verbosity')
ok 135 - Verbosity should be from sqitch
ok 136 - Verbosity should change with sqitch
ok 137 - trace should work
ok 138 - Should get no trace output for verbosity 2
ok 139 - trace_literal should work
ok 140 - Should get no trace_literal output for verbosity 2
ok 141 - debug should work
ok 142 - Should get no debug output for verbosity 1
ok 143 - debug_literal should work
ok 144 - Should get no debug_literal output for verbosity 1
ok 145 - info should work
ok 146 - Should get no info output for verbosity 0
ok 147 - info_literal should work
ok 148 - Should get no info_literal output for verbosity 0
ok 149 - comment should work
ok 150 - comment should work with verbosity 0
ok 151 - comment_literal should work
ok 152 - comment_literal should work with verbosity 0
ok 153 - emit should work
ok 154 - emit should work even with verbosity 0
ok 155 - emit_literal should work
ok 156 - emit_literal should work even with verbosity 0
ok 157 - warn should work
ok 158 - warn_literal should work
ok 159 - threw Regexp ((?^:EXITED: 2))
ok 160 - usage should work
ok 161 - threw Regexp ((?^:EXITED: 2))
ok 162 - usage should prefer sqitch-$command-usage
ok 163 - 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 engine.pg.registry
ok 68 - Should have emitted the merged engine.pg.registry
ok 69 - Get engine.pg.client
ok 70 - Should have emitted the merged engine.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 engine.pg.client
ok 107 - Should have emitted the system engine.pg.client
ok 108 - Attempt to get engine.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 engine.pg.registry
ok 115 - Should have emitted the user engine.pg.registry
ok 116 - Get user engine.pg.client
ok 117 - Should have emitted the user engine.pg.client
ok 118 - Create local config get command
ok 119 - Get local engine.pg.target
ok 120 - Should have emitted the local engine.pg.target
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 engine.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 engine\.pg\..+
ok 243 - Should match all engine.pg options
ok 244 - Call get_regex on engine\.pg\..+ and value regex
ok 245 - Should match all engine.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_regexp 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 engine.pg.user
ok 285 - engine.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("engine.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, May 21, 2015 12:27:44 AM America/Los_Angeles"
ok 5 - Format "full" should be valid
ok 6 - Date format "long" should yield "May 21, 2015 12:27:44 AM PDT"
ok 7 - Format "long" should be valid
ok 8 - Date format "medium" should yield "May 21, 2015 12:27:44 AM"
ok 9 - Format "medium" should be valid
ok 10 - Date format "short" should yield "5/21/15 12:27 AM"
ok 11 - Format "short" should be valid
ok 12 - Date format "raw" should yield "2015-05-21T07:27:44Z"
ok 13 - Format "raw" should be valid
ok 14 - Date format "" should yield "2015-05-21T07:27:44Z"
ok 15 - Date format "iso" should yield "2015-05-21 00:27:44 -0700"
ok 16 - Format "iso" should be valid
ok 17 - Date format "iso8601" should yield "2015-05-21 00:27:44 -0700"
ok 18 - Format "iso8601" should be valid
ok 19 - Date format "rfc" should yield "Thu, 21 May 2015 00:27:44 -0700"
ok 20 - Format "rfc" should be valid
ok 21 - Date format "rfc2822" should yield "Thu, 21 May 2015 00:27:44 -0700"
ok 22 - Format "rfc2822" should be valid
ok 23 - Date format "cldr:HH'h' mm'm'" should yield "00h 27m"
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 00:27:44"
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 (or class-like) 'App::Sqitch::Command::deploy' 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 - An object of class 'App::Sqitch::Command::deploy' isa 'App::Sqitch::Command::deploy'
ok 10 - Should pick up variables from configuration
ok 11 - 'new deploy with target' isa 'App::Sqitch::Command::deploy'
ok 12 - Should have target "foo"
ok 13 - An object of class 'App::Sqitch::Command::deploy' isa 'App::Sqitch::Command::deploy'
ok 14 - Should have undef default target
ok 15 - to_change should be undef
ok 16 - mode should be "all"
ok 17 - Execute to "@alpha"
ok 18 - "@alpha" "all", and 0 should be passed to the engine
ok 19 - Should have a target
ok 20 - The engine should not be set log_only
ok 21 - Should have no warnings
ok 22 - Execute
ok 23 - undef and "all" should be passed to the engine
ok 24 - Should have no warnings
ok 25 - Execute with change
ok 26 - "widgets" and "all" should be passed to the engine
ok 27 - Should have no warnings
ok 28 - Execute with target
ok 29 - undef and "all" should be passed to the engine
ok 30 - The target should be as specified
ok 31 - Should have no warnings
ok 32 - Execute with change and target
ok 33 - "widgets" and "all" should be passed to the engine
ok 34 - The target should be as specified
ok 35 - Should have no warnings
ok 36 - Execute with target and change
ok 37 - "widgets" and "all" should be passed to the engine
ok 38 - The target should be as specified
ok 39 - Should have no warnings
ok 40 - 'Object with to, mode, log_only, and variables' isa 'App::Sqitch::Command::deploy'
ok 41 - Execute again
ok 42 - Engine should verify
ok 43 - The engine should be set log_only
ok 44 - "foo", "tag", and 1 should be passed to the engine
ok 45 - Vars should have been passed through to the engine
ok 46 - The target name should be from the target option
ok 47 - Should have no warnings
ok 48 - Execute with change
ok 49 - Engine should verify
ok 50 - The engine should be set log_only
ok 51 - "foo", "tag", and 1 should be passed to the engine
ok 52 - Vars should have been passed through to the engine
ok 53 - Should have too many changes warning
ok 54 - Execute with target again
ok 55 - Engine should verify
ok 56 - The engine should be set log_only
ok 57 - "foo", "tag", and 1 should be passed to the engine
ok 58 - Vars should have been passed through to the engine
ok 59 - The target should be from the target option
ok 60 - Should have warning about too many targets
ok 61 - "all" should be a valid mode
ok 62 - "tag" should be a valid mode
ok 63 - "change" should be a valid mode
ok 64 - "foo" should not be a valid mode
ok 65 - "bad" should not be a valid mode
ok 66 - "gar" should not be a valid mode
ok 67 - Should get an exception for unknown arg
ok 68 - Unknow arg ident should be "deploy"
ok 69 - Should get an exeption for two unknown arg
ok 70 - Should get an exception for unknown args
ok 71 - Unknow args ident should be "deploy"
ok 72 - Should get an exeption for two unknown args
1..72
ok
t/engine.t ..........
1..615
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 missing sqitch param
ok 6 - Should get an exception for array sqitch param
ok 7 - Should get an exception for array target param
ok 8 - Should get an exception for string sqitch param
ok 9 - Should get an exception for string target param
ok 10 - 'Engine' isa 'App::Sqitch::Engine'
ok 11 - Load an engine
ok 12 - An object of class 'App::Sqitch::Engine::whu' isa 'App::Sqitch::Engine::whu'
ok 13 - The sqitch attribute should be set
ok 14 - Should die on unknown target
ok 15 - Should get load error message
ok 16 - Should have relevant previoius exception
ok 17 - No target should die
ok 18 - It should be the expected message
ok 19 - Should die on bad engine module
ok 20 - Should get another load error message
ok 21 - Should have relevant previoius exception from the bad module
ok 22 - App::Sqitch::Engine->can('name')
ok 23 - Create a App::Sqitch::Engine object
ok 24 - Should get error from base engine name
ok 25 - Name error ident should be "engine"
ok 26 - Name error message should be correct
ok 27 - Create a subclass name object
ok 28 - Subclass oject name should be "whu"
ok 29 - Subclass class name should be "whu"
ok 30 - App::Sqitch::Engine->can('config_vars')
ok 31 - Should have database and client in engine base class
ok 32 - App::Sqitch::Engine->can(...)
ok 33 - Should have no variables
ok 34 - Add a variable
ok 35 - Should have the variable
ok 36 - Set more variables
ok 37 - Should have all of the variables
ok 38 - Should again have no variables
ok 39 - Load engine
ok 40 - Target should be as passed
ok 41 - Load engine with URI with password
ok 42 - 'target attribute' isa 'App::Sqitch::Target'
ok 43 - Load engine
ok 44 - Destination should be URI string
ok 45 - Rgistry destination should be the same as destination
ok 46 - Load engine with URI with password
ok 47 - Destination should not include password
ok 48 - Meta destination should again be the same as destination
ok 49 - App::Sqitch::Engine::whu->can('_check_registry')
ok 50 - Registry should be fine at current version
ok 51 - Should get error for out-of-date registry
ok 52 - Out-of-date registry error ident should be "engine"
ok 53 - Out-of-date registry error message should be correct
ok 54 - Should get error for future registry
ok 55 - Future registry error ident should be "engine"
ok 56 - Future registry error message should be correct
ok 57 - Create a App::Sqitch::Engine object again
ok 58 - Should get an unimplemented exception from initialized()
ok 59 - Should get an unimplemented exception from initialize()
ok 60 - Should get an unimplemented exception from register_project()
ok 61 - Should get an unimplemented exception from run_file()
ok 62 - Should get an unimplemented exception from run_handle()
ok 63 - Should get an unimplemented exception from log_deploy_change()
ok 64 - Should get an unimplemented exception from log_fail_change()
ok 65 - Should get an unimplemented exception from log_revert_change()
ok 66 - Should get an unimplemented exception from log_new_tags()
ok 67 - Should get an unimplemented exception from is_deployed_tag()
ok 68 - Should get an unimplemented exception from is_deployed_change()
ok 69 - Should get an unimplemented exception from are_deployed_changes()
ok 70 - Should get an unimplemented exception from change_id_for()
ok 71 - Should get an unimplemented exception from changes_requiring_change()
ok 72 - Should get an unimplemented exception from earliest_change_id()
ok 73 - Should get an unimplemented exception from latest_change_id()
ok 74 - Should get an unimplemented exception from deployed_changes()
ok 75 - Should get an unimplemented exception from deployed_changes_since()
ok 76 - Should get an unimplemented exception from load_change()
ok 77 - Should get an unimplemented exception from name_for_change_id()
ok 78 - Should get an unimplemented exception from current_state()
ok 79 - Should get an unimplemented exception from current_changes()
ok 80 - Should get an unimplemented exception from current_tags()
ok 81 - Should get an unimplemented exception from search_events()
ok 82 - Should get an unimplemented exception from registered_projects()
ok 83 - Should get an unimplemented exception from change_offset_from_id()
ok 84 - App::Sqitch::Engine->can('_load_changes')
ok 85 - Should load changes with no change
ok 86 - Should load changes with undef
ok 87 - Should load changes with no tags
ok 88 - Should load changes with multiple hashes with no tags
ok 89 - Should load changes with tags
ok 90 - Should load changes with tags with leading @
ok 91 - Should load changes with multiple hashes with tags
ok 92 - Should load changes with reworked change
ok 93 - Should load changes with reworked change & multiple tags
ok 94 - Should load changes with doubly reworked change
ok 95 - Rework change "you"
ok 96 - Tag @beta1
ok 97 - Should load changes with Unplanned change
ok 98 - Should load changes with reworked change without reworked version deployed
ok 99 - Should load changes with reworked change with reworked version deployed
ok 100 - Create a subclass name object again
ok 101 - App::Sqitch::Engine::whu->can(...)
ok 102 - Deploy a change
ok 103 - deploy_change should have called the proper methods
ok 104 - Output should reflect the deployment
ok 105 - Output should reflect success
ok 106 - Only log a change
ok 107 - log-only deploy_change should not have called run_file
ok 108 - Output should reflect the logging
ok 109 - Output should reflect deploy success
ok 110 - Enable verification
ok 111 - Deploy a change to be verified
ok 112 - deploy_change with verification should run the verify file
ok 113 - Output should reflect the logging
ok 114 - Output should reflect deploy success
ok 115 - Enable log_only
ok 116 - Verify and log a change
ok 117 - deploy_change with verification and log-only should not run deploy
ok 118 - Output should reflect the logging
ok 119 - Output should reflect deploy success
ok 120 - Deploy change with error
ok 121 - Error should be from run_file
ok 122 - Should have logged change failure
ok 123 - Output should reflect the deployment, even with failure
ok 124 - Output should reflect deploy failure
ok 125 - Deploy change with failed verification
ok 126 - Error should be from deploy_change
ok 127 - Should have logged verify failure
ok 128 - Output should reflect the deployment, even with verify failure
ok 129 - Output should reflect deploy failure
ok 130 - Verify error should have been vented
ok 131 - Enable log_only
ok 132 - Deploy change with log-only and failed verification
ok 133 - Error should be from deploy_change
ok 134 - Should have logged verify failure but not reverted
ok 135 - Output should reflect the deployment, even with verify failure
ok 136 - Output should reflect deploy failure
ok 137 - Verify error should have been vented
ok 138 - Deploy a change with no verify script
ok 139 - deploy_change with no verify file should not run it
ok 140 - Output should reflect the logging
ok 141 - Output should reflect deploy success
ok 142 - A warning about no verify file should have been emitted
ok 143 - Revert a change
ok 144 - revert_change should have called the proper methods
ok 145 - Output should reflect reversion
ok 146 - Output should acknowldge revert success
ok 147 - Enable log_only
ok 148 - Revert a change with log-only
ok 149 - Log-only revert_change should not have run the change script
ok 150 - Output should reflect logged reversion
ok 151 - Output should acknowldge revert success
ok 152 - Engine with sqitch with plan file
ok 153 - Should get proper change from latest_change()
ok 154 - Latest change ID should have been called with no arg
ok 155 - Should again get proper change from latest_change()
ok 156 - Latest change ID should have been called with offset arg
ok 157 - Should get proper change from earliest_change()
ok 158 - Earliest change ID should have been called with no arg
ok 159 - Should again get proper change from earliest_change()
ok 160 - Earliest change ID should have been called with offset arg
ok 161 - App::Sqitch::Engine->can('_sync_plan')
ok 162 - Plan should start at position -1
ok 163 - start_at should be undef
ok 164 - Sync the plan
ok 165 - Plan should still be at position -1
ok 166 - start_at should still be undef
ok 167 - Should not have updated IDs or hashes
ok 168 - Sync the plan again
ok 169 - Plan should again be at position -1
ok 170 - start_at should again be undef
ok 171 - Still should not have updated IDs or hashes
ok 172 - Sync the plan to a tag
ok 173 - Plan should now be at position 1
ok 174 - start_at should now be widgets@beta
ok 175 - Should have updated IDs
ok 176 - Sync the plan with a random script hash
ok 177 - Plan should now be at position 1
ok 178 - start_at should now be widgets@beta
ok 179 - Should have updated IDs but not hashes
ok 180 - Sync the plan with a random script hash
ok 181 - Plan should now be at position 1
ok 182 - start_at should now be widgets@beta
ok 183 - Should have updated IDs and hashes
ok 184 - Sync the plan
ok 185 - Plan should be at position 1
ok 186 - start_at should be users@alpha
ok 187 - Should have updated hashes but not IDs
ok 188 - App::Sqitch::Engine->can('deploy')
ok 189 - Deploy to @alpha
ok 190 - Plan should be at position 1
ok 191 - Should have deployed through @alpha
ok 192 - Should have called _deploy_all()
ok 193 - Should have seen the output of the deploy to @alpha
ok 194 - Both change names should be output
ok 195 - Enable log_only
ok 196 - Log-only deploy in $mode mode to @alpha
ok 197 - Plan should be at position 1
ok 198 - Should have deployed through @alpha without running files
ok 199 - Should have called _deploy_by_change()
ok 200 - Should have seen the output of the deploy to @alpha
ok 201 - Both change names should be output
ok 202 - Enable log_only
ok 203 - Log-only deploy in $mode mode to @alpha
ok 204 - Plan should be at position 1
ok 205 - Should have deployed through @alpha without running files
ok 206 - Should have called _deploy_by_tag()
ok 207 - Should have seen the output of the deploy to @alpha
ok 208 - Both change names should be output
ok 209 - Enable log_only
ok 210 - Log-only deploy in $mode mode to @alpha
ok 211 - Plan should be at position 1
ok 212 - Should have deployed through @alpha without running files
ok 213 - Should have called _deploy_all()
ok 214 - Should have seen the output of the deploy to @alpha
ok 215 - Both change names should be output
ok 216 - Deploy to @alpha with tag mode
ok 217 - Plan should again be at position 1
ok 218 - Should have deployed through @alpha without initialization
ok 219 - Should have called _deploy_by_tag()
ok 220 - Should have seen the output of the deploy to @alpha
ok 221 - Both change names should be output
ok 222 - Should get an error for an unknown change
ok 223 - The exception should report the unknown change
ok 224 - Only latest_item() should have been called
ok 225 - Deploy to alpha thrice
ok 226 - Only latest_item() should have been called
ok 227 - Should notify user that already at @alpha
ok 228 - Should fail changeing older change
ok 229 - Should be a "deploy" error
ok 230 - It should suggest using "revert"
ok 231 - Should have called latest_item() and latest_tag()
ok 232 - Deploy everything by change
ok 233 - Plan should be at position 3
ok 234 - Should have deployed everything
ok 235 - Should have called _deploy_by_change()
ok 236 - Should have emitted deploy announcement and successes
ok 237 - Should have seen the output of the deploy to the end
ok 238 - Should return success for deploy to up-to-date DB
ok 239 - Should have emitted deploy announcement and successes
ok 240 - It should have just fetched the latest change ID
ok 241 - Should fail on invalid mode
ok 242 - Should be a "deploy" error
ok 243 - And the message should reflect the unknown mode
ok 244 - It should have check for initialization
ok 245 - Should have announced destination
ok 246 - Engine with sqitch with no file
ok 247 - Should die with no changes
ok 248 - Should have the localized message
ok 249 - It should have checked for the latest item
ok 250 - Deploy changewise to index 1
ok 251 - Should changewise deploy to index 2
ok 252 - Should have seen output of each change
ok 253 - Output should reflect deploy successes
ok 254 - Deploy changewise to index 2
ok 255 - Should changewise deploy to from index 2 to index 3
ok 256 - Should have seen output of changes 2-3
ok 257 - Output should reflect deploy successes
ok 258 - Die in _deploy_by_change
ok 259 - It should have died in run_file
ok 260 - It should have logged the failure
ok 261 - Should have seen output for first change
ok 262 - Output should reflect deploy failure
ok 263 - Deploy tagwise to index 1
ok 264 - Should tagwise deploy to index 1
ok 265 - Should have seen output of each change
ok 266 - Output should reflect deploy successes
ok 267 - Deploy tagwise to index 3
ok 268 - Should tagwise deploy from index 2 to index 3
ok 269 - Should have seen output of changes 3-3
ok 270 - Output should reflect deploy successes
ok 271 - Die in log_deploy_change
ok 272 - Should get final deploy failure message
ok 273 - It should have reverted back to the last deployed tag
ok 274 - Should have seen deploy and revert messages (excluding curry revert)
ok 275 - Output should reflect deploy successes and failure
ok 276 - The original error should have been vented
ok 277 - Enable log_only
ok 278 - Die in log_deploy_change log-only
ok 279 - Should get final deploy failure message
ok 280 - It should have run no deploy or revert scripts
ok 281 - Should have seen deploy and revert messages (excluding curry revert)
ok 282 - Output should reflect deploy successes and failure
ok 283 - The original error should have been vented
ok 284 - Die in _deploy_by_tag again
ok 285 - Should again get final deploy failure message
ok 286 - Should have logged back to the beginning
ok 287 - Should have seen deploy and revert messages
ok 288 - Output should reflect deploy successes and failure
ok 289 - Should have one vented message
ok 290 - And it should be the underlying error
ok 291 - And it should had notified that all changes were reverted
ok 292 - Die in _deploy_by_tag yet again
ok 293 - Should die "Deploy failed" again
ok 294 - Should have reverted back to last tag
ok 295 - Should have user change reversion messages
ok 296 - Output should reflect deploy successes and failure
ok 297 - Should see underlying error and reversion message
ok 298 - Die in _deploy_by_tag again
ok 299 - Should once again get final deploy failure message
ok 300 - Should have tried to revert one change
ok 301 - Should have seen revert message
ok 302 - Output should reflect deploy successes and failure
ok 303 - Should get reversion failure message
ok 304 - Deploy all to index 1
ok 305 - Should tagwise deploy to index 1
ok 306 - Should have seen output of each change
ok 307 - Output should reflect deploy successes
ok 308 - Deploy tagwise to index 2
ok 309 - Should tagwise deploy to from index 1 to index 2
ok 310 - Should have seen output of changes 3-4
ok 311 - Output should reflect deploy successe
ok 312 - Die in _deploy_all
ok 313 - Should get final deploy failure message
ok 314 - It should have logged up to the failure
ok 315 - Should have seen deploy and revert messages excluding revert for failed logging
ok 316 - Output should reflect deploy successes and failures
ok 317 - The original error should have been vented
ok 318 - Enable log_only
ok 319 - Die in log-only _deploy_all
ok 320 - Should get final deploy failure message
ok 321 - It should have run no deploys or reverts
ok 322 - Should have seen deploy and revert messages excluding revert for failed logging
ok 323 - Output should reflect deploy successes and failures
ok 324 - The original error should have been vented
ok 325 - Die in _deploy_all again
ok 326 - Should again get final deploy failure message
ok 327 - Should have reveted all changes and tags
ok 328 - Should see all changes revert
ok 329 - Output should reflect deploy successes and failures
ok 330 - Should notifiy user of error and rollback
ok 331 - Die in _deploy_all on the last change
ok 332 - Should once again get final deploy failure message
ok 333 - Should have deployed to dr_evil and revered down to @alpha
ok 334 - Should see changes revert back to @alpha
ok 335 - Output should reflect deploy successes and failures
ok 336 - Should notifiy user of error and rollback to @alpha
ok 337 - Test is_deployed(tag)
ok 338 - It should have called is_deployed_tag()
ok 339 - Test is_deployed(change)
ok 340 - It should have called is_deployed_change()
ok 341 - App::Sqitch::Engine::whu->can('deploy_change')
ok 342 - Deploy a change
ok 343 - It should have been deployed
ok 344 - Should have shown change name
ok 345 - Output should reflect deploy success
ok 346 - Shuld die on deploy failure
ok 347 - Should be told the deploy failed
ok 348 - It should failed to have been deployed
ok 349 - Should have vented the original error
ok 350 - Should have shown change name
ok 351 - Output should reflect deploy failure
ok 352 - App::Sqitch::Engine::whu->can('revert_change')
ok 353 - Revert the change
ok 354 - It should have been reverted
ok 355 - Should have shown reverted change name
ok 356 - And the revert failure should be "ok"
ok 357 - App::Sqitch::Engine::whu->can('revert')
ok 358 - Should get exception for no changes to revert
ok 359 - Should be a revert exception
ok 360 - Should have notified that there is nothing to revert
ok 361 - Exit val should be 1
ok 362 - It should only have called deployed_changes()
ok 363 - Nothing should have been output
ok 364 - Revert should die on unknown change
ok 365 - Should be another "revert" error
ok 366 - The message should mention it is an unknown change
ok 367 - Should have called change_id_for() with change name
ok 368 - Nothing should have been output
ok 369 - Revert should die on unknown change ID
ok 370 - Should be another "revert" error
ok 371 - The message should mention it is an unknown change
ok 372 - Shoudl have called change_id_for() with change ID
ok 373 - Nothing should have been output
ok 374 - Revert should die on undeployed change
ok 375 - Should be another "revert" error
ok 376 - The message should mention that the change is not deployed
ok 377 - change_id_for
ok 378 - Nothing should have been output
ok 379 - Should get error reverting when no subsequent changes
ok 380 - No subsequent change error ident should be "revert"
ok 381 - No subsequent change error exitval should be 1
ok 382 - No subsequent change error message should be correct
ok 383 - Should have called change_id_for and deployed_changes_since
ok 384 - Should get error for known but undeployed change
ok 385 - No changes error should be "revert"
ok 386 - No changes exitval should be 1
ok 387 - No changes message should be correct
ok 388 - Should have called deployed_changes
ok 389 - Revert all changes
ok 390 - Should have reverted the changes in reverse order
ok 391 - Should have prompted to revert all changes
ok 392 - It should have said it was reverting all changes and listed them
ok 393 - And the revert successes should be emitted
ok 394 - Enable log_only
ok 395 - Revert all changes log-only
ok 396 - Log-only Should have reverted the changes in reverse order
ok 397 - Log-only should have prompted to revert all changes
ok 398 - It should have said it was reverting all changes and listed them
ok 399 - And the revert successes should be emitted
ok 400 - Should abort declined revert
ok 401 - Declined revert ident should be "revert"
ok 402 - Should have exited with value 1
ok 403 - Should have exited with proper message
ok 404 - Should have called deployed_changes only
ok 405 - Should have prompt to revert all changes
ok 406 - It should have emitted nothing else
ok 407 - Revert all changes with no prompt
ok 408 - Should have reverted the changes in reverse order
ok 409 - Should have no prompt
ok 410 - It should have said it was reverting all changes and listed them
ok 411 - And the revert successes should be emitted
ok 412 - Revert to @alpha
ok 413 - Should have reverted only changes after @alpha
ok 414 - Should have prompt to revert to change
ok 415 - Output should show what it reverts to
ok 416 - And the revert successes should be emitted
ok 417 - Should abort declined revert to @alpha
ok 418 - Declined revert ident should be "revert:confirm"
ok 419 - Should have exited with value 1
ok 420 - Should have exited with proper message
ok 421 - Should have called revert methods
ok 422 - Should have prompt to revert to @alpha
ok 423 - It should have emitted nothing else
ok 424 - Revert to @HEAD^
ok 425 - Should have reverted one changes for @HEAD^
ok 426 - Should have no prompt
ok 427 - Output should show what it reverts to
ok 428 - And the header and "ok" should be emitted
ok 429 - App::Sqitch::Engine->can('change_id_for_depend')
ok 430 - Should get error from change_id_for_depend when change not in plan
ok 431 - Should get ident "plan" from change_id_for_depend
ok 432 - Should have proper message from change_id_for_depend error
ok 433 - Should get error from change_id_for_depend when no ID
ok 434 - Should get ident "engine" when no ID
ok 435 - Should have proper messag from change_id_for_depend error
ok 436 - Get a change id
ok 437 - Should have passed dependency params to change_id_for()
ok 438 - App::Sqitch::Engine->can('find_change')
ok 439 - find_change() should work
ok 440 - Its parameters should have been passed to change_id_for and change_offset_from_id
ok 441 - find_change() should work
ok 442 - Project and offset should have been passed off
ok 443 - App::Sqitch::Engine->can('verify_change')
ok 444 - Verify a change
ok 445 - The change file should have been run
ok 446 - Should have no info output
ok 447 - Verify a change with no verify script.
ok 448 - No abstract methods should be called
ok 449 - Should have no info output
ok 450 - A warning about no verify file should have been emitted
ok 451 - App::Sqitch::Engine::whu->can('check_deploy_dependencies')
ok 452 - All planned changes should be okay
ok 453 - Should have called are_deployed_changes
ok 454 - Dependencies should check out even when within those to be deployed
ok 455 - Resolved ID should be populated
ok 456 - Conflict should throw exception
ok 457 - Should be a "deploy" error
ok 458 - Should have localized message about the local conflict
ok 459 - Conflict should throw exception
ok 460 - Should be a "deploy" error
ok 461 - Should have localized message about conflicts
ok 462 - Should have called change_id_for() twice
ok 463 - Conflicting dependencies should have no resolved IDs
ok 464 - Conflict should throw another exception
ok 465 - Should be a "deploy" error
ok 466 - Should have localized message about all three conflicts
ok 467 - Should have called change_id_for() twice
ok 468 - Conflicting dependencies should have no resolved IDs
ok 469 - Missing dependencies should throw exception
ok 470 - Should be another "deploy" error
ok 471 - Should have localized message missing dependencies
ok 472 - Should have called check_requires
ok 473 - Missing requirements should not have resolved
ok 474 - Missing dependencies should throw exception
ok 475 - Should be another "deploy" error
ok 476 - Should have localized conflicts and required error messages
ok 477 - Should have called check_requires
ok 478 - Missing requirements should not have resolved
ok 479 - App::Sqitch::Engine::whu->can('check_revert_dependencies')
ok 480 - Should get error reverting change another depend on
ok 481 - Dependent error ident should be "revert"
ok 482 - Dependent error message should be correct
ok 483 - It should have check for requiring changes
ok 484 - Should get error reverting change others depend on
ok 485 - Dependent error ident should be "revert"
ok 486 - Dependent error message should be correct
ok 487 - It should have check for requiring changes
ok 488 - Should get error reverting change others depend on
ok 489 - Dependent error ident should be "revert"
ok 490 - Dependent error message should be correct
ok 491 - It should have checked twice for requiring changes
ok 492 - App::Sqitch::Engine::whu->can('_trim_to')
ok 493 - _trim_to should complain about a nonexistent change key
ok 494 - _trim_to nonexistent key error ident should be "foo"
ok 495 - _trim_to nonexistent key error message should be correct
ok 496 - _trim_to should complain about an undeployed change key
ok 497 - _trim_to undeployed change error ident should be "yep"
ok 498 - _trim_to undeployed change error message should be correct
ok 499 - _trim_to should complain about an unplanned change key
ok 500 - _trim_to unplanned change error ident should be "oop"
ok 501 - _trim_to unplanned change error message should be correct
ok 502 - _trim_to should find "roles" at index 0
ok 503 - Changes should be untrimmed
ok 504 - _trim_to should find "widgets" at index 2
ok 505 - First two changes should be shifted off
ok 506 - _trim_to should find "dr_evil" at last index
ok 507 - Changes should be untrimmed
ok 508 - _trim_to should find "tacos" at index 4
ok 509 - Last two changes should be popped off
ok 510 - _trim_to should find "@HEAD" at index 2
ok 511 - First two changes should be shifted off
ok 512 - _trim_to should find "HEAD" at index 2
ok 513 - First two changes should be shifted off
ok 514 - _trim_to should find "@ROOT" at index 2
ok 515 - All but First three changes should be popped off
ok 516 - _trim_to should find "ROOT" at index 2
ok 517 - All but First three changes should be popped off
ok 518 - App::Sqitch::Engine::whu->can('_verify_changes')
ok 519 - Verify of a single change should return errcount 0
ok 520 - Declared output should list the change
ok 521 - Emitted Output should reflect the verification of the change
ok 522 - Should have no comments
ok 523 - The verify script should have been run
ok 524 - Verify of another single change should return errcount 0
ok 525 - Declared output should list the change
ok 526 - Emitted Output should reflect the verification of the change
ok 527 - Should have no comments
ok 528 - A warning about no verify file should have been emitted
ok 529 - The verify script should not have been run
ok 530 - Verify of two changes should return errcount 0
ok 531 - Declared output should list both changes
ok 532 - Emitted Output should reflect the verification of the changes
ok 533 - Should have no comments
ok 534 - A warning about no verify file should have been emitted
ok 535 - Only one verify script should have been run
ok 536 - Verify of two changes and show pending
ok 537 - Delcared output should list deployed changes
ok 538 - Emitted output should include list of pending changes
ok 539 - Should have no comments
ok 540 - A warning about no verify file should have been emitted
ok 541 - Only one verify script should have been run
ok 542 - Verify of a change not in the plan should return errcount 1
ok 543 - Declared Output should reflect the verification of the change
ok 544 - Emitted Output should reflect the failure of the verify
ok 545 - Should have a comment about the change missing from the plan
ok 546 - No verify script should have been run
ok 547 - Verify of an out-of-order change should return errcount 1
ok 548 - Declared output should reflect the verification of the change
ok 549 - Emitted Output should reflect the failure of the verify
ok 550 - Should have a comment about the out-of-order change
ok 551 - The verify script should have been run
ok 552 - Verify of a change with 2 issues should return 2
ok 553 - Declared output should reflect the verification of the change
ok 554 - Emitted Output should reflect the failure of the verify
ok 555 - Should have comment about the out-of-order change and script failure
ok 556 - No abstract methods should have been called
ok 557 - Verify of 2 changes with 2 issues each should return 4
ok 558 - Declraed output should reflect the verification of both changes
ok 559 - Emitted Output should reflect the failure of both verifies
ok 560 - Should have comment about the out-of-order changes and script failures
ok 561 - No abstract methods should have been called
ok 562 - _verify_changes with two undeployed changes should returne 2
ok 563 - Listed changes should be both deployed and undeployed
ok 564 - Emitted Output should reflect 1 pass
ok 565 - Should have comments for undeployed changes
ok 566 - No abstract methods should have been called
ok 567 - App::Sqitch::Engine::whu->can('verify')
ok 568 - Should get error for no deployed changes
ok 569 - No deployed changes ident should be "verify"
ok 570 - No deployed changes exitval should be 1
ok 571 - No deployed changes message should be correct
ok 572 - Notification of the verify should be emitted
ok 573 - Should get error for no changes
ok 574 - No changes ident should be "verify"
ok 575 - No changes exitval should be 1
ok 576 - No changes message should be correct
ok 577 - Notification of the verify should be emitted
ok 578 - Should get error for no planned changes
ok 579 - No planned changes ident should be "verify"
ok 580 - No planned changes exitval should be 2
ok 581 - No planned changes message should be correct
ok 582 - Notification of the verify should be emitted
ok 583 - Verify one change
ok 584 - Notification of the verify should be emitted
ok 585 - The one change name should be declared
ok 586 - Success should be emitted
ok 587 - Should have no comments
ok 588 - Verify two changes
ok 589 - Notification of the verify should be emitted
ok 590 - The two change names should be declared
ok 591 - Both successes should be emitted
ok 592 - Should have no comments
ok 593 - Should have warning about missing verify script
ok 594 - Verify with a reworked change changes
ok 595 - Notification of the verify should be emitted
ok 596 - The two change names should be emitted
ok 597 - Both successes should be emitted
ok 598 - Should have no comments
ok 599 - Should have no warnings
ok 600 - Verify two specific changes
ok 601 - Notification of the verify should be emitted
ok 602 - The two change names should be emitted
ok 603 - Both successes should be emitted
ok 604 - Should have no comments
ok 605 - Should have warning about missing verify script
ok 606 - Should get failure for failing verify scripts
ok 607 - Failed verify ident should be "verify"
ok 608 - Failed verify exitval should be 2
ok 609 - Faield verify message should be correct
ok 610 - Notification of the verify should be emitted
ok 611 - Both change names should be declared
ok 612 - Output should include the failure report
ok 613 - Should have the errors in comments
ok 614 - Nothing should have been vented
ok 615 - no warnings
ok
t/engine_cmd.t ......
1..199
ok 1 - Load a sqitch sqitch object
ok 2 - 'Engine command' isa 'App::Sqitch::Command::engine'
ok 3 - App::Sqitch::Command::engine->can(...)
ok 4 - Options should be correct
ok 5 - Default properties should be empty
ok 6 - configure() should ignore config file
ok 7 - Run list()
ok 8 - The list of engines should have been output
ok 9 - 'Verbose engine' isa 'App::Sqitch::Command::engine'
ok 10 - Run verbose list()
ok 11 - The list of engines and their targets should have been output
ok 12 - No name arg to add() should yield usage
ok 13 - No args should be passed to usage
ok 14 - Should get error for existing engine
ok 15 - Existing engine error ident should be "engine"
ok 16 - Existing engine error message should be correct
ok 17 - Add engine "vertica"
ok 18 - Engine "test" target should have been set
ok 19 - Engine "test" should have no client set
ok 20 - Engine "test" should have no registry set
ok 21 - Engine "test" should have no top_dir set
ok 22 - Engine "test" should have no plan_file set
ok 23 - Engine "test" should have no deploy_dir set
ok 24 - Engine "test" should have no revert_dir set
ok 25 - Engine "test" should have no verify_dir set
ok 26 - Engine "test" should have no extension set
ok 27 - 'Engine with all properties' isa 'App::Sqitch::Command::engine'
ok 28 - Add engine "firebird"
ok 29 - Engine "firebird" should have extension set
ok 30 - Engine "firebird" should have revert_dir set
ok 31 - Engine "firebird" should have top_dir set
ok 32 - Engine "firebird" should have registry set
ok 33 - Engine "firebird" should have client set
ok 34 - Engine "firebird" should have target set
ok 35 - Engine "firebird" should have deploy_dir set
ok 36 - Engine "firebird" should have plan_file set
ok 37 - Engine "firebird" should have verify_dir set
ok 38 - No name arg to set_target() should yield usage
ok 39 - No args should be passed to usage
ok 40 - No target arg to set_target() should yield usage
ok 41 - No args should be passed to usage
ok 42 - Should get error for nonexistent engine
ok 43 - Nonexistent engine error ident should be "engine"
ok 44 - Nonexistent engine error message should be correct
ok 45 - Set new target
ok 46 - Engine "pg" should have new target
ok 47 - Set new target
ok 48 - Engine "pg" should have new DB target
ok 49 - Should get an error for an unknown target
ok 50 - Nonexistent target error ident should be "engine"
ok 51 - Nonexistent target error message should be correct
ok 52 - No name arg to set_extension() should yield usage
ok 53 - No args should be passed to usage
ok 54 - No extension arg to set_extension() should yield usage
ok 55 - No args should be passed to usage
ok 56 - Should get error for nonexistent engine
ok 57 - Nonexistent engine error ident should be "engine"
ok 58 - Nonexistent engine error message should be correct
ok 59 - Set new $key
ok 60 - Engine "pg" should have new extension
ok 61 - No name arg to set_revert_dir() should yield usage
ok 62 - No args should be passed to usage
ok 63 - No revert_dir arg to set_revert_dir() should yield usage
ok 64 - No args should be passed to usage
ok 65 - Should get error for nonexistent engine
ok 66 - Nonexistent engine error ident should be "engine"
ok 67 - Nonexistent engine error message should be correct
ok 68 - Set new $key
ok 69 - Engine "pg" should have new revert_dir
ok 70 - No name arg to set_top_dir() should yield usage
ok 71 - No args should be passed to usage
ok 72 - No top_dir arg to set_top_dir() should yield usage
ok 73 - No args should be passed to usage
ok 74 - Should get error for nonexistent engine
ok 75 - Nonexistent engine error ident should be "engine"
ok 76 - Nonexistent engine error message should be correct
ok 77 - Set new $key
ok 78 - Engine "pg" should have new top_dir
ok 79 - No name arg to set_registry() should yield usage
ok 80 - No args should be passed to usage
ok 81 - No registry arg to set_registry() should yield usage
ok 82 - No args should be passed to usage
ok 83 - Should get error for nonexistent engine
ok 84 - Nonexistent engine error ident should be "engine"
ok 85 - Nonexistent engine error message should be correct
ok 86 - Set new $key
ok 87 - Engine "pg" should have new registry
ok 88 - No name arg to set_client() should yield usage
ok 89 - No args should be passed to usage
ok 90 - No client arg to set_client() should yield usage
ok 91 - No args should be passed to usage
ok 92 - Should get error for nonexistent engine
ok 93 - Nonexistent engine error ident should be "engine"
ok 94 - Nonexistent engine error message should be correct
ok 95 - Set new $key
ok 96 - Engine "pg" should have new client
ok 97 - No name arg to set_target() should yield usage
ok 98 - No args should be passed to usage
ok 99 - No target arg to set_target() should yield usage
ok 100 - No args should be passed to usage
ok 101 - Should get error for nonexistent engine
ok 102 - Nonexistent engine error ident should be "engine"
ok 103 - Nonexistent engine error message should be correct
ok 104 - Set new $key
ok 105 - Engine "pg" should have new target
ok 106 - No name arg to set_deploy_dir() should yield usage
ok 107 - No args should be passed to usage
ok 108 - No deploy_dir arg to set_deploy_dir() should yield usage
ok 109 - No args should be passed to usage
ok 110 - Should get error for nonexistent engine
ok 111 - Nonexistent engine error ident should be "engine"
ok 112 - Nonexistent engine error message should be correct
ok 113 - Set new $key
ok 114 - Engine "pg" should have new deploy_dir
ok 115 - No name arg to set_plan_file() should yield usage
ok 116 - No args should be passed to usage
ok 117 - No plan_file arg to set_plan_file() should yield usage
ok 118 - No args should be passed to usage
ok 119 - Should get error for nonexistent engine
ok 120 - Nonexistent engine error ident should be "engine"
ok 121 - Nonexistent engine error message should be correct
ok 122 - Set new $key
ok 123 - Engine "pg" should have new plan_file
ok 124 - No name arg to set_verify_dir() should yield usage
ok 125 - No args should be passed to usage
ok 126 - No verify_dir arg to set_verify_dir() should yield usage
ok 127 - No args should be passed to usage
ok 128 - Should get error for nonexistent engine
ok 129 - Nonexistent engine error ident should be "engine"
ok 130 - Nonexistent engine error message should be correct
ok 131 - Set new $key
ok 132 - Engine "pg" should have new verify_dir
ok 133 - No name args to remove() should yield usage
ok 134 - No args should be passed to usage
ok 135 - Should get error for nonexistent engine
ok 136 - Nonexistent engine error ident should be "engine"
ok 137 - Nonexistent engine error message should be correct
ok 138 - Remove
ok 139 - Engine "mysql" should now be gone
ok 140 - Run show()
ok 141 - Show with no names should emit the list of engines
ok 142 - Show sqlite
ok 143 - The full "sqlite" engine should have been shown
ok 144 - Set vertica client
ok 145 - Show three engines
ok 146 - All three engines should have been shown
ok 147 - 'Simple engine' isa 'App::Sqitch::Command::engine'
ok 148 - Execute undef
ok 149 - list() should have been called
ok 150 - Execute undef with args
ok 151 - list() should have been passed args
ok 152 - Execute list
ok 153 - list() should have been called
ok 154 - Execute list with args
ok 155 - list() should have been passed args
ok 156 - Execute add
ok 157 - add() should have been called
ok 158 - Execute add with args
ok 159 - add() should have been passed args
ok 160 - Execute set-target
ok 161 - set_target() should have been called
ok 162 - Execute set-target with args
ok 163 - set_target() should have been passed args
ok 164 - Execute set-registry
ok 165 - set_registry() should have been called
ok 166 - Execute set-registry with args
ok 167 - set_registry() should have been passed args
ok 168 - Execute set-client
ok 169 - set_client() should have been called
ok 170 - Execute set-client with args
ok 171 - set_client() should have been passed args
ok 172 - Execute remove
ok 173 - remove() should have been called
ok 174 - Execute remove with args
ok 175 - remove() should have been passed args
ok 176 - Execute rm
ok 177 - remove() should have been called
ok 178 - Execute rm with args
ok 179 - remove() should have been passed args
ok 180 - Execute rename
ok 181 - rename() should have been called
ok 182 - Execute rename with args
ok 183 - rename() should have been passed args
ok 184 - Execute show
ok 185 - show() should have been called
ok 186 - Execute show with args
ok 187 - show() should have been passed args
ok 188 - Should get an exception for a nonexistent action
ok 189 - Nonexistent action message should be passed to usage
ok 190 - Update the config
ok 191 - The core.mysql config should still be present
ok 192 - MySQL config should have been rewritten without deprecated keys
ok 193 - Update the config again
ok 194 - The core.mysql config should again remain
ok 195 - MySQL config should have been rewritten with an integrated target
ok 196 - Update the config again
ok 197 - The core.mysql config should again remain
ok 198 - MySQL config should have been rewritten with a default target
ok 199 - no warnings
ok
t/firebird.t ........
ok 1 - require App::Sqitch::Engine::firebird;
ok 2 - config_vars should return three vars
ok 3 - An object of class 'App::Sqitch::Engine::firebird' isa 'App::Sqitch::Engine::firebird'
ok 4 - dbname should be filled in
ok 5 - registry dbname should be "sqitch.fdb"
ok 6 - registry_destination should be the same as registry URI
ok 7 - An object of class 'App::Sqitch::Engine::firebird' isa 'App::Sqitch::Engine::firebird'
ok 8 - Set some variables
ok 9 - Create another firebird
ok 10 - client should be as configured
ok 11 - URI should be as configured
ok 12 - destination should default to URI without password
ok 13 - registry_destination should be URI with configured registry and no password
ok 14 - firebird command should be configured
ok 15 - Create a firebird with sqitch with options
ok 16 - client should be as optioned
ok 17 - Registry URI should include --registry value.
ok 18 - isql command should be as optioned
ok 19 - App::Sqitch::Engine::firebird->can('connection_string')
ok 20 - Connection for db:firebird:foo.fdb
ok 21 - Connection for db:firebird:foo.com/foo.fdb
ok 22 - Connection for db:firebird:foo.com/foo.fdb:1234
ok 23 - Connection for db:firebird:/blah/hi.fdb
ok 24 - Connection for db:firebird:foo.com//blah/hi.fdb
ok 25 - Connection for db:firebird:foo.com//blah/hi.fdb:1234
ok 26 - Connection for db:firebird:C:/blah/hi.fdb
ok 27 - Connection for db:firebird:foo.com/C:/blah/hi.fdb
ok 28 - Connection for db:firebird:foo.com/C:/blah/hi.fdb:1234
ok 29 - Should get an exception for no db name
ok 30 - No dbname exception ident should be "firebird"
ok 31 - No dbname exception message should be correct
ok 32 - App::Sqitch::Engine::firebird->can(...)
ok 33 - ISC_PASSWORD should be "s3cr3t"
ok 34 - Call _run
ok 35 - Command should be passed to run()
ok 36 - ISC_PASSWORD should be "s3cr3t"
ok 37 - Call _spool
ok 38 - Command should be passed to spool()
ok 39 - ISC_PASSWORD should be "s3cr3t"
ok 40 - Call _capture
ok 41 - Command should be passed to capture()
ok 42 - Create a firebird with sqitch with no pw
ok 43 - ISC_PASSWORD should not exist
ok 44 - Call _run again
ok 45 - Command should be passed to run() again
ok 46 - ISC_PASSWORD should not exist
ok 47 - Call _spool again
ok 48 - Command should be passed to spool() again
ok 49 - ISC_PASSWORD should not exist
ok 50 - Call _capture again
ok 51 - Command should be passed to capture() again
ok 52 - ISC_PASSWORD should not exist
ok 53 - Run foo/bar.sql
ok 54 - File should be passed to run()
ok 55 - ISC_PASSWORD should not exist
ok 56 - Spool a "file handle"
ok 57 - Handle should be passed to spool()
ok 58 - ISC_PASSWORD should not exist
ok 59 - Verify foo/bar.sql
ok 60 - Verify file should be passed to capture()
ok 61 - ISC_PASSWORD should not exist
ok 62 - Verify foo/bar.sql again
ok 63 - Verify file should be passed to run() for high verbosity
ok 64 - App::Sqitch::Engine::firebird->can('_ts2char_format')
ok 65 - _ts2char_format should work
ok 66 - App::Sqitch::Engine::firebird->can('_dt')
ok 67 - 'Return value of _dt()' isa 'App::Sqitch::DateTime'
ok 68 - DateTime year should be set
ok 69 - DateTime month should be set
ok 70 - DateTime day should be set
ok 71 - DateTime hour should be set
ok 72 - DateTime minute should be set
ok 73 - DateTime second should be set
ok 74 - DateTime TZ should be set
ok 75 - App::Sqitch::Engine::firebird->can(...)
# Subtest: live database
1..0 # SKIP Unable to live-test Firebird engine: Can't locate DBD/Firebird.pm in @INC (@INC contains: t/lib C:\cpanfly-5.14\var\cpan\build\App-Sqitch-0.9992-m0ozmJ\blib\lib C:\cpanfly-5.14\var\cpan\build\App-Sqitch-0.9992-m0ozmJ\blib\arch inc C:\cpanfly-5.14\var\megalib C:\cpanfly-5.14\var\cpan\build\DateTime-TimeZone-Local-Win32-1.82-os1QdD/blib/arch C:\cpanfly-5.14\var\cpan\build\DateTime-TimeZone-Local-Win32-1.82-os1QdD/blib/lib C:/cpanfly-5.14/var/megalib C:/Perl-5.14/site/lib C:/Perl-5.14/lib .) at t/firebird.t line 334.
#
ok 76 # skip Unable to live-test Firebird engine: Can't locate DBD/Firebird.pm in @INC (@INC contains: t/lib C:\cpanfly-5.14\var\cpan\build\App-Sqitch-0.9992-m0ozmJ\blib\lib C:\cpanfly-5.14\var\cpan\build\App-Sqitch-0.9992-m0ozmJ\blib\arch inc C:\cpanfly-5.14\var\megalib C:\cpanfly-5.14\var\cpan\build\DateTime-TimeZone-Local-Win32-1.82-os1QdD/blib/arch C:\cpanfly-5.14\var\cpan\build\DateTime-TimeZone-Local-Win32-1.82-os1QdD/blib/lib C:/cpanfly-5.14/var/megalib C:/Perl-5.14/site/lib C:/Perl-5.14/lib .) at t/firebird.t line 334.
#
1..76
ok
t/help.t ............
1..15
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 - Execute "changes" help
ok 8 - Should show "changes" command docs
ok 9 - Execute "tutorial" help
ok 10 - Should show "tutorial" command docs
ok 11 - Should get an exception for "nonexistent" help
ok 12 - Exception ident should be "help"
ok 13 - Should get failure message for nonexistent command
ok 14 - Exception exit val should be 1
ok 15 - no warnings
ok
t/init.t ............
1..167
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 - 'default target' isa 'App::Sqitch::Target'
ok 10 - App::Sqitch::Command::init->can('make_directories')
ok 11 - dir init.mkdir does not exist
ok 12 - dir init.mkdir\deploy does not exist
ok 13 - dir init.mkdir\revert does not exist
ok 14 - dir init.mkdir\verify does not exist
ok 15 - Make the directories
ok 16 - dir init.mkdir exists
ok 17 - dir init.mkdir\deploy exists
ok 18 - dir init.mkdir\revert exists
ok 19 - dir init.mkdir\verify exists
ok 20 - Each should have been sent to info
ok 21 - Make the directories again
ok 22 - Nothing should have been sent to info
ok 23 - Make the directories once more
ok 24 - revert dir exists again
ok 25 - Should have noted creation of revert dir
ok 26 - Should fail on permission issue
ok 27 - Permission error should have ident "init"
ok 28 - The permission error should be formatted properly
ok 29 - App::Sqitch::Command::init->can('write_config')
ok 30 - Another init object
ok 31 - nonexistent.conf does not exist
ok 32 - Write the config
ok 33 - nonexistent.conf exists
ok 34 - The configuration file should have no variables
ok 35 - The creation should be sent to info
ok 36 - All in core section should be commented-out
ok 37 - Another init object
ok 38 - Write the config
ok 39 - nonexistent.conf exists
ok 40 - The configuration should have been written with the one setting
ok 41 - The creation should be sent to info
ok 42 - Other settings should be commented-out
ok 43 - Write the config again
ok 44 - The configuration should be unchanged
ok 45 - Nothing should have been sent to info
ok 46 - Make an init object with user config
ok 47 - nonexistent.conf does not exist
ok 48 - Write the config with a user conf
ok 49 - nonexistent.conf exists
ok 50 - The configuration should just have core.top_dir
ok 51 - The creation should be sent to info again
ok 52 - Other settings should be commented-out
ok 53 - Make an init object with system config
ok 54 - Get target
ok 55 - nonexistent.conf does not exist
ok 56 - Write the config with a system conf
ok 57 - nonexistent.conf exists
ok 58 - The configuration should have local and system config
ok 59 - The creation should be sent to info again
ok 60 - Other settings should be commented-out
ok 61 - Create new init with sqitch non-default attributes
ok 62 - Write the config with core attrs
ok 63 - The creation should be sent to info once more
ok 64 - The configuration should have been written with all the core values
ok 65 - Create new init with sqitch with non-default engine attributes
ok 66 - Write the config with engine attrs
ok 67 - The creation should be sent to info yet again
ok 68 - The configuration should have been written with sqlite values
ok 69 - Client should be included
ok 70 - registry_uri should be included in a comment
ok 71 - Create new init with sqitch with default engine attributes
ok 72 - Write the config with engine attrs
ok 73 - The creation should be sent to info again again
ok 74 - The configuration should have been written with only the engine var
ok 75 - Engine section should be present but commented-out
ok 76 - Make an init with sqlite and user config
ok 77 - nonexistent.conf does not exist
ok 78 - Write the config with sqlite config
ok 79 - The creation should be sent to info once more
ok 80 - New config should have been written with sqlite values
ok 81 - Configured client should be included in a comment
ok 82 - Configured target should be included in a comment
ok 83 - Configured registry should be included in a comment
ok 84 - Create new init with sqitch with more non-default engine attributes
ok 85 - Write the config with more engine attrs
ok 86 - The creation should be sent to info one more time
ok 87 - The configuration should have been written with client values
ok 88 - registry should be included in a comment
ok 89 - Create new init with sqitch with default engine attributes
ok 90 - Write the config with engine attrs
ok 91 - The creation should be sent to info again again again
ok 92 - The configuration should have been written with only the engine var
ok 93 - Engine section should be present but commented-out
ok 94 - Make an init with pg and user config
ok 95 - nonexistent.conf does not exist
ok 96 - Write the config with pg config
ok 97 - The pg config creation should be sent to info
ok 98 - The configuration should have been written with pg options
ok 99 - Configured registry should be in a comment
ok 100 - Configured target should be in a comment
ok 101 - App::Sqitch::Command::init->can('write_plan')
ok 102 - Plan file should not yet exist
ok 103 - Write the plan file
ok 104 - The plan creation should be sent to info
ok 105 - Plan file should now exist
ok 106 - The contents should be correct
ok 107 - Write the plan file again
ok 108 - Plan file should still exist
ok 109 - The contents should be identical
ok 110 - Should get an error initialing a different project
ok 111 - Initialization error ident should be "init"
ok 112 - Initialzation error message should be correct
ok 113 - Should get an error initialzing a non-plan file
ok 114 - Non-plan file error ident should be "init"
ok 115 - Non-plan file error message should be correct
ok 116 - The file should not be overwritten
ok 117 - Create new init with sqitch with project and URI
ok 118 - Write the plan file again
ok 119 - The plan creation should be sent to info againq
ok 120 - Plan file should again exist
ok 121 - The plan should include the project and uri pragmas
ok 122 - App::Sqitch::Command::init->can('_validate_project')
ok 123 - No project should yield usage
ok 124 - No args should be passed to usage
ok 125 - Should get error for invalid project name "^foo"
ok 126 - Bad project "^foo" ident should be "init"
ok 127 - Bad project "^foo" error message should be correct
ok 128 - Should get error for invalid project name "foo^"
ok 129 - Bad project "foo^" ident should be "init"
ok 130 - Bad project "foo^" error message should be correct
ok 131 - Should get error for invalid project name "foo^6"
ok 132 - Bad project "foo^6" ident should be "init"
ok 133 - Bad project "foo^6" error message should be correct
ok 134 - Should get error for invalid project name "foo^666"
ok 135 - Bad project "foo^666" ident should be "init"
ok 136 - Bad project "foo^666" error message should be correct
ok 137 - Should get error for invalid project name "%hi"
ok 138 - Bad project "%hi" ident should be "init"
ok 139 - Bad project "%hi" error message should be correct
ok 140 - Should get error for invalid project name "hi!"
ok 141 - Bad project "hi!" ident should be "init"
ok 142 - Bad project "hi!" error message should be correct
ok 143 - Should get error for invalid project name "foo@bar"
ok 144 - Bad project "foo@bar" ident should be "init"
ok 145 - Bad project "foo@bar" error message should be correct
ok 146 - Should get error for invalid project name "foo:bar"
ok 147 - Bad project "foo:bar" ident should be "init"
ok 148 - Bad project "foo:bar" error message should be correct
ok 149 - Should get error for invalid project name "+foo"
ok 150 - Bad project "+foo" ident should be "init"
ok 151 - Bad project "+foo" error message should be correct
ok 152 - Should get error for invalid project name "-foo"
ok 153 - Bad project "-foo" ident should be "init"
ok 154 - Bad project "-foo" error message should be correct
ok 155 - Should get error for invalid project name "@foo"
ok 156 - Bad project "@foo" ident should be "init"
ok 157 - Bad project "@foo" error message should be correct
ok 158 - Execute!
ok 159 - dir plan.dir exists
ok 160 - dir plan.dir\deploy exists
ok 161 - dir plan.dir\revert exists
ok 162 - dir plan.dir\verify exists
ok 163 - nonexistent.conf exists
ok 164 - plan.dir\sqitch.plan exists
ok 165 - Should have status messages
ok 166 - The plan should have the --project name
ok 167 - no warnings
ok
t/item_formatter.t ..
1..158
ok 1 - require App::Sqitch::ItemFormatter;
ok 2 - App::Sqitch::ItemFormatter->can(...)
ok 3 - 'Instantiated object' isa 'App::Sqitch::ItemFormatter'
ok 4 - Should not be abbreviated by default
ok 5 - Default date format should be "iso"
ok 6 - Format "%e" should output "deploy"
ok 7 - Format "%e" should output "revert"
ok 8 - Format "%e" should output "fail"
ok 9 - Format "%L" should output "Deploy"
ok 10 - Format "%L" should output "Revert"
ok 11 - Format "%L" should output "Fail"
ok 12 - Format "%l" should output "deploy"
ok 13 - Format "%l" should output "revert"
ok 14 - Format "%l" should output "fail"
ok 15 - Format "%{event}_" should output "Event: "
ok 16 - Format "%{change}_" should output "Change: "
ok 17 - Format "%{committer}_" should output "Committer:"
ok 18 - Format "%{planner}_" should output "Planner: "
ok 19 - Format "%{by}_" should output "By: "
ok 20 - Format "%{date}_" should output "Date: "
ok 21 - Format "%{committed}_" should output "Committed:"
ok 22 - Format "%{planned}_" should output "Planned: "
ok 23 - Format "%{name}_" should output "Name: "
ok 24 - Format "%{email}_" should output "Email: "
ok 25 - Format "%{requires}_" should output "Requires: "
ok 26 - Format "%{conflicts}_" should output "Conflicts:"
ok 27 - Format "%H" should output "123456789"
ok 28 - Format "%h" should output "123456789"
ok 29 - Format "%{5}h" should output "12345"
ok 30 - Format "%{7}h" should output "1234567"
ok 31 - Format "%n" should output "foo"
ok 32 - Format "%n" should output "bar"
ok 33 - Format "%o" should output "foo"
ok 34 - Format "%o" should output "bar"
ok 35 - Format "%c" should output "larry "
ok 36 - Format "%{n}c" should output "damian"
ok 37 - Format "%{name}c" should output "chip"
ok 38 - Format "%{e}c" should output "larry@example.com"
ok 39 - Format "%{email}c" should output "damian@example.com"
ok 40 - Format "%{date}c" should output "2015-05-21 00:27:56 -0700"
ok 41 - Format "%{date:rfc}c" should output "Thu, 21 May 2015 00:27:56 -0700"
ok 42 - Format "%{d:long}c" should output "May 21, 2015 12:27:56 AM PDT"
ok 43 - Format "%{d:cldr:HH'h' mm'm'}c" should output "00h 27m"
ok 44 - Format "%{d:strftime:%a at %H:%M:%S}c" should output "Thu at 00:27:56"
ok 45 - Format "%p" should output "larry "
ok 46 - Format "%{n}p" should output "damian"
ok 47 - Format "%{name}p" should output "chip"
ok 48 - Format "%{e}p" should output "larry@example.com"
ok 49 - Format "%{email}p" should output "damian@example.com"
ok 50 - Format "%{date}p" should output "2015-05-20 00:27:56 -0700"
ok 51 - Format "%{date:rfc}p" should output "Wed, 20 May 2015 00:27:56 -0700"
ok 52 - Format "%{d:long}p" should output "May 20, 2015 12:27:56 AM PDT"
ok 53 - Format "%{d:cldr:HH'h' mm'm'}p" should output "00h 27m"
ok 54 - Format "%{d:strftime:%a at %H:%M:%S}p" should output "Wed at 00:27:56"
ok 55 - Format "%t" should output ""
ok 56 - Format "%t" should output " @foo"
ok 57 - Format "%t" should output " @foo, @bar"
ok 58 - Format "%{|}t" should output ""
ok 59 - Format "%{|}t" should output " @foo"
ok 60 - Format "%{|}t" should output " @foo|@bar"
ok 61 - Format "%T" should output ""
ok 62 - Format "%T" should output " (@foo)"
ok 63 - Format "%T" should output " (@foo, @bar)"
ok 64 - Format "%{|}T" should output ""
ok 65 - Format "%{|}T" should output " (@foo)"
ok 66 - Format "%{|}T" should output " (@foo|@bar)"
ok 67 - Format "%r" should output ""
ok 68 - Format "%r" should output " foo"
ok 69 - Format "%r" should output " foo, bar"
ok 70 - Format "%{|}r" should output ""
ok 71 - Format "%{|}r" should output " foo"
ok 72 - Format "%{|}r" should output " foo|bar"
ok 73 - Format "%R" should output ""
ok 74 - Format "%R" should output "Requires: foo[newline]"
ok 75 - Format "%R" should output "Requires: foo, bar[newline]"
ok 76 - Format "%{|}R" should output ""
ok 77 - Format "%{|}R" should output "Requires: foo[newline]"
ok 78 - Format "%{|}R" should output "Requires: foo|bar[newline]"
ok 79 - Format "%x" should output ""
ok 80 - Format "%x" should output " foo"
ok 81 - Format "%x" should output " foo, bax"
ok 82 - Format "%{|}x" should output ""
ok 83 - Format "%{|}x" should output " foo"
ok 84 - Format "%{|}x" should output " foo|bax"
ok 85 - Format "%X" should output ""
ok 86 - Format "%X" should output "Conflicts: foo[newline]"
ok 87 - Format "%X" should output "Conflicts: foo, bar[newline]"
ok 88 - Format "%{|}X" should output ""
ok 89 - Format "%{|}X" should output "Conflicts: foo[newline]"
ok 90 - Format "%{|}X" should output "Conflicts: foo|bar[newline]"
ok 91 - Format "%{yellow}C" should output ""
ok 92 - Format "%{:event}C" should output ""
ok 93 - Format "%v" should output "[newline]"
ok 94 - Format "%%" should output "%"
ok 95 - Format "%s" should output "hi there"
ok 96 - Format "%s" should output "hi there"
ok 97 - Format "%s" should output "subject line"
ok 98 - Format "%{ }s" should output " hi there"
ok 99 - Format "%{xx}s" should output "xxhi there"
ok 100 - Format "%b" should output ""
ok 101 - Format "%b" should output "yo"
ok 102 - Format "%b" should output "first graph[newline][newline]second graph[newline][newline]"
ok 103 - Format "%{ }b" should output ""
ok 104 - Format "%{xxx }b" should output "xxx yo"
ok 105 - Format "%{x}b" should output "xfirst graph[newline]x[newline]xsecond graph[newline]x[newline]"
ok 106 - Format "%{ }b" should output " yo"
ok 107 - Format "%B" should output "hi there"
ok 108 - Format "%B" should output "hi there[newline]yo"
ok 109 - Format "%B" should output "subject line[newline][newline]first graph[newline][newline]second graph[newline][newline]"
ok 110 - Format "%{ }B" should output " hi there"
ok 111 - Format "%{xxx }B" should output "xxx hi there[newline]xxx yo"
ok 112 - Format "%{x}B" should output "xsubject line[newline]x[newline]xfirst graph[newline]x[newline]xsecond graph[newline]x[newline]"
ok 113 - Format "%{ }B" should output " hi there
[newline] yo"
ok 114 - Format "%{change}a" should output "change lolz[newline]"
ok 115 - Format "%{change_id}a" should output "change_id 000011112222333444[newline]"
ok 116 - Format "%{event}a" should output "event deploy[newline]"
ok 117 - Format "%{tags}a" should output "tags @beta, @gamma[newline]"
ok 118 - Format "%{requires}a" should output "requires foo, bar[newline]"
ok 119 - Format "%{conflicts}a" should output ""
ok 120 - Format "%{committer_name}a" should output "committer_name larry[newline]"
ok 121 - Format "%{committed_at}a" should output "committed_at 2015-05-21T07:27:56Z[newline]"
ok 122 - Should get exception for format "%_"
ok 123 - %_ error ident should be "format"
ok 124 - %_ error message should be correct
ok 125 - Should get exception for unknown label in format "%_"
ok 126 - Invalid %_ label error ident should be "format"
ok 127 - Invalid %_ label error message should be correct
ok 128 - Instantiate with abbrev => 4
ok 129 - %h should respect abbrev
ok 130 - %H should not respect abbrev
ok 131 - Instantiate with date_format => "rfc"
ok 132 - %{date}c should respect the date_format attribute
ok 133 - %{iso}c should override the date_format attribute
ok 134 - Should get exception for unknown attribute passed to %a
ok 135 - %a error ident should be "log"
ok 136 - %a error message should be correct
ok 137 - Construct with color "always"
ok 138 - Format "%{yellow}C" should output [33myellow[0m
ok 139 - Format "%{red}C" should output [31mred[0m
ok 140 - Format "%{blue}C" should output [34mblue[0m
ok 141 - Format "%{cyan}C" should output [36mcyan[0m
ok 142 - Format "%{magenta}C" should output [35mmagenta[0m
ok 143 - Format "%{:event}C" on "deploy" should output [32mgreen[0m
ok 144 - Format "%{:event}C" on "revert" should output [34mblue[0m
ok 145 - Format "%{:event}C" on "fail" should output [31mred[0m
ok 146 - Should get an error for an invalid color
ok 147 - Invalid color error ident should be "log"
ok 148 - Invalid color error message should be correct
ok 149 - Construct with color "never"
ok 150 - Format "%{yellow}C" should not output a color
ok 151 - Format "%{red}C" should not output a color
ok 152 - Format "%{blue}C" should not output a color
ok 153 - Format "%{cyan}C" should not output a color
ok 154 - Format "%{magenta}C" should not output a color
ok 155 - Should get an exception for a bad format code
ok 156 - bad format code format error ident should be "log"
ok 157 - bad format code format error message should be correct
ok 158 - no warnings
ok
t/linelist.t ........
1..28
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 - Insert a change at index 3
ok 23 - Count should now be nine
ok 24 - Lines should be in order with $oy at index 3
ok 25 - Should find oy at 3
ok 26 - Should find @alpha at 4
ok 27 - Should find hi at 8
ok 28 - no warnings
ok
t/log.t .............
1..248
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 - Default target should be undef
ok 7 - 'new status with target' isa 'App::Sqitch::Command::log'
ok 8 - Should have target "foo"
ok 9 - 'Formatter' isa 'App::Sqitch::ItemFormatter'
ok 10 - Should get empty hash for no config or options
ok 11 - Should get error for invalid date format in config
ok 12 - Invalid date format error ident should be "datetime"
ok 13 - Invalid date format error message should be correct
ok 14 - Should get error for invalid date format in optsions
ok 15 - Invalid date format error ident should be "log"
ok 16 - Invalid date format error message should be correct
ok 17 - Should get error for invalid format in config
ok 18 - Invalid format error ident should be "log"
ok 19 - Invalid format error message should be correct
ok 20 - Should get error for invalid format in optsions
ok 21 - Invalid format error ident should be "log"
ok 22 - Invalid format error message should be correct
ok 23 - Configuration should respect --no-color, setting "never"
ok 24 - --oneline should set format
ok 25 - --oneline should set abbrev to 6
ok 26 - --oneline should not override --format
ok 27 - --oneline should not overrride --abbrev
ok 28 - Configuration should respect --no-color even when configure is set
ok 29 - Configuration should respect color option
ok 30 - Configuration should respect color config
ok 31 - Configuration should respect color option
ok 32 - Configuration should respect color config
ok 33 - Configuration should respect color option
ok 34 - Configuration should respect color config
ok 35 - Configuration should respect color option
ok 36 - Configuration should respect color config
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 "2015-05-21 00:27:59 -0700"
ok 99 - Format "%{date:rfc}c" should output "Thu, 21 May 2015 00:27:59 -0700"
ok 100 - Format "%{d:long}c" should output "May 21, 2015 12:27:59 AM PDT"
ok 101 - Format "%{d:cldr:HH'h' mm'm'}c" should output "00h 27m"
ok 102 - Format "%{d:strftime:%a at %H:%M:%S}c" should output "Thu at 00:27:59"
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 "2015-05-20 00:27:59 -0700"
ok 109 - Format "%{date:rfc}p" should output "Wed, 20 May 2015 00:27:59 -0700"
ok 110 - Format "%{d:long}p" should output "May 20, 2015 12:27:59 AM PDT"
ok 111 - Format "%{d:cldr:HH'h' mm'm'}p" should output "00h 27m"
ok 112 - Format "%{d:strftime:%a at %H:%M:%S}p" should output "Wed at 00:27:59"
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 2015-05-21T07:27:59Z[newline]"
ok 180 - Should get exception for format "%_"
ok 181 - %_ error ident should be "format"
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 "format"
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 "format"
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 "format"
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 have passed undef to Target
ok 221 - Should get error for empty event table
ok 222 - no events error ident should be "log"
ok 223 - no events exit val should be 1
ok 224 - no events error message should be correct
ok 225 - Search should have been limited to one row
ok 226 - Should have passed undef to Target again
ok 227 - Execute log
ok 228 - Should have passed undef to Target once more
ok 229 - The proper args should have been passed to search_events
ok 230 - The change should have been paged
ok 231 - Execute with target arg
ok 232 - Target name should have been passed to Target
ok 233 - The proper args should have been passed to search_events
ok 234 - The change should have been paged
ok 235 - 'log with attributes' isa 'App::Sqitch::Command::log'
ok 236 - Execute log with attributes
ok 237 - Should have passed target name to Target
ok 238 - All params should have been passed to search_events
ok 239 - Both changes should have been paged
ok 240 - Execute log with attributes
ok 241 - Should have passed target name to Target
ok 242 - Should have got warning for two targets
ok 243 - 'log with bad format' isa 'App::Sqitch::Command::log'
ok 244 - Should get an exception for a bad format code
ok 245 - bad format code format error ident should be "format"
ok 246 - bad format code format error message should be correct
ok 247 - Should have passed target name to Target
ok 248 - no warnings
ok
t/mysql.t ...........
ok 1 - require App::Sqitch::Engine::mysql;
ok 2 - config_vars should return three vars
ok 3 - An object of class 'App::Sqitch::Engine::mysql' isa 'App::Sqitch::Engine::mysql'
ok 4 - client should default to mysql
ok 5 - registry default should be "sqitch"
ok 6 - registry_uri should be correct
ok 7 - uri should be "db:mysql:"
ok 8 - registry_destination should be the same as registry_uri
ok 9 - mysql command should be std opts-only
ok 10 - Should have emitted a warning for no database name
ok 11 - An object of class 'App::Sqitch::Engine::mysql' isa 'App::Sqitch::Engine::mysql'
ok 12 - Set some variables
ok 13 - Variables should not be passed to mysql
ok 14 - Create another mysql
ok 15 - client should be as configured
ok 16 - URI should be as configured
ok 17 - target name should be the URI
ok 18 - destination should be the URI
ok 19 - registry should be as configured
ok 20 - Sqitch DB URI should be the same as uri but with DB name "meta"
ok 21 - registry_destination should be the sqitch DB URL
ok 22 - mysql command should be configured
ok 23 - Create a mysql with sqitch with options
ok 24 - client should be as optioned
ok 25 - registry should be as configured
ok 26 - Sqitch DB URI should be the same as uri but with DB name "meta"
ok 27 - registry_destination should be the sqitch DB URL sans password
ok 28 - registry should still be as configured
ok 29 - mysql command should be as optioned
ok 30 - App::Sqitch::Engine::mysql->can(...)
ok 31 - Create a mysql with sqitch with options
ok 32 - MYSQL_PWD should be "s3cr3t"
ok 33 - Call _run
ok 34 - Command should be passed to run()
ok 35 - MYSQL_PWD should be "s3cr3t"
ok 36 - Call _spool
ok 37 - Command should be passed to spool()
ok 38 - MYSQL_PWD should be "s3cr3t"
ok 39 - Call _capture
ok 40 - Command should be passed to capture()
ok 41 - Create a mysql with sqitch with no pw
ok 42 - MYSQL_PWD should not exist
ok 43 - Call _run again
ok 44 - Command should be passed to run() again
ok 45 - MYSQL_PWD should not exist
ok 46 - Call _spool again
ok 47 - Command should be passed to spool() again
ok 48 - MYSQL_PWD should not exist
ok 49 - Call _capture again
ok 50 - Command should be passed to capture() again
ok 51 - MYSQL_PWD should not exist
ok 52 - Run foo/bar.sql
ok 53 - File should be passed to run()
ok 54 - MYSQL_PWD should not exist
ok 55 - Spool a "file handle"
ok 56 - Handle should be passed to spool()
ok 57 - MYSQL_PWD should not exist
ok 58 - Verify foo/bar.sql
ok 59 - Verify file should be passed to capture()
ok 60 - MYSQL_PWD should not exist
ok 61 - Verify foo/bar.sql again
ok 62 - Verifile file should be passed to run() for high verbosity
ok 63 - App::Sqitch::Engine::mysql->can('_ts2char_format')
ok 64 - _ts2char_format should work
ok 65 - App::Sqitch::Engine::mysql->can('_dt')
ok 66 - 'Return value of _dt()' isa 'App::Sqitch::DateTime'
ok 67 - DateTime year should be set
ok 68 - DateTime month should be set
ok 69 - DateTime day should be set
ok 70 - DateTime hour should be set
ok 71 - DateTime minute should be set
ok 72 - DateTime second should be set
ok 73 - DateTime TZ should be set
ok 74 - App::Sqitch::Engine::mysql->can(...)
# Subtest: live database
1..0 # SKIP Unable to live-test MySQL engine: DBI connect('database=information_schema','root',...) failed: Can't connect to MySQL server on 'localhost' (10061) at t/mysql.t line 279.
#
ok 75 # skip Unable to live-test MySQL engine: DBI connect('database=information_schema','root',...) failed: Can't connect to MySQL server on 'localhost' (10061) at t/mysql.t line 279.
#
1..75
ok
t/options.t .........
1..26
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 - Spliting args when using bundling should work
ok 10 - _pod2usage should be called
ok 11 - Should exit for invalid option
ok 12 - App::Sqitch->can('_parse_core_opts')
ok 13 - Should have default config for no options
ok 14 - Ask for help
ok 15 - Should have been helped
ok 16 - Ask for man
ok 17 - Should have been manned
ok 18 - Should parse lots of options
ok 19 - 'top_dir' isa 'Path::Class::Dir'
ok 20 - 'deploy_dir' isa 'Path::Class::Dir'
ok 21 - 'revert_dir' isa 'Path::Class::Dir'
ok 22 - 'verify_dir' isa 'Path::Class::Dir'
ok 23 - --quiet should trump verbosity.
ok 24 - Short options should work
ok 25 - Run _pod2usage
ok 26 - Proper args should have been passed to Pod::Usage
ok
t/oracle.t ..........
ok 1 - require App::Sqitch::Engine::oracle;
ok 2 - config_vars should return three vars
ok 3 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle'
ok 4 - client should default to sqlplus
ok 5 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle'
ok 6 - client should use $ORACLE_HOME
ok 7 - registry default should be empty
ok 8 - Default URI should be "db:oracle"
ok 9 - Target name should be the uri stringified
ok 10 - Destination should fall back on environment variables
ok 11 - Registry target should be the same as target
ok 12 - sqlplus command should connect to /nolog
ok 13 - _script should work
ok 14 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle'
ok 15 - _script should assemble connection string
ok 16 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle'
ok 17 - _script should assemble connection string with host
ok 18 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle'
ok 19 - Set some variables
ok 20 - _script should assemble connection string with host, port, and vars
ok 21 - Target name should not read $TWO_TASK
ok 22 - Destination should read $TWO_TASK
ok 23 - Registry destination should be the same as destination
ok 24 - Target name should not read $ORACLE_SID
ok 25 - Destination should read $ORACLE_SID
ok 26 - Registry destination should be the same as destination
ok 27 - Target name should not fall back on sysuser
ok 28 - Destination should fall back on sysuser
ok 29 - Registry destination should be the same as destination
ok 30 - Target should be the default
ok 31 - Destination should prefer $TWO_TASK to username
ok 32 - Registry destination should be the same as destination
ok 33 - Create another ora
ok 34 - client should be as configured
ok 35 - DB URI should be as configured
ok 36 - Target name should be the passwordless URI stringified
ok 37 - Destination should be the URI without the password
ok 38 - registry_destination should replace be the same URI
ok 39 - registry should be as configured
ok 40 - sqlplus command should be configured
ok 41 - Create yet another ora
ok 42 - client should be as configured
ok 43 - registry should be as configured
ok 44 - sqlplus command should be configured
ok 45 - Create a ora with sqitch with options
ok 46 - client should be as optioned
ok 47 - registry should still be as configured
ok 48 - sqlplus command should be as optioned
ok 49 - App::Sqitch::Engine::oracle->can(...)
ok 50 - Call _run
ok 51 - SQLPlus command should be passed to spool()
ok 52 - The script should be spooled
ok 53 - Call _capture
ok 54 - Command and script should be passed to run3()
ok 55 - _capture should actually capture
ok 56 - _capture should die when sqlplus dies
ok 57 - STDERR should be emitted by _capture
ok 58 - App::Sqitch::Engine::oracle->can('_file_for_script')
ok 59 - File without special characters should be used directly
ok 60 - Double quotes should be SQL-escaped
ok 61 - Get temp dir
ok 62 - 'Temp dir' isa 'Path::Class::Dir'
ok 63 - File with special char should be aliased
ok 64 - File with special char and quotes should be aliased
ok 65 - Run foo/bar.sql
ok 66 - File should be passed to run()
ok 67 - Run foo/"bar".sql
ok 68 - Double quotes in file passed to run() should be escaped
ok 69 - Spool a "file handle"
ok 70 - sqlplus command should be passed to spool()
ok 71 - 'Array ove handles should be passed to spool' isa 'ARRAY'
ok 72 - First file handle should be script
ok 73 - Second should be the passed handle
ok 74 - Verify foo/bar.sql
ok 75 - Verify file should be passed to capture()
ok 76 - Verify foo/bar.sql again
ok 77 - Verifile file should be passed to run() for high verbosity
ok 78 - App::Sqitch::Engine::oracle->can('_ts2char')
ok 79 - _ts2char should work
ok 80 - App::Sqitch::Engine::oracle->can('_dt')
ok 81 - 'Return value of _dt()' isa 'App::Sqitch::DateTime'
ok 82 - DateTime year should be set
ok 83 - DateTime month should be set
ok 84 - DateTime day should be set
ok 85 - DateTime hour should be set
ok 86 - DateTime minute should be set
ok 87 - DateTime second should be set
ok 88 - DateTime TZ should be set
ok 89 - App::Sqitch::Engine::oracle->can(...)
# Subtest: live database
1..0 # SKIP Unable to live-test Oracle engine: DBI connect('','scott',...) failed: ORA-12560: TNS:protocol adapter error (DBD ERROR: OCIServerAttach) at t/oracle.t line 446.
#
ok 90 # skip Unable to live-test Oracle engine: DBI connect('','scott',...) failed: ORA-12560: TNS:protocol adapter error (DBD ERROR: OCIServerAttach) at t/oracle.t line 446.
#
1..90
ok
t/pg.t ..............
ok 1 - require App::Sqitch::Engine::pg;
ok 2 - config_vars should return three vars
ok 3 - An object of class 'App::Sqitch::Engine::pg' isa 'App::Sqitch::Engine::pg'
ok 4 - client should default to psql
ok 5 - registry default should be "sqitch"
ok 6 - DB URI should be "db:pg:"
ok 7 - Destination should fall back on environment variables
ok 8 - Registry destination should be the same as destination
ok 9 - psql command should be std opts-only
ok 10 - An object of class 'App::Sqitch::Engine::pg' isa 'App::Sqitch::Engine::pg'
ok 11 - Set some variables
ok 12 - Variables should be passed to psql via --set
ok 13 - Target should not read $PGDATABASE
ok 14 - Meta target should be the same as destination
ok 15 - Target should not read $PGUSER
ok 16 - Meta target should be the same as destination
ok 17 - Target should not fall back on sysuser
ok 18 - Meta target should be the same as destination
ok 19 - Target should be the default
ok 20 - Meta target should be the same as destination
ok 21 - Create another pg
ok 22 - client should be as configured
ok 23 - uri should be as configured
ok 24 - registry should be as configured
ok 25 - psql command should be configured from URI config
ok 26 - Create a pg with sqitch with options
ok 27 - client should be as optioned
ok 28 - registry_destination should be the same as destination
ok 29 - registry should still be as configured
ok 30 - psql command should be as optioned
ok 31 - App::Sqitch::Engine::pg->can(...)
ok 32 - PGPASSWORD should be "s3cr3t"
ok 33 - Call _run
ok 34 - Command should be passed to run()
ok 35 - PGPASSWORD should be "s3cr3t"
ok 36 - Call _spool
ok 37 - Command should be passed to spool()
ok 38 - PGPASSWORD should be "s3cr3t"
ok 39 - Call _capture
ok 40 - Command should be passed to capture()
ok 41 - Create a pg with sqitch with no pw
ok 42 - PGPASSWORD should not exist
ok 43 - Call _run again
ok 44 - Command should be passed to run() again
ok 45 - PGPASSWORD should not exist
ok 46 - Call _spool again
ok 47 - Command should be passed to spool() again
ok 48 - PGPASSWORD should not exist
ok 49 - Call _capture again
ok 50 - Command should be passed to capture() again
ok 51 - PGPASSWORD should not exist
ok 52 - Run foo/bar.sql
ok 53 - File should be passed to run()
ok 54 - PGPASSWORD should not exist
ok 55 - Spool a "file handle"
ok 56 - Handle should be passed to spool()
ok 57 - PGPASSWORD should not exist
ok 58 - Verify foo/bar.sql
ok 59 - Verify file should be passed to capture()
ok 60 - PGPASSWORD should not exist
ok 61 - Verify foo/bar.sql again
ok 62 - Verifile file should be passed to run() for high verbosity
ok 63 - App::Sqitch::Engine::pg->can('_ts2char')
ok 64 - _ts2char should work
ok 65 - App::Sqitch::Engine::pg->can('_dt')
ok 66 - 'Return value of _dt()' isa 'App::Sqitch::DateTime'
ok 67 - DateTime year should be set
ok 68 - DateTime month should be set
ok 69 - DateTime day should be set
ok 70 - DateTime hour should be set
ok 71 - DateTime minute should be set
ok 72 - DateTime second should be set
ok 73 - DateTime TZ should be set
ok 74 - App::Sqitch::Engine::pg->can(...)
# Subtest: live database
1..0 # SKIP Unable to live-test PostgreSQL engine: "psql.exe" failed to start: "The system cannot find the file specified"
#
ok 75 # skip Unable to live-test PostgreSQL engine: "psql.exe" failed to start: "The system cannot find the file specified"
#
1..75
ok
t/plan.t ............
ok 1 - use App::Sqitch::Plan;
ok 2 - App::Sqitch::Plan->can(...)
ok 3 - An object of class 'App::Sqitch::Plan' isa 'App::Sqitch::Plan'
ok 4 - File should be coopied from Target
ok 5 - Should parse simple "widgets.plan"
ok 6 - Should have sorted changes
ok 7 - 'changes' isa 'ARRAY'
ok 8 - 'lines' isa 'ARRAY'
ok 9 - All "widgets.plan" changes should be parsed
ok 10 - All "widgets.plan" lines should be parsed
ok 11 - Should parse multi-tagged "multi.plan"
ok 12 - Should have sorted changes twice
ok 13 - Should have captured the multi pragmas
ok 14 - Should have "multi.plan" lines and changes
ok 15 - Should read plan with no tags
ok 16 - Should have sorted changes
ok 17 - Should have captured the changes-only pragmas
ok 18 - Should have lines and changes for tagless plan
ok 19 - Should read plan with DOS line endings
ok 20 - Should have sorted changes
ok 21 - Should have captured the dos pragmas
ok 22 - Should die on plan with bad change name
ok 23 - Bad change name error ident should be "parse"
ok 24 - And the bad change name error message should be correct
ok 25 - Should not have sorted changes
ok 26 - Should die on plan with bad name "+^foo"
ok 27 - Exception ident should be "parse"
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 "parse"
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 "parse"
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^"
ok 39 - Exception ident should be "parse"
ok 40 - And "@foo^" 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 "parse"
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^6"
ok 47 - Exception ident should be "parse"
ok 48 - And "@foo^6" 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 "parse"
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 "@foo^666"
ok 55 - Exception ident should be "parse"
ok 56 - And "@foo^666" 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 "parse"
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 "parse"
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 "parse"
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 "@hi!"
ok 71 - Exception ident should be "parse"
ok 72 - And "@hi!" 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 "parse"
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 "parse"
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 "parse"
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:bar"
ok 87 - Exception ident should be "parse"
ok 88 - And "@foo:bar" 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 "parse"
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 "parse"
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 "parse"
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 "parse"
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 "parse"
ok 108 - And "+@foo" should trigger the appropriate message
ok 109 - Should not have sorted changes
ok 110 - Should die on plan with bad name "@@foo"
ok 111 - Exception ident should be "parse"
ok 112 - And "@@foo" should trigger the appropriate message
ok 113 - Should not have sorted changes
ok 114 - Should parse "foo"
ok 115 - Should have captured the foo pragmas
ok 116 - Should have pragmas in plan with change "foo"
ok 117 - Should parse "@foo"
ok 118 - Should have pragmas in plan with tag "foo"
ok 119 - Should have line and change for "@foo"
ok 120 - Should parse "12"
ok 121 - Should have captured the 12 pragmas
ok 122 - Should have pragmas in plan with change "12"
ok 123 - Should parse "@12"
ok 124 - Should have pragmas in plan with tag "12"
ok 125 - Should have line and change for "@12"
ok 126 - Should parse "t"
ok 127 - Should have captured the t pragmas
ok 128 - Should have pragmas in plan with change "t"
ok 129 - Should parse "@t"
ok 130 - Should have pragmas in plan with tag "t"
ok 131 - Should have line and change for "@t"
ok 132 - Should parse "6"
ok 133 - Should have captured the 6 pragmas
ok 134 - Should have pragmas in plan with change "6"
ok 135 - Should parse "@6"
ok 136 - Should have pragmas in plan with tag "6"
ok 137 - Should have line and change for "@6"
ok 138 - Should parse "阱阪阬"
ok 139 - Should have captured the 阱阪阬 pragmas
ok 140 - Should have pragmas in plan with change "阱阪阬"
ok 141 - Should parse "@阱阪阬"
ok 142 - Should have pragmas in plan with tag "阱阪阬"
ok 143 - Should have line and change for "@阱阪阬"
ok 144 - Should parse "foo/bar"
ok 145 - Should have captured the foo/bar pragmas
ok 146 - Should have pragmas in plan with change "foo/bar"
ok 147 - Should parse "@foo/bar"
ok 148 - Should have pragmas in plan with tag "foo/bar"
ok 149 - Should have line and change for "@foo/bar"
ok 150 - Should parse "beta1"
ok 151 - Should have captured the beta1 pragmas
ok 152 - Should have pragmas in plan with change "beta1"
ok 153 - Should parse "@beta1"
ok 154 - Should have pragmas in plan with tag "beta1"
ok 155 - Should have line and change for "@beta1"
ok 156 - Should parse "foo_"
ok 157 - Should have captured the foo_ pragmas
ok 158 - Should have pragmas in plan with change "foo_"
ok 159 - Should parse "@foo_"
ok 160 - Should have pragmas in plan with tag "foo_"
ok 161 - Should have line and change for "@foo_"
ok 162 - Should parse "_foo"
ok 163 - Should have captured the _foo pragmas
ok 164 - Should have pragmas in plan with change "_foo"
ok 165 - Should parse "@_foo"
ok 166 - Should have pragmas in plan with tag "_foo"
ok 167 - Should have line and change for "@_foo"
ok 168 - Should parse "v1.0-1b"
ok 169 - Should have captured the v1.0-1b pragmas
ok 170 - Should have pragmas in plan with change "v1.0-1b"
ok 171 - Should parse "@v1.0-1b"
ok 172 - Should have pragmas in plan with tag "v1.0-1b"
ok 173 - Should have line and change for "@v1.0-1b"
ok 174 - Should parse "v1.2-1"
ok 175 - Should have captured the v1.2-1 pragmas
ok 176 - Should have pragmas in plan with change "v1.2-1"
ok 177 - Should parse "@v1.2-1"
ok 178 - Should have pragmas in plan with tag "v1.2-1"
ok 179 - Should have line and change for "@v1.2-1"
ok 180 - Should parse "v1.2+1"
ok 181 - Should have captured the v1.2+1 pragmas
ok 182 - Should have pragmas in plan with change "v1.2+1"
ok 183 - Should parse "@v1.2+1"
ok 184 - Should have pragmas in plan with tag "v1.2+1"
ok 185 - Should have line and change for "@v1.2+1"
ok 186 - Should parse "v1.2_1"
ok 187 - Should have captured the v1.2_1 pragmas
ok 188 - Should have pragmas in plan with change "v1.2_1"
ok 189 - Should parse "@v1.2_1"
ok 190 - Should have pragmas in plan with tag "v1.2_1"
ok 191 - Should have line and change for "@v1.2_1"
ok 192 - Should have sorted changes 18 times
ok 193 - Should die on plan with reserved tag "@HEAD"
ok 194 - @HEAD exception should have ident "plan"
ok 195 - And the @HEAD error message should be correct
ok 196 - Should have sorted changes once
ok 197 - Should die on plan with reserved tag "@ROOT"
ok 198 - @ROOT exception should have ident "plan"
ok 199 - And the @ROOT error message should be correct
ok 200 - Should have sorted @ROOT changes nonce
ok 201 - Should die on plan with reserved tag "@FIRST"
ok 202 - @FIRST exception should have ident "plan"
ok 203 - And the @FIRST error message should be correct
ok 204 - Should have sorted @FIRST changes nonce
ok 205 - Should die on plan with reserved tag "@LAST"
ok 206 - @LAST exception should have ident "plan"
ok 207 - And the @LAST error message should be correct
ok 208 - Should have sorted @LAST changes nonce
ok 209 - Should die on plan with SHA1 change name
ok 210 - The SHA1 error ident should be "parse"
ok 211 - And the SHA1 error message should be correct
ok 212 - Should have sorted changes nonce
ok 213 - Should die on plan with tag but no preceding change
ok 214 - The missing change error ident should be "parse"
ok 215 - And the missing change error message should be correct
ok 216 - Should have sorted changes nonce
ok 217 - Should die on plan with dupe tag
ok 218 - The dupe tag error ident should be "parse"
ok 219 - And the missing change error message should be correct
ok 220 - Should have sorted changes twice
ok 221 - Should die on plan with dupe change
ok 222 - The dupe change error ident should be "parse"
ok 223 - And the dupe change error message should be correct
ok 224 - Should have sorted changes once
ok 225 - Should die on invalid dependency
ok 226 - The invalid dependency error ident should be "parse"
ok 227 - And the invalid dependency error message should be correct
ok 228 - Should have sorted changes nonce
ok 229 - Should die on change with no timestamp
ok 230 - The missing timestamp error ident should be "parse"
ok 231 - And the missing timestamp error message should be correct
ok 232 - Should have sorted changes nonce
ok 233 - Should die on change with no planner
ok 234 - The missing parsener error ident should be "parse"
ok 235 - And the missing planner error message should be correct
ok 236 - Should have sorted changes nonce
ok 237 - Should die on change with no timestamp or planner
ok 238 - The missing timestamp or parsener error ident should be "parse"
ok 239 - And the missing timestamp or planner error message should be correct
ok 240 - Should have sorted changes nonce
ok 241 - Should parse plan with pragmas"
ok 242 - Should have sorted changes once
ok 243 - Should have captured all of the pragmas
ok 244 - Should have "multi.plan" lines and changes
ok 245 - Should parse plan with deploy and revert operators
ok 246 - Should have sorted changes twice
ok 247 - Should have captured the deploy-and-revert pragmas
ok 248 - Should have "deploy-and-revert.plan" lines and changes
ok 249 - Should get exception for nonexistent plan file
ok 250 - Nonexistent plan file ident should be "plan"
ok 251 - Nonexistent plan file message should be correct
ok 252 - 'Plan with sqitch with plan file with dependencies' isa 'App::Sqitch::Plan'
ok 253 - File should be coopied from Sqitch
ok 254 - Load plan with dependencies file
ok 255 - The changes should include the dependencies
ok 256 - Should have sorted changes twice
ok 257 - 'Plan with sqitch with plan file with project deps' isa 'App::Sqitch::Plan'
ok 258 - File should be coopied from Sqitch
ok 259 - Load plan with project deps file
ok 260 - The changes should include the cross-project deps
ok 261 - Should have sorted changes twice
ok 262 - 'Plan with sqitch with plan with tag dependencies' isa 'App::Sqitch::Plan'
ok 263 - File should be coopied from Sqitch
ok 264 - Should get an exception for tag with dependencies
ok 265 - The tag dependencies error ident should be "plan"
ok 266 - And the tag dependencies error message should be correct
ok 267 - 'Plan with sqitch with plan file' isa 'App::Sqitch::Plan'
ok 268 - File should be coopied from Sqitch
ok 269 - Lines should be parsed from file
ok 270 - Changes should be parsed from file
ok 271 - Should get all tags from tags()
ok 272 - Should have sorted changes twice
ok 273 - Load should parse plan from file
ok 274 - Should have captured the multi pragmas
ok 275 - And the parsed file should have lines and changes
ok 276 - Should have sorted changes twice
ok 277 - App::Sqitch::Plan->can(...)
ok 278 - Position should start at -1
ok 279 - Current should be undef
ok 280 - Get next change
ok 281 - 'First change' isa 'App::Sqitch::Plan::Change'
ok 282 - It should be the first change
ok 283 - Position should be at 0
ok 284 - Count should be 4
ok 285 - Current should be current
ok 286 - Should get first change from change_at(0)
ok 287 - Peek to next change
ok 288 - 'Peeked change' isa 'App::Sqitch::Plan::Change'
ok 289 - Peeked change should be second change
ok 290 - last() should return last change
ok 291 - Current should still be current
ok 292 - Peek should still be next
ok 293 - Next should be the second change
ok 294 - Position should be at 1
ok 295 - Should get second change from change_at(1)
ok 296 - Peek should return an object
ok 297 - 'Third change' isa 'App::Sqitch::Plan::Change'
ok 298 - It should be the foo tag
ok 299 - Current should be the second change
ok 300 - Should get third change next
ok 301 - Position should be at 2
ok 302 - Current should be third change
ok 303 - Should get third change from change_at(1)
ok 304 - Get fourth change
ok 305 - 'Fourth change' isa 'App::Sqitch::Plan::Change'
ok 306 - Fourth change should be "hey-there"
ok 307 - Position should be at 3
ok 308 - Peek should return undef
ok 309 - Next should return undef
ok 310 - Position should be at 7
ok 311 - Next should still return undef
ok 312 - Position should still be at 7
ok 313 - Reset the plan
ok 314 - Position should be back at -1
ok 315 - Current should still be undef
ok 316 - Next should return the first change again
ok 317 - Position should be at 0 again
ok 318 - Current should be first change
ok 319 - Index of change should be 0
ok 320 - Plan should contain change
ok 321 - Should be able to get change 0 by name
ok 322 - Should be able to find change 0 by name
ok 323 - Should be able to get change 0 by ID
ok 324 - Should be able to find change 0 by ID
ok 325 - Index of @bar should be 3
ok 326 - Plan should contain @bar
ok 327 - Should be able to get hey-there via @bar
ok 328 - Should be able to get hey-there via @bar ID
ok 329 - Should be able to find hey-there via @bar
ok 330 - Should be able to find hey-there via @bar ID
ok 331 - Seek to the "@bar" change
ok 332 - Position should be at 3 again
ok 333 - Current should be fourth again
ok 334 - Index of you should be 1
ok 335 - Plan should contain "you"
ok 336 - Should be able to get change 1 by name
ok 337 - Should be able to find change 1 by name
ok 338 - Seek to the "you" change
ok 339 - Position should be at 1 again
ok 340 - Current should be second again
ok 341 - Index of baz should be undef
ok 342 - Plan should not contain "baz"
ok 343 - Index of @baz should be 3
ok 344 - Plan should contain @baz
ok 345 - Seek to the "baz" change
ok 346 - Position should be at 3 again
ok 347 - Current should be fourth again
ok 348 - Should still get first change from change_at(0)
ok 349 - Should still get second change from change_at(1)
ok 350 - Should still get third change from change_at(1)
ok 351 - Should die seeking invalid change
ok 352 - Invalid seek change error ident should be "plan"
ok 353 - And the failure message should be correct
ok 354 - All should return all changes
ok 355 - Reset the plan again
ok 356 - Change hey should be passed to do sub
ok 357 - Change hey should be the topic in do sub
ok 358 - Change you should be passed to do sub
ok 359 - Change you should be the topic in do sub
ok 360 - Change this/rocks should be passed to do sub
ok 361 - Change this/rocks should be the topic in do sub
ok 362 - Change hey-there should be passed to do sub
ok 363 - Change hey-there should be the topic in do sub
ok 364 - 'search_changes() should return a code ref' isa 'CODE'
ok 365 - All the changes should be returned in the proper order
ok 366 - Direction "DESC" should work
ok 367 - Should get error for invalid direction
ok 368 - Invalid direction error ident should be "DEV"
ok 369 - Invalid direction error message should be correct
ok 370 - Direction "asc" should work
ok 371 - Search by change name should work
ok 372 - Search by change name should work as a regex
ok 373 - Search by change name should with a character class
ok 374 - Search by planner should work
ok 375 - Search by planner should work as a regex
ok 376 - Search by operation "deploy" should work
ok 377 - Search by operation "rever" should return nothing
ok 378 - Search by operation "DEPLOY" should now return two changes
ok 379 - Search by operation "REVERT" should return the other two
ok 380 - Should get an error for unknown operation
ok 381 - Unknown operation error ident should be "DEV"
ok 382 - Unknown operation error message should be correct
ok 383 - Search with offset 2 should work
ok 384 - Search with offset 2, limit 1 should work
ok 385 - Search with offset 3 and dierction "desc" should work
ok 386 - Search with offset 2, limit 1, dierction "desc" should work
ok 387 - App::Sqitch::Plan->can('write_to')
ok 388 - plan.out does not exist
ok 389 - Write out the file
ok 390 - plan.out exists
ok 391 - The contents should look right
ok 392 - Write out the file from "this/rocks"
ok 393 - Plan should have been written from "this/rocks" through tags at end
ok 394 - Write the file up to "you"
ok 395 - Plan should have been written through "you" and its tags
ok 396 - Write from "@foo" to "this/rocks"
ok 397 - Plan should have been written from "@foo" to "this/rocks"
ok 398 - Write from "hey" to "@foo"
ok 399 - Plan should have been written from "hey" through "@foo"
ok 400 - App::Sqitch::Plan->can('_is_valid')
ok 401 - Should find "^foo" invalid
ok 402 - Invalid name "^foo" error ident should be "plan"
ok 403 - And the "^foo" error message should be correct
ok 404 - Should find "foo^" invalid
ok 405 - Invalid name "foo^" error ident should be "plan"
ok 406 - And the "foo^" error message should be correct
ok 407 - Should find "foo^6" invalid
ok 408 - Invalid name "foo^6" error ident should be "plan"
ok 409 - And the "foo^6" error message should be correct
ok 410 - Should find "foo^666" invalid
ok 411 - Invalid name "foo^666" error ident should be "plan"
ok 412 - And the "foo^666" error message should be correct
ok 413 - Should find "%hi" invalid
ok 414 - Invalid name "%hi" error ident should be "plan"
ok 415 - And the "%hi" error message should be correct
ok 416 - Should find "hi!" invalid
ok 417 - Invalid name "hi!" error ident should be "plan"
ok 418 - And the "hi!" error message should be correct
ok 419 - Should find "foo@bar" invalid
ok 420 - Invalid name "foo@bar" error ident should be "plan"
ok 421 - And the "foo@bar" error message should be correct
ok 422 - Should find "foo:bar" invalid
ok 423 - Invalid name "foo:bar" error ident should be "plan"
ok 424 - And the "foo:bar" error message should be correct
ok 425 - Should find "+foo" invalid
ok 426 - Invalid name "+foo" error ident should be "plan"
ok 427 - And the "+foo" error message should be correct
ok 428 - Should find "-foo" invalid
ok 429 - Invalid name "-foo" error ident should be "plan"
ok 430 - And the "-foo" error message should be correct
ok 431 - Should find "@foo" invalid
ok 432 - Invalid name "@foo" error ident should be "plan"
ok 433 - And the "@foo" error message should be correct
ok 434 - Name "foo" sould be valid
ok 435 - Name "12" sould be valid
ok 436 - Name "t" sould be valid
ok 437 - Name "6" sould be valid
ok 438 - Name "阱阪阬" sould be valid
ok 439 - Name "foo/bar" sould be valid
ok 440 - Name "beta1" sould be valid
ok 441 - Name "v1.2-1" sould be valid
ok 442 - Name "v1.2+1" sould be valid
ok 443 - Name "v1.2_1" sould be valid
ok 444 - Add tag "w00t"
ok 445 - Should have 4 changes
ok 446 - Should find "@w00t" in plan
ok 447 - Should find "@w00t" at index 3
ok 448 - Last change should be "hey-there"
ok 449 - The w00t tag should be on the last change
ok 450 - An object of class 'App::Sqitch::Plan::Tag' isa 'App::Sqitch::Plan::Tag'
ok 451 - The returned tag should be @w00t
ok 452 - The @w00t change should be the last change
ok 453 - Write out the file again
ok 454 - The contents should include the "w00t" tag
ok 455 - Add tag "@alpha"
ok 456 - Should find "@alpha" in plan
ok 457 - Should find "@alpha" at index 3
ok 458 - The returned tag should be @alpha
ok 459 - The @alpha change should be the last change
ok 460 - Tag change "you"
ok 461 - Should still have 4 changes
ok 462 - Should find "@blarney" in plan
ok 463 - Should find "@blarney" at index 1
ok 464 - The blarney tag should be on the second change
ok 465 - An object of class 'App::Sqitch::Plan::Tag' isa 'App::Sqitch::Plan::Tag'
ok 466 - The returned tag should be @blarney
ok 467 - The @blarney change should be the second change
ok 468 - Should get error trying to add duplicate tag
ok 469 - Duplicate tag error ident should be "plan"
ok 470 - And the error message should report it as a dupe
ok 471 - Should get error for invalid tag "^foo"
ok 472 - Invalid name "^foo" error ident should be "plan"
ok 473 - And the "^foo" error message should be correct
ok 474 - Should get error for invalid tag "foo^"
ok 475 - Invalid name "foo^" error ident should be "plan"
ok 476 - And the "foo^" error message should be correct
ok 477 - Should get error for invalid tag "foo^6"
ok 478 - Invalid name "foo^6" error ident should be "plan"
ok 479 - And the "foo^6" error message should be correct
ok 480 - Should get error for invalid tag "foo^666"
ok 481 - Invalid name "foo^666" error ident should be "plan"
ok 482 - And the "foo^666" error message should be correct
ok 483 - Should get error for invalid tag "%hi"
ok 484 - Invalid name "%hi" error ident should be "plan"
ok 485 - And the "%hi" error message should be correct
ok 486 - Should get error for invalid tag "hi!"
ok 487 - Invalid name "hi!" error ident should be "plan"
ok 488 - And the "hi!" error message should be correct
ok 489 - Should get error for invalid tag "foo@bar"
ok 490 - Invalid name "foo@bar" error ident should be "plan"
ok 491 - And the "foo@bar" error message should be correct
ok 492 - Should get error for invalid tag "foo:bar"
ok 493 - Invalid name "foo:bar" error ident should be "plan"
ok 494 - And the "foo:bar" error message should be correct
ok 495 - Should get error for invalid tag "+foo"
ok 496 - Invalid name "+foo" error ident should be "plan"
ok 497 - And the "+foo" error message should be correct
ok 498 - Should get error for invalid tag "-foo"
ok 499 - Invalid name "-foo" error ident should be "plan"
ok 500 - And the "-foo" error message should be correct
ok 501 - Should get error for invalid tag "foo\#bar"
ok 502 - Invalid name "foo\#bar" error ident should be "plan"
ok 503 - And the "foo\#bar" error message should be correct
ok 504 - Should get error for reserved tag "HEAD"
ok 505 - Reserved tag "HEAD" error ident should be "plan"
ok 506 - And the reserved tag "HEAD" message should be correct
ok 507 - Should get error for reserved tag "ROOT"
ok 508 - Reserved tag "ROOT" error ident should be "plan"
ok 509 - And the reserved tag "ROOT" message should be correct
ok 510 - Should get error for reserved tag "FIRST"
ok 511 - Reserved tag "FIRST" error ident should be "plan"
ok 512 - And the reserved tag "FIRST" message should be correct
ok 513 - Should get error for reserved tag "LAST"
ok 514 - Reserved tag "LAST" error ident should be "plan"
ok 515 - And the reserved tag "LAST" message should be correct
ok 516 - Should get error for a SHA1 tag
ok 517 - SHA1 tag error ident should be "plan"
ok 518 - And the reserved name error should be output
ok 519 - Add change "booyah"
ok 520 - Should have 5 changes
ok 521 - Should find "booyah" in plan
ok 522 - Should find "booyah" at index 4
ok 523 - Last change should be "booyah"
ok 524 - An object of class 'App::Sqitch::Plan::Change' isa 'App::Sqitch::Plan::Change'
ok 525 - Should have plain stringification of "booya"
ok 526 - Write out the file again
ok 527 - The contents should include the "booyah" change
ok 528 - Add change "blow"
ok 529 - Should have 6 changes
ok 530 - Should find "blow" in plan
ok 531 - Should find "blow" at index 5
ok 532 - Last change should be "blow"
ok 533 - Should have nice stringification of "blow [booyah]"
ok 534 - The new change should have been appended to the lines, too
ok 535 - Add change "jive" with dupe dependency
ok 536 - Should have 7 changes
ok 537 - Should find "jive" in plan
ok 538 - Should find "jive" at index 6
ok 539 - jive change should be "jive"
ok 540 - Should have dependency "blow"
ok 541 - Should have nice stringification of "jive [blow]"
ok 542 - The new change should have been appended to the lines, too
ok 543 - Add change "moo" with dupe dependencies
ok 544 - Should have 8 changes
ok 545 - Should find "moo" in plan
ok 546 - Should find "moo" at index 7
ok 547 - moo change should be "moo"
ok 548 - Should require "ext:whu"
ok 549 - Should conflict with "blow" and "ext:whu"
ok 550 - Should have nice stringification of "moo [ext:foo !blow !ext:whu]"
ok 551 - The new change should have been appended to the lines, too
ok 552 - Should get error trying to add duplicate change
ok 553 - Duplicate change error ident should be "plan"
ok 554 - And the error message should suggest "rework"
ok 555 - Should get error for invalid change "^foo"
ok 556 - Invalid name "^foo" error ident should be "plan"
ok 557 - And the "^foo" error message should be correct
ok 558 - Should get error for invalid change "foo^"
ok 559 - Invalid name "foo^" error ident should be "plan"
ok 560 - And the "foo^" error message should be correct
ok 561 - Should get error for invalid change "foo^6"
ok 562 - Invalid name "foo^6" error ident should be "plan"
ok 563 - And the "foo^6" error message should be correct
ok 564 - Should get error for invalid change "foo^666"
ok 565 - Invalid name "foo^666" error ident should be "plan"
ok 566 - And the "foo^666" error message should be correct
ok 567 - Should get error for invalid change "%hi"
ok 568 - Invalid name "%hi" error ident should be "plan"
ok 569 - And the "%hi" error message should be correct
ok 570 - Should get error for invalid change "hi!"
ok 571 - Invalid name "hi!" error ident should be "plan"
ok 572 - And the "hi!" error message should be correct
ok 573 - Should get error for invalid change "foo@bar"
ok 574 - Invalid name "foo@bar" error ident should be "plan"
ok 575 - And the "foo@bar" error message should be correct
ok 576 - Should get error for invalid change "foo:bar"
ok 577 - Invalid name "foo:bar" error ident should be "plan"
ok 578 - And the "foo:bar" error message should be correct
ok 579 - Should get error for invalid change "+foo"
ok 580 - Invalid name "+foo" error ident should be "plan"
ok 581 - And the "+foo" error message should be correct
ok 582 - Should get error for invalid change "-foo"
ok 583 - Invalid name "-foo" error ident should be "plan"
ok 584 - And the "-foo" error message should be correct
ok 585 - Should get error for invalid change "@foo"
ok 586 - Invalid name "@foo" error ident should be "plan"
ok 587 - And the "@foo" error message should be correct
ok 588 - Should get error for reserved name "HEAD"
ok 589 - Reserved name "HEAD" error ident should be "plan"
ok 590 - And the reserved name "HEAD" message should be correct
ok 591 - Should get error for reserved name "ROOT"
ok 592 - Reserved name "ROOT" error ident should be "plan"
ok 593 - And the reserved name "ROOT" message should be correct
ok 594 - Should get error for reserved name "FIRST"
ok 595 - Reserved name "FIRST" error ident should be "plan"
ok 596 - And the reserved name "FIRST" message should be correct
ok 597 - Should get error for reserved name "LAST"
ok 598 - Reserved name "LAST" error ident should be "plan"
ok 599 - And the reserved name "LAST" message should be correct
ok 600 - Should get failure for failed dependency
ok 601 - Dependency error ident should be "plan"
ok 602 - The dependency error should be correct
ok 603 - Should get failure for invalid dependency
ok 604 - Invalid dependency error ident should be "plan"
ok 605 - The invalid dependency error should be correct
ok 606 - Should get failure for invalid conflict
ok 607 - Invalid conflict error ident should be "plan"
ok 608 - The invalid conflict error should be correct
ok 609 - Should get failure for failed tag dependency
ok 610 - Tag dependency error ident should be "plan"
ok 611 - The tag dependency error should be correct
ok 612 - Should get error for a SHA1 change
ok 613 - SHA1 tag error ident should be "plan"
ok 614 - And the reserved name error should be output
ok 615 - App::Sqitch::Plan->can('rework')
ok 616 - Rework change "you"
ok 617 - An object of class 'App::Sqitch::Plan::Change' isa 'App::Sqitch::Plan::Change'
ok 618 - Reworked change should be "you"
ok 619 - Get original "you" change
ok 620 - It should also be named "you"
ok 621 - And it should have the one rework tag
ok 622 - The original file should now be named you@bar.sql
ok 623 - It should require the previous "you" change
ok 624 - The new "you" should have been appended to the lines, too
ok 625 - Should find "you@HEAD" in plan
ok 626 - It should be at position 8
ok 627 - The plan count should be 9
ok 628 - Tag @beta1
ok 629 - Rework change "you" again
ok 630 - An object of class 'App::Sqitch::Plan::Change' isa 'App::Sqitch::Plan::Change'
ok 631 - New reworked change should be "you"
ok 632 - Get original "you" change again
ok 633 - It should still be named "you"
ok 634 - And it should have the one rework tag
ok 635 - Get you@beta1
ok 636 - The second "you" should be named that
ok 637 - And the second change should have the rework_tag "@beta1"
ok 638 - But the new reworked change should have no rework tags
ok 639 - It should require the previous "you" change
ok 640 - The new reworking should have been appended to the lines
ok 641 - Should find "you@HEAD" in plan
ok 642 - It should be at position 9
ok 643 - The plan count should be 10
ok 644 - rework should die on nonexistent change
ok 645 - Nonexistent change error ident should be "plan"
ok 646 - And the error should suggest "sqitch add"
ok 647 - rework_stpe should die on lack of intervening tag
ok 648 - Missing tag error ident should be "plan"
ok 649 - And the error should suggest "sqitch tag"
ok 650 - rework should die on failed dependency
ok 651 - Rework dependency error ident should be "plan"
ok 652 - The rework dependency error should be correct
ok 653 - Should get failure for invalid dependency
ok 654 - Invalid dependency error ident should be "plan"
ok 655 - The invalid dependency error should be correct
ok 656 - Should get failure for invalid conflict
ok 657 - Invalid conflict error ident should be "plan"
ok 658 - The invalid conflict error should be correct
ok 659 - 'Plan shoud work plan with dupe change across tags' isa 'App::Sqitch::Plan'
ok 660 - File should be coopied from Sqitch
ok 661 - Project name should be set
ok 662 - Lines with dupe change should be read from file
ok 663 - Noes with dupe change should be read from file
ok 664 - Should have sorted changes three times
ok 665 - Should find "whatever" in plan
ok 666 - Should get an error trying to find dupe key.
ok 667 - Dupe key error ident should be "plan"
ok 668 - Dupe key error message should be correct
ok 669 - Should get 3 for whatever@HEAD
ok 670 - Should get 0 for whatever@bar
ok 671 - Should get an error seeking dupe key.
ok 672 - Dupe key error ident should be "plan"
ok 673 - Dupe key error message should be correct
ok 674 - Should find whatever@HEAD at index 3
ok 675 - Should find whatever@HEAD at index 0
ok 676 - Should find first instance of whatever at index 0
ok 677 - Should find first instance of whatever after @bar at index 5
ok 678 - Seek whatever@HEAD
ok 679 - Position should be 3
ok 680 - Seek whatever@bar
ok 681 - Position should be 0
ok 682 - Last tagged change should be "hi"
ok 683 - App::Sqitch::Plan->can('open_script')
ok 684 - Open bar.sql
ok 685 - It should be the right file
ok 686 - Open baz.sql
ok 687 - It should be empty
ok 688 - open_script() should die on nonexistent file
ok 689 - Nonexistent file error ident should be "io"
ok 690 - Nonexistent file error message should be correct
ok 691 - App::Sqitch::Plan->can('check_changes')
ok 692 - Should get original order when no dependencies
ok 693 - Should get original order when no prepreqs
ok 694 - Should get original order when that requires this
ok 695 - Should get original order when other requires that
ok 696 - Should get error for out-of-order dependency
ok 697 - Unordered dependency error ident should be "parse"
ok 698 - And the unordered dependency error message should be correct
ok 699 - Should get error for multiple dependency errors
ok 700 - Multiple dependency error ident should be "parse"
ok 701 - And the multiple dependency error message should be correct
ok 702 - Should get original order when requiring a tag
ok 703 - Should get original order when requiring a step as-of a tag
ok 704 - Should get failure for a step after a tag
ok 705 - Step after tag error ident should be "parse"
ok 706 - And we the unknown change as-of a tag message should be correct
ok 707 - Should get failure for a cycle
ok 708 - Cycle error ident should be "parse"
ok 709 - The cycle error message should be correct
ok 710 - Should get failure for a two-hop cycle
ok 711 - Two-hope cycle error ident should be "parse"
ok 712 - The two-hop cycle error message should be correct
ok 713 - Should get original order with earlier dependency
ok 714 - Should get error with misordered and seen dependencies
ok 715 - Misorderd and seen error ident should be "parse"
ok 716 - And the misordered and seen error message should be correct
ok 717 - Should die on unknown dependency
ok 718 - Unknown dependency error ident should be "parse"
ok 719 - And the error should point to the offending change
ok 720 - Should die on unknown tag dependency
ok 721 - Unknown tag dependency error ident should be "parse"
ok 722 - And the error should point to the offending change
ok 723 - Should get original order with external dependency
ok 724 - Should die on self dependency
ok 725 - Self dependency error ident should be "parse"
ok 726 - And the self dependency error should be correct
ok 727 - Should get original order with cascading dependencies
ok 728 - Should get original order with multiple cascading dependencies
ok 729 - App::Sqitch::Plan->can('_check_dependencies')
ok 730 - Depend "hi" should be in project "dupe_change_diff_tag"
ok 731 - Dependency on "hi" should succeed
ok 732 - Depend "greets" should be in project "dupe_change_diff_tag"
ok 733 - Dependency on "greets" should succeed
ok 734 - Depend "whatever" should be in project "dupe_change_diff_tag"
ok 735 - Dependency on "whatever" should succeed
ok 736 - Depend "@foo" should be in project "dupe_change_diff_tag"
ok 737 - Dependency on "@foo" should succeed
ok 738 - Depend "whatever@foo" should be in project "dupe_change_diff_tag"
ok 739 - Dependency on "whatever@foo" should succeed
ok 740 - Depend "ext:larry" should be in project "ext"
ok 741 - Dependency on "ext:larry" should succeed
ok 742 - Depend "ext:greets" should be in project "ext"
ok 743 - Dependency on "ext:greets" should succeed
ok 744 - Should get error trying to depend on "wanker"
ok 745 - Dependency "req" error ident should be "plan"
ok 746 - And should get unknown dependency message for "wanker"
ok 747 - Should get error trying to depend on "@blah"
ok 748 - Dependency "req" error ident should be "plan"
ok 749 - And should get unknown dependency message for "@blah"
ok 750 - Should get error trying to depend on "greets@foo"
ok 751 - Dependency "req" error ident should be "plan"
ok 752 - And should get unknown dependency message for "greets@foo"
ok 753 - Should have undef URI when no pragma
ok 754 - 'Plan with sqitch with plan file with dependencies' isa 'App::Sqitch::Plan'
ok 755 - File should be coopied from Sqitch
ok 756 - syntax_version should be set
ok 757 - Project should be set
ok 758 - Should have URI from pragma
ok 759 - 'It' isa 'URI'
ok 760 - Should die on plan with no project pragma
ok 761 - Missing prorject error ident should be "parse"
ok 762 - The missing project error message should be correct
ok 763 - Should die on invalid project name "^foo"
ok 764 - Ident for bad proj "^foo" should be "parse"
ok 765 - Error message for bad project "^foo" should be correct
ok 766 - Should die on invalid project name "foo^"
ok 767 - Ident for bad proj "foo^" should be "parse"
ok 768 - Error message for bad project "foo^" should be correct
ok 769 - Should die on invalid project name "foo^6"
ok 770 - Ident for bad proj "foo^6" should be "parse"
ok 771 - Error message for bad project "foo^6" should be correct
ok 772 - Should die on invalid project name "foo^666"
ok 773 - Ident for bad proj "foo^666" should be "parse"
ok 774 - Error message for bad project "foo^666" should be correct
ok 775 - Should die on invalid project name "%hi"
ok 776 - Ident for bad proj "%hi" should be "parse"
ok 777 - Error message for bad project "%hi" should be correct
ok 778 - Should die on invalid project name "hi!"
ok 779 - Ident for bad proj "hi!" should be "parse"
ok 780 - Error message for bad project "hi!" should be correct
ok 781 - Should die on invalid project name "foo@bar"
ok 782 - Ident for bad proj "foo@bar" should be "parse"
ok 783 - Error message for bad project "foo@bar" should be correct
ok 784 - Should die on invalid project name "foo:bar"
ok 785 - Ident for bad proj "foo:bar" should be "parse"
ok 786 - Error message for bad project "foo:bar" should be correct
ok 787 - Should die on invalid project name "+foo"
ok 788 - Ident for bad proj "+foo" should be "parse"
ok 789 - Error message for bad project "+foo" should be correct
ok 790 - Should die on invalid project name "-foo"
ok 791 - Ident for bad proj "-foo" should be "parse"
ok 792 - Error message for bad project "-foo" should be correct
ok 793 - Should die on invalid project name "@foo"
ok 794 - Ident for bad proj "@foo" should be "parse"
ok 795 - Error message for bad project "@foo" should be correct
1..795
ok
t/plan_command.t ....
1..215
ok 1 - require App::Sqitch::Command::plan;
ok 2 - Load a sqitch sqitch object
ok 3 - 'plan command' isa 'App::Sqitch::Command::plan'
ok 4 - App::Sqitch::Command::plan->can(...)
ok 5 - Options should be correct
ok 6 - 'Formatter' isa 'App::Sqitch::ItemFormatter'
ok 7 - Should get empty hash for no config or options
ok 8 - Should get error for invalid date format in config
ok 9 - Invalid date format error ident should be "datetime"
ok 10 - Invalid date format error message should be correct
ok 11 - Should get error for invalid date format in optsions
ok 12 - Invalid date format error ident should be "plan"
ok 13 - Invalid date format error message should be correct
ok 14 - Should get error for invalid format in config
ok 15 - Invalid format error ident should be "plan"
ok 16 - Invalid format error message should be correct
ok 17 - Should get error for invalid format in optsions
ok 18 - Invalid format error ident should be "plan"
ok 19 - Invalid format error message should be correct
ok 20 - Configuration should respect --no-color, setting "never"
ok 21 - --oneline should set format
ok 22 - --oneline should set abbrev to 6
ok 23 - --oneline should not override --format
ok 24 - --oneline should not overrride --abbrev
ok 25 - Configuration should respect --no-color even when configure is set
ok 26 - Configuration should respect color option
ok 27 - Configuration should respect color config
ok 28 - Configuration should respect color option
ok 29 - Configuration should respect color config
ok 30 - Configuration should respect color option
ok 31 - Configuration should respect color config
ok 32 - Configuration should respect color option
ok 33 - Configuration should respect color config
ok 34 - Instantiate with format "raw"
ok 35 - Format "raw" should output correctly
ok 36 - Format "raw" should output correctly without tags
ok 37 - Instantiate with format "full"
ok 38 - Format "full" should output correctly
ok 39 - Instantiate with format "full" and date format "rfc"
ok 40 - Format "full" and date format "rfc" should output correctly
ok 41 - Instantiate with format "full" and date format "long"
ok 42 - Format "full" and date format "long" should output correctly
ok 43 - Instantiate with format "full" and date format "medium"
ok 44 - Format "full" and date format "medium" should output correctly
ok 45 - Format "full" should output correctly without tags
ok 46 - Instantiate with format "long"
ok 47 - Format "long" should output correctly
ok 48 - Format "long" should output correctly without tags
ok 49 - Instantiate with format "medium"
ok 50 - Format "medium" should output correctly
ok 51 - Instantiate with format "medium" and date format "rfc"
ok 52 - Format "medium" and date format "rfc" should output correctly
ok 53 - Instantiate with format "medium" and date format "long"
ok 54 - Format "medium" and date format "long" should output correctly
ok 55 - Instantiate with format "medium" and date format "medium"
ok 56 - Format "medium" and date format "medium" should output correctly
ok 57 - Instantiate with format "short"
ok 58 - Format "short" should output correctly
ok 59 - Instantiate with format "oneline"
ok 60 - Format "oneline" should output correctly
ok 61 - Format "oneline" should output correctly without tags
ok 62 - Format "%e" should output "deploy"
ok 63 - Format "%e" should output "revert"
ok 64 - Format "%e" should output "fail"
ok 65 - Format "%L" should output "Deploy"
ok 66 - Format "%L" should output "Revert"
ok 67 - Format "%L" should output "Fail"
ok 68 - Format "%l" should output "deploy"
ok 69 - Format "%l" should output "revert"
ok 70 - Format "%l" should output "fail"
ok 71 - Format "%{event}_" should output "Event: "
ok 72 - Format "%{change}_" should output "Change: "
ok 73 - Format "%{planner}_" should output "Planner: "
ok 74 - Format "%{by}_" should output "By: "
ok 75 - Format "%{date}_" should output "Date: "
ok 76 - Format "%{planned}_" should output "Planned: "
ok 77 - Format "%{name}_" should output "Name: "
ok 78 - Format "%{email}_" should output "Email: "
ok 79 - Format "%{requires}_" should output "Requires: "
ok 80 - Format "%{conflicts}_" should output "Conflicts:"
ok 81 - Format "%H" should output "123456789"
ok 82 - Format "%h" should output "123456789"
ok 83 - Format "%{5}h" should output "12345"
ok 84 - Format "%{7}h" should output "1234567"
ok 85 - Format "%n" should output "foo"
ok 86 - Format "%n" should output "bar"
ok 87 - Format "%o" should output "foo"
ok 88 - Format "%o" should output "bar"
ok 89 - Format "%p" should output "larry "
ok 90 - Format "%{n}p" should output "damian"
ok 91 - Format "%{name}p" should output "chip"
ok 92 - Format "%{e}p" should output "larry@example.com"
ok 93 - Format "%{email}p" should output "damian@example.com"
ok 94 - Format "%{date}p" should output "2015-05-20 00:28:14 -0700"
ok 95 - Format "%{date:rfc}p" should output "Wed, 20 May 2015 00:28:14 -0700"
ok 96 - Format "%{d:long}p" should output "May 20, 2015 12:28:14 AM PDT"
ok 97 - Format "%{d:cldr:HH'h' mm'm'}p" should output "00h 28m"
ok 98 - Format "%{d:strftime:%a at %H:%M:%S}p" should output "Wed at 00:28:14"
ok 99 - Format "%t" should output ""
ok 100 - Format "%t" should output " @foo"
ok 101 - Format "%t" should output " @foo, @bar"
ok 102 - Format "%{|}t" should output ""
ok 103 - Format "%{|}t" should output " @foo"
ok 104 - Format "%{|}t" should output " @foo|@bar"
ok 105 - Format "%T" should output ""
ok 106 - Format "%T" should output " (@foo)"
ok 107 - Format "%T" should output " (@foo, @bar)"
ok 108 - Format "%{|}T" should output ""
ok 109 - Format "%{|}T" should output " (@foo)"
ok 110 - Format "%{|}T" should output " (@foo|@bar)"
ok 111 - Format "%r" should output ""
ok 112 - Format "%r" should output " foo"
ok 113 - Format "%r" should output " foo, bar"
ok 114 - Format "%{|}r" should output ""
ok 115 - Format "%{|}r" should output " foo"
ok 116 - Format "%{|}r" should output " foo|bar"
ok 117 - Format "%R" should output ""
ok 118 - Format "%R" should output "Requires: foo[newline]"
ok 119 - Format "%R" should output "Requires: foo, bar[newline]"
ok 120 - Format "%{|}R" should output ""
ok 121 - Format "%{|}R" should output "Requires: foo[newline]"
ok 122 - Format "%{|}R" should output "Requires: foo|bar[newline]"
ok 123 - Format "%x" should output ""
ok 124 - Format "%x" should output " foo"
ok 125 - Format "%x" should output " foo, bax"
ok 126 - Format "%{|}x" should output ""
ok 127 - Format "%{|}x" should output " foo"
ok 128 - Format "%{|}x" should output " foo|bax"
ok 129 - Format "%X" should output ""
ok 130 - Format "%X" should output "Conflicts: foo[newline]"
ok 131 - Format "%X" should output "Conflicts: foo, bar[newline]"
ok 132 - Format "%{|}X" should output ""
ok 133 - Format "%{|}X" should output "Conflicts: foo[newline]"
ok 134 - Format "%{|}X" should output "Conflicts: foo|bar[newline]"
ok 135 - Format "%{yellow}C" should output ""
ok 136 - Format "%{:event}C" should output ""
ok 137 - Format "%v" should output "[newline]"
ok 138 - Format "%%" should output "%"
ok 139 - Format "%s" should output "hi there"
ok 140 - Format "%s" should output "hi there"
ok 141 - Format "%s" should output "subject line"
ok 142 - Format "%{ }s" should output " hi there"
ok 143 - Format "%{xx}s" should output "xxhi there"
ok 144 - Format "%b" should output ""
ok 145 - Format "%b" should output "yo"
ok 146 - Format "%b" should output "first graph[newline][newline]second graph[newline][newline]"
ok 147 - Format "%{ }b" should output ""
ok 148 - Format "%{xxx }b" should output "xxx yo"
ok 149 - Format "%{x}b" should output "xfirst graph[newline]x[newline]xsecond graph[newline]x[newline]"
ok 150 - Format "%{ }b" should output " yo"
ok 151 - Format "%B" should output "hi there"
ok 152 - Format "%B" should output "hi there[newline]yo"
ok 153 - Format "%B" should output "subject line[newline][newline]first graph[newline][newline]second graph[newline][newline]"
ok 154 - Format "%{ }B" should output " hi there"
ok 155 - Format "%{xxx }B" should output "xxx hi there[newline]xxx yo"
ok 156 - Format "%{x}B" should output "xsubject line[newline]x[newline]xfirst graph[newline]x[newline]xsecond graph[newline]x[newline]"
ok 157 - Format "%{ }B" should output " hi there
[newline] yo"
ok 158 - Format "%{change}a" should output "change lolz[newline]"
ok 159 - Format "%{change_id}a" should output "change_id 000011112222333444[newline]"
ok 160 - Format "%{event}a" should output "event deploy[newline]"
ok 161 - Format "%{tags}a" should output "tags @beta, @gamma[newline]"
ok 162 - Format "%{requires}a" should output "requires foo, bar[newline]"
ok 163 - Format "%{conflicts}a" should output ""
ok 164 - Should get exception for format "%_"
ok 165 - %_ error ident should be "format"
ok 166 - %_ error message should be correct
ok 167 - Should get exception for unknown label in format "%_"
ok 168 - Invalid %_ label error ident should be "format"
ok 169 - Invalid %_ label error message should be correct
ok 170 - Instantiate with abbrev => 4
ok 171 - %h should respect abbrev
ok 172 - %H should not respect abbrev
ok 173 - Instantiate with date_format => "rfc"
ok 174 - %{date}p should respect the date_format attribute
ok 175 - %{iso}p should override the date_format attribute
ok 176 - Should get exception for unknown attribute passed to %a
ok 177 - %a error ident should be "format"
ok 178 - %a error message should be correct
ok 179 - Format "%{yellow}C" should output [33myellow[0m
ok 180 - Format "%{red}C" should output [31mred[0m
ok 181 - Format "%{blue}C" should output [34mblue[0m
ok 182 - Format "%{cyan}C" should output [36mcyan[0m
ok 183 - Format "%{magenta}C" should output [35mmagenta[0m
ok 184 - Format "%{:event}C" on "deploy" should output [32mgreen[0m
ok 185 - Format "%{:event}C" on "revert" should output [34mblue[0m
ok 186 - Format "%{:event}C" on "fail" should output [31mred[0m
ok 187 - Instantiate with format "full" again
ok 188 - Format "full" should output correctly with color
ok 189 - Instantiate with format "long" again
ok 190 - Format "long" should output correctly with color
ok 191 - Instantiate with format "medium" again
ok 192 - Format "medium" should output correctly with color
ok 193 - Instantiate with format "short" again
ok 194 - Format "short" should output correctly with color
ok 195 - Instantiate with format "oneline" again
ok 196 - Format "oneline" should output correctly with color
ok 197 - Should get an error for an invalid color
ok 198 - Invalid color error ident should be "format"
ok 199 - Invalid color error message should be correct
ok 200 - Should get error for no changes
ok 201 - no changes error ident should be "plan"
ok 202 - no changes exit val should be 1
ok 203 - no changes error message should be correct
ok 204 - Execute plan
ok 205 - The proper args should have been passed to search_events
ok 206 - The event should have been paged
ok 207 - 'plan with attributes' isa 'App::Sqitch::Command::plan'
ok 208 - Execute plan with attributes
ok 209 - All params should have been passed to search_events
ok 210 - Both events should have been paged
ok 211 - 'plan with bad format' isa 'App::Sqitch::Command::plan'
ok 212 - Should get an exception for a bad format code
ok 213 - bad format code format error ident should be "format"
ok 214 - bad format code format error message should be correct
ok 215 - no warnings
ok
t/pragma.t ..........
1..10
ok 1 - require App::Sqitch::Plan::Pragma;
ok 2 - App::Sqitch::Plan::Pragma->can(...)
ok 3 - An object of class 'App::Sqitch::Plan::Pragma' isa 'App::Sqitch::Plan::Pragma'
ok 4 - An object of class 'App::Sqitch::Plan::Pragma' 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 (or class-like) 'App::Sqitch::Command::rebase' 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 get warning for deprecated --onto-target
ok 15 - Should have merged --set, deploy, rebase
ok 16 - An object of class 'App::Sqitch::Command::rebase' isa 'App::Sqitch::Command::rebase'
ok 17 - Should pick up deploy variables from configuration
ok 18 - Should pick up revert variables from configuration
ok 19 - Should have no_prompt true
ok 20 - Should have false no_prompt, verify, and true prompt_accept from rebase config
ok 21 - Should have true no_prompt, verify, and false prompt_accept from rebase from deploy
ok 22 - Should have no_prompt, prompt_accept false and mode all again
ok 23 - Should have no_prompt false and prompt_accept true for revert config
ok 24 - Should have no_prompt true with -y
ok 25 - 'new status with target' isa 'App::Sqitch::Command::rebase'
ok 26 - Should have target "foo"
ok 27 - An object of class 'App::Sqitch::Command::rebase' isa 'App::Sqitch::Command::rebase'
ok 28 - Should have undef target
ok 29 - onto_change should be undef
ok 30 - upto_change should be undef
ok 31 - Execute to "@alpha"
ok 32 - undef, and "all" should be passed to the engine deploy
ok 33 - "@alpha" should be passed to the engine revert
ok 34 - Engine should prompt
ok 35 - Engine should no be log only
ok 36 - Should have no warnings
ok 37 - Execute with target
ok 38 - undef, and "all" should be passed to the engine deploy
ok 39 - undef should be passed to the engine revert
ok 40 - Engine should prompt
ok 41 - Engine should no be log only
ok 42 - The target name should be as passed
ok 43 - Should have no warnings
ok 44 - Execute with onto and target
ok 45 - undef, and "all" should be passed to the engine deploy
ok 46 - "widgets" should be passed to the engine revert
ok 47 - Engine should prompt
ok 48 - Engine should no be log only
ok 49 - The target name should be as passed
ok 50 - Should have no warnings
ok 51 - Execute with three args
ok 52 - "widgets", and "all" should be passed to the engine deploy
ok 53 - "roles" should be passed to the engine revert
ok 54 - Engine should prompt
ok 55 - Engine should no be log only
ok 56 - The target name should be as passed
ok 57 - Should have no warnings
ok 58 - Execute
ok 59 - undef and "all" should be passed to the engine deploy
ok 60 - undef and = should be passed to the engine revert
ok 61 - No vars should have been passed through to the engine
ok 62 - Should have no warnings
ok 63 - 'Object with to and variables' isa 'App::Sqitch::Command::rebase'
ok 64 - Execute again
ok 65 - Target name should be from option
ok 66 - Engine should be no_prompt
ok 67 - Engine should be log_only
ok 68 - Engine should verify
ok 69 - "bar", "tag", and 1 should be passed to the engine deploy
ok 70 - "foo" and 1 should be passed to the engine revert
ok 71 - Variables should have been passed to the engine twice
ok 72 - The revert vars should have been passed first
ok 73 - The deploy vars should have been next
ok 74 - Should have no warnings
ok 75 - Execute with three args
ok 76 - Target name should be from option
ok 77 - Engine should be no_prompt
ok 78 - Engine should be log_only
ok 79 - Engine should verify
ok 80 - "bar", "tag", and 1 should be passed to the engine deploy
ok 81 - "foo" and 1 should be passed to the engine revert
ok 82 - Variables should have been passed to the engine twice
ok 83 - The revert vars should have been passed first
ok 84 - The deploy vars should have been next
ok 85 - Should have two warnings
ok 86 - Should get an exception for unknown arg
ok 87 - Unknow arg ident should be "rebase"
ok 88 - Should get an exeption for two unknown arg
ok 89 - Should get an exception for unknown args
ok 90 - Unknow args ident should be "rebase"
ok 91 - Should get an exeption for two unknown args
ok 92 - Execute once more
ok 93 - "bar", "tag", and 1 should be passed to the engine deploy
ok 94 - Variables should have been passed to the engine twice
ok 95 - The revert vars should have been passed first
ok 96 - The deploy vars should have been next
ok 97 - Should have emitted info for non-fatal revert exception
ok 98 - Should rethrow confirm exception
ok 99 - Should rethrow fatal exception
ok 100 - Should rethrow unknown exception
1..100
ok
t/revert.t ..........
ok 1 - require App::Sqitch::Command::revert;
ok 2 - The class (or class-like) 'App::Sqitch::Command::revert' 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, prompt_accept true
ok 8 - Should have merged variables
ok 9 - Should have merged --set, deploy, revert
ok 10 - An object of class 'App::Sqitch::Command::revert' isa 'App::Sqitch::Command::revert'
ok 11 - Should pick up variables from configuration
ok 12 - Should have no_prompt true, prompt_accept false
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 - 'new revert with target' isa 'App::Sqitch::Command::revert'
ok 17 - Should have target "foo"
ok 18 - to_change should be undef
ok 19 - An object of class 'App::Sqitch::Command::revert' isa 'App::Sqitch::Command::revert'
ok 20 - Should have undef default target
ok 21 - to_change should be undef
ok 22 - Execute to "@alpha"
ok 23 - Engine should be no_prompt
ok 24 - Engine should not be log_only
ok 25 - "@alpha" should be passed to the engine
ok 26 - Should have no warnings
ok 27 - Execute
ok 28 - undef should be passed to the engine
ok 29 - No vars should have been passed through to the engine
ok 30 - Should still have no warnings
ok 31 - Execute to target
ok 32 - Engine should be no_prompt
ok 33 - Engine should not be log_only
ok 34 - undef" should be passed to the engine
ok 35 - Target name should be as passed
ok 36 - Should have no warnings
ok 37 - Execute with change and target
ok 38 - Engine should be no_prompt
ok 39 - Engine should not be log_only
ok 40 - "widgets" should be passed to the engine
ok 41 - Target name should be as passed
ok 42 - Should have no warnings
ok 43 - Execute with target and change
ok 44 - Engine should be no_prompt
ok 45 - Engine should not be log_only
ok 46 - "widgets" should be passed to the engine
ok 47 - Target name should be as passed
ok 48 - Should have no warnings
ok 49 - 'Object with to and variables' isa 'App::Sqitch::Command::revert'
ok 50 - Execute again
ok 51 - Engine should not be no_prompt
ok 52 - Engine should be log_only
ok 53 - "foo" and 1 should be passed to the engine
ok 54 - Vars should have been passed through to the engine
ok 55 - Target name should be from option
ok 56 - Should have no warnings
ok 57 - Execute with options and args
ok 58 - Engine should not be no_prompt
ok 59 - Engine should be log_only
ok 60 - "foo" and 1 should be passed to the engine
ok 61 - Vars should have been passed through to the engine
ok 62 - Target name should be from option
ok 63 - Should have two warnings
ok 64 - Should get an exception for unknown arg
ok 65 - Unknow arg ident should be "revert"
ok 66 - Should get an exeption for two unknown arg
ok 67 - Should get an exception for unknown args
ok 68 - Unknow args ident should be "revert"
ok 69 - Should get an exeption for two unknown args
1..69
ok
t/rework.t ..........
1..231
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 - Grabs nothing from config
ok 8 - Load default Sqitch project
ok 9 - 'rework command' isa 'App::Sqitch::Command::rework'
ok 10 - Coerces rework.open_editor from config string boolean
ok 11 - Requires should be an arrayref
ok 12 - Conflicts should be an arrayref
ok 13 - Note should be an arrayref
ok 14 - Should get an example for nonexistent change
ok 15 - Nonexistent change error ident should be "plan"
ok 16 - Fail message should say the step does not exist
ok 17 - Create another add with template_directory
ok 18 - test-rework\deploy\foo.sql does not exist
ok 19 - test-rework\revert\foo.sql does not exist
ok 20 - test-rework\verify\foo.sql does not exist
ok 21 - Execute with the --change option
ok 22 - test-rework\deploy\foo.sql exists
ok 23 - test-rework\revert\foo.sql exists
ok 24 - test-rework\verify\foo.sql exists
ok 25 - Get the "foo" change
ok 26 - Should get an example for duplicate change
ok 27 - Duplicate change error ident should be "plan"
ok 28 - Fail message should say a tag is needed
ok 29 - Tag it
ok 30 - test-rework\deploy\foo@alpha.sql does not exist
ok 31 - test-rework\revert\foo@alpha.sql does not exist
ok 32 - test-rework\verify\foo@alpha.sql does not exist
ok 33 - Rework "foo"
ok 34 - test-rework\deploy\foo.sql exists
ok 35 - test-rework\revert\foo.sql exists
ok 36 - test-rework\verify\foo.sql exists
ok 37 - test-rework\deploy\foo@alpha.sql exists
ok 38 - test-rework\revert\foo@alpha.sql exists
ok 39 - test-rework\verify\foo@alpha.sql exists
ok 40 - test-rework\deploy\foo@alpha.sql and test-rework\deploy\foo.sql contents are the same
ok 41 - test-rework\verify\foo@alpha.sql and test-rework\verify\foo.sql contents are the same
ok 42 - test-rework\revert\foo.sql and test-rework\deploy\foo.sql contents are the same
ok 43 - New revert should revert
ok 44 - It should have prompted for a note
ok 45 - Reload the plan file
ok 46 - Get the steps
ok 47 - Should have two steps
ok 48 - First step should be "foo"
ok 49 - Second step should also be "foo"
ok 50 - Reworked step should require the previous step
ok 51 - And the info message should suggest editing the old files
ok 52 - Debug should show file copying
ok 53 - Create another add with template_directory
ok 54 - test-rework\deploy\bar.sql does not exist
ok 55 - test-rework\revert\bar.sql does not exist
ok 56 - test-rework\verify\bar.sql does not exist
ok 57 - test-rework\deploy\bar.sql exists
ok 58 - test-rework\revert\bar.sql does not exist
ok 59 - test-rework\verify\bar.sql does not exist
ok 60 - Tag it with @beta
ok 61 - 'rework command with requirements and conflicts' isa 'App::Sqitch::Command::rework'
ok 62 - test-rework\deploy\bar@beta.sql does not exist
ok 63 - test-rework\revert\bar@beta.sql does not exist
ok 64 - test-rework\verify\bar@beta.sql does not exist
ok 65 - Rework "bar"
ok 66 - test-rework\deploy\bar.sql exists
ok 67 - test-rework\revert\bar.sql does not exist
ok 68 - test-rework\verify\bar.sql does not exist
ok 69 - test-rework\deploy\bar@beta.sql exists
ok 70 - test-rework\revert\bar@beta.sql does not exist
ok 71 - test-rework\verify\bar@beta.sql does not exist
ok 72 - It should have prompted for a note
ok 73 - Reload the plan file again
ok 74 - Get the steps
ok 75 - Should have four steps
ok 76 - First step should be "foo"
ok 77 - Second step should also be "foo"
ok 78 - First step should be "bar"
ok 79 - Second step should also be "bar"
ok 80 - Requires should have been passed to reworked change
ok 81 - Conflicts should have been passed to reworked change
ok 82 - Note should have been passed as comment
ok 83 - And the info message should show only the one file to modify
ok 84 - Should have debug oputput for missing files
ok 85 - Create another add with open_editor
ok 86 - Tag it
ok 87 - test-rework\deploy\bar@gamma.sql does not exist
ok 88 - test-rework\revert\bar@gamma.sql does not exist
ok 89 - test-rework\verify\bar@gamma.sql does not exist
ok 90 - Rework "bar"
ok 91 - test-rework\deploy\bar.sql exists
ok 92 - test-rework\deploy\bar@gamma.sql exists
ok 93 - test-rework\revert\bar@gamma.sql does not exist
ok 94 - test-rework\verify\bar@gamma.sql does not exist
ok 95 - It should have prompted to edit sql files
ok 96 - And the info message should suggest editing the old files
ok 97 - Create another rework with custom multiplan config
ok 98 - Should have three targets
ok 99 - Rework change "widgets" in all plans
ok 100 - Get widgets@HEAD from the pg plan
ok 101 - Get widgets@foo from the pg plan
ok 102 - The two pg widgets should be different changes
ok 103 - Get widgets@HEAD from the sqlite plan
ok 104 - Get widgets@foo from the sqlite plan
ok 105 - The two sqlite widgets should be different changes
ok 106 - Get widgets@HEAD from the mysql plan
ok 107 - Get widgets@foo from the mysql plan
ok 108 - The two mysql widgets should be different changes
ok 109 - pg\deploy\widgets.sql exists
ok 110 - pg\revert\widgets.sql exists
ok 111 - pg\verify\widgets.sql exists
ok 112 - pg\deploy\widgets@foo.sql exists
ok 113 - pg\revert\widgets@foo.sql exists
ok 114 - pg\verify\widgets@foo.sql exists
ok 115 - pg\deploy\widgets.sql and pg\deploy\widgets@foo.sql contents are the same
ok 116 - pg\verify\widgets.sql and pg\verify\widgets@foo.sql contents are the same
ok 117 - pg\revert\widgets.sql and pg\deploy\widgets@foo.sql contents are the same
ok 118 - mysql\deploy\widgets.sql exists
ok 119 - mysql\revert\widgets.sql exists
ok 120 - mysql\verify\widgets.sql exists
ok 121 - mysql\deploy\widgets@foo.sql exists
ok 122 - mysql\revert\widgets@foo.sql exists
ok 123 - mysql\verify\widgets@foo.sql exists
ok 124 - mysql\deploy\widgets.sql and mysql\deploy\widgets@foo.sql contents are the same
ok 125 - mysql\verify\widgets.sql and mysql\verify\widgets@foo.sql contents are the same
ok 126 - mysql\revert\widgets.sql and mysql\deploy\widgets@foo.sql contents are the same
ok 127 - sqlite\deploy\widgets.sql exists
ok 128 - sqlite\revert\widgets.sql exists
ok 129 - sqlite\verify\widgets.sql exists
ok 130 - sqlite\deploy\widgets@foo.sql exists
ok 131 - sqlite\revert\widgets@foo.sql exists
ok 132 - sqlite\verify\widgets@foo.sql exists
ok 133 - sqlite\deploy\widgets.sql and sqlite\deploy\widgets@foo.sql contents are the same
ok 134 - sqlite\verify\widgets.sql and sqlite\verify\widgets@foo.sql contents are the same
ok 135 - sqlite\revert\widgets.sql and sqlite\deploy\widgets@foo.sql contents are the same
ok 136 - Should have listed the files in the note prompt
ok 137 - And the info message should show the two files to modify
ok 138 - Should have debug oputput for all copied files
ok 139 - Should get an error for --all and a target arg
ok 140 - Mixed arguments error ident should be "rework"
ok 141 - Mixed arguments error message should be correct
ok 142 - Create yet another rework with custom multiplan config
ok 143 - Rework change "gadgets" in the sqlite plan
ok 144 - Should still have three targets
ok 145 - Get gadgets@HEAD from the pg plan
ok 146 - Get gadgets@foo from the pg plan
ok 147 - The two pg gadgets should be the same change
ok 148 - Get gadgets@HEAD from the mysql plan
ok 149 - Get gadgets@foo from the mysql plan
ok 150 - The two mysql gadgets should be the same change
ok 151 - Get gadgets@HEAD from the sqlite plan
ok 152 - Get gadgets@foo from the sqlite plan
ok 153 - The two sqlite gadgets should be different changes
ok 154 - pg\deploy\gadgets.sql exists
ok 155 - pg\revert\gadgets.sql exists
ok 156 - pg\verify\gadgets.sql exists
ok 157 - mysql\deploy\gadgets.sql exists
ok 158 - mysql\revert\gadgets.sql exists
ok 159 - mysql\verify\gadgets.sql exists
ok 160 - sqlite\deploy\gadgets.sql exists
ok 161 - sqlite\revert\gadgets.sql exists
ok 162 - sqlite\verify\gadgets.sql exists
ok 163 - sqlite\deploy\gadgets@foo.sql exists
ok 164 - sqlite\revert\gadgets@foo.sql exists
ok 165 - sqlite\verify\gadgets@foo.sql exists
ok 166 - sqlite\deploy\gadgets.sql and sqlite\deploy\gadgets@foo.sql contents are the same
ok 167 - sqlite\verify\gadgets.sql and sqlite\verify\gadgets@foo.sql contents are the same
ok 168 - sqlite\revert\gadgets.sql and sqlite\deploy\gadgets@foo.sql contents are the same
ok 169 - Should have listed SQLite scripts in the note prompt
ok 170 - Create another rework with custom multiplan config
ok 171 - Should have two targets
ok 172 - Targets should use the same plan file
ok 173 - Rework change "widgets" in all plans
ok 174 - Get widgets@HEAD from the plan
ok 175 - Get widgets@foo from the plan
ok 176 - The two widgets should be different changes
ok 177 - pg\deploy\widgets.sql exists
ok 178 - pg\revert\widgets.sql exists
ok 179 - pg\verify\widgets.sql exists
ok 180 - pg\deploy\widgets@foo.sql exists
ok 181 - pg\revert\widgets@foo.sql exists
ok 182 - pg\verify\widgets@foo.sql exists
ok 183 - pg\deploy\widgets.sql and pg\deploy\widgets@foo.sql contents are the same
ok 184 - pg\verify\widgets.sql and pg\verify\widgets@foo.sql contents are the same
ok 185 - pg\revert\widgets.sql and pg\deploy\widgets@foo.sql contents are the same
ok 186 - sqlite\deploy\widgets.sql exists
ok 187 - sqlite\revert\widgets.sql exists
ok 188 - sqlite\verify\widgets.sql exists
ok 189 - sqlite\deploy\widgets@foo.sql exists
ok 190 - sqlite\revert\widgets@foo.sql exists
ok 191 - sqlite\verify\widgets@foo.sql exists
ok 192 - sqlite\deploy\widgets.sql and sqlite\deploy\widgets@foo.sql contents are the same
ok 193 - sqlite\verify\widgets.sql and sqlite\verify\widgets@foo.sql contents are the same
ok 194 - sqlite\revert\widgets.sql and sqlite\deploy\widgets@foo.sql contents are the same
ok 195 - Should have listed all the files to edit in the note prompt
ok 196 - And the info message should show the two files to modify
ok 197 - Should have debug oputput for all copied files
ok 198 - Create another rework with custom multiplan config
ok 199 - Should have two targets
ok 200 - Rework change "widgets" in all plans
ok 201 - Get widgets@HEAD from the pg plan
ok 202 - Get widgets@foo from the pg plan
ok 203 - The two pg widgets should be different changes
ok 204 - Get widgets@HEAD from the sqlite plan
ok 205 - Get widgets@bar from the sqlite plan
ok 206 - The two sqlite widgets should be different changes
ok 207 - Should have listed all the files to edit in the note prompt
ok 208 - And the info message should show the two files to modify
ok 209 - Should have debug oputput for all copied files
ok 210 - Create another rework with custom multiplan config
ok 211 - Should have two targets
ok 212 - Rework change "widgets" in all plans
ok 213 - Get widgets@HEAD from the pg plan
ok 214 - Get widgets@foo from the pg plan
ok 215 - The two pg widgets should be different changes
ok 216 - Get widgets@HEAD from the sqlite plan
ok 217 - Get widgets@foo from the sqlite plan
ok 218 - The two sqlite widgets should be different changes
ok 219 - deploy\widgets.sql exists
ok 220 - revert\widgets.sql exists
ok 221 - verify\widgets.sql exists
ok 222 - deploy\widgets@foo.sql exists
ok 223 - revert\widgets@foo.sql exists
ok 224 - verify\widgets@foo.sql exists
ok 225 - deploy\widgets.sql and deploy\widgets@foo.sql contents are the same
ok 226 - verify\widgets.sql and verify\widgets@foo.sql contents are the same
ok 227 - revert\widgets.sql and deploy\widgets@foo.sql contents are the same
ok 228 - Should have listed the files to edit in the note prompt
ok 229 - And the info message should show the two files to modify
ok 230 - Should have debug oputput for all copied files
ok 231 - no warnings
ok
t/show.t ............
ok 1 - require App::Sqitch::Command::show;
ok 2 - The class (or class-like) 'App::Sqitch::Command::show' isa 'App::Sqitch::Command'
ok 3 - App::Sqitch::Command::show->can(...)
ok 4 - Options should be correct
ok 5 - An object of class 'App::Sqitch::Command::show' isa 'App::Sqitch::Command::show'
ok 6 - exists_only should be false by default
ok 7 - Construct with exists_only
ok 8 - exists_only should be set
ok 9 - Should get empty hash for no config or options
ok 10 - Should get exists_only => 1 for exist in options
ok 11 - Get a change
ok 12 - Find change by id
ok 13 - The change info should have been emitted
ok 14 - Find change by name
ok 15 - The change info should have been emitted again
ok 16 - Should get an error for an unknown change
ok 17 - Unknown change error ident should be "show"
ok 18 - Should get proper error for unknown change
ok 19 - Should return false for uknown change and exists_only
ok 20 - Nothing should have been emitted
ok 21 - Find change by tag id
ok 22 - The change info should have been emitted
ok 23 - Find change by tag
ok 24 - The change info should have been emitted
ok 25 - Run exists with ID
ok 26 - There should be no output
ok 27 - Find tag by id
ok 28 - The tag info should have been emitted
ok 29 - Find tag by id with exists_only
ok 30 - Nothing should have been emitted
ok 31 - Find tag by name
ok 32 - The tag info should have been emitted
ok 33 - Find tag by formatted name
ok 34 - The tag info should have been emitted
ok 35 - Should get error for non-existent tag
ok 36 - Unknown tag error ident should be "show"
ok 37 - Should get proper error for unknown tag
ok 38 - Should return false for non-existent tag and exists_only
ok 39 - Nothing should have been emitted
ok 40 - Should get error for non-existent tag ID
ok 41 - Unknown tag ID error ident should be "show"
ok 42 - Should get proper error for unknown tag ID
ok 43 - Show a deploy file
ok 44 - The deploy file should have been emitted
ok 45 - Show a deploy file with exists_only
ok 46 - Nothing should have been emitted
ok 47 - Show a revert file
ok 48 - The revert file should have been emitted
ok 49 - Should get error for nonexistent varify file
ok 50 - Nonexistent file error ident should be "show"
ok 51 - Should get proper error for nonexistent file
ok 52 - Should return false for nonexistent file
ok 53 - Nothing should have been emitted
ok 54 - Should get usage for missing params
ok 55 - Nothing should have been passed to usage
ok 56 - Should get error for uknown type
ok 57 - Unknown type error ident should be "show"
ok 58 - Should get proper error for unknown type
1..58
ok
t/sqlite.t ..........
ok 1 - require App::Sqitch::Engine::sqlite;
ok 2 - config_vars should return three vars
ok 3 - An object of class 'App::Sqitch::Engine::sqlite' isa 'App::Sqitch::Engine::sqlite'
ok 4 - client should default to sqlite3
ok 5 - dbname should be filled in
ok 6 - Target attribute should be specified target
ok 7 - Destination should be uri stringified
ok 8 - Meta target should be registry_uri stringified
ok 9 - sqlite3 command should have the proper opts
ok 10 - Create another sqlite
ok 11 - client should fall back on config
ok 12 - dbname should fall back on config
ok 13 - Target should be as specified
ok 14 - Destination should be configured target name
ok 15 - registry_uri should fall back on config
ok 16 - Meta target should be configured registry_uri stringified
ok 17 - Create another sqlite
ok 18 - dbname should fall back on config with no extension
ok 19 - Target should be as specified
ok 20 - Destination should be configured target name
ok 21 - registry_uri should fall back on config wth extension
ok 22 - Meta target should be configured registry_uri stringified
ok 23 - Create another sqlite
ok 24 - dbname should fall back on config with no extension
ok 25 - Target should be as specified
ok 26 - Destination should be configured target name
ok 27 - registry_uri should fall back on config wth extension
ok 28 - Meta target should be configured registry_uri stringified
ok 29 - Create another sqlite
ok 30 - dbname should fall back on config with no extension
ok 31 - Target should be as specified
ok 32 - Destination should be configured target name
ok 33 - registry_uri should fall back on config wth extension
ok 34 - Meta target should be configured registry_uri stringified
ok 35 - Create sqlite with sqitch with --client and --target
ok 36 - The client should be grabbed from --client
ok 37 - The registry should be grabbed from --registry
ok 38 - sqlite3 command should have option values
ok 39 - Instantiate with a temporary database file
ok 40 - App::Sqitch::Engine::sqlite->can('_read')
ok 41 - _read() should work
ok 42 - _read() should SQL-quote the file name
ok 43 - _read() should SQL-quote quotes, too
ok 44 - App::Sqitch::Engine::sqlite->can(...)
ok 45 - Call _run
ok 46 - Command should be passed to run()
ok 47 - Call _spool
ok 48 - Command should be passed to spool()
ok 49 - Call _capture
ok 50 - Command should be passed to capture()
ok 51 - Run foo/bar.sql
ok 52 - File should be passed to run()
ok 53 - Spool a "file handle"
ok 54 - Handle should be passed to spool()
ok 55 - Verify foo/bar.sql
ok 56 - Verify file should be passed to capture()
ok 57 - Verify foo/bar.sql again
ok 58 - Verifile file should be passed to run() for high verbosity
ok 59 - App::Sqitch::Engine::sqlite->can('_ts2char_format')
ok 60 - _ts2char should work
ok 61 - App::Sqitch::Engine::sqlite->can('_dt')
ok 62 - 'Return value of _dt()' isa 'App::Sqitch::DateTime'
ok 63 - DateTime year should be set
ok 64 - DateTime month should be set
ok 65 - DateTime day should be set
ok 66 - DateTime hour should be set
ok 67 - DateTime minute should be set
ok 68 - DateTime second should be set
ok 69 - DateTime TZ should be set
ok 70 - Create command for v3.3.9
ok 71 - Should be okay with sqlite v3.3.9
ok 72 - Create command for v3.3.10
ok 73 - Should be okay with sqlite v3.3.10
ok 74 - Create command for v3.3.200
ok 75 - Should be okay with sqlite v3.3.200
ok 76 - Create command for v3.4.0
ok 77 - Should be okay with sqlite v3.4.0
ok 78 - Create command for v3.4.8
ok 79 - Should be okay with sqlite v3.4.8
ok 80 - Create command for v3.7.11
ok 81 - Should be okay with sqlite v3.7.11
ok 82 - Create command for v3.8.12
ok 83 - Should be okay with sqlite v3.8.12
ok 84 - Create command for v3.10.0
ok 85 - Should be okay with sqlite v3.10.0
ok 86 - Create command for v4.1.30
ok 87 - Should be okay with sqlite v4.1.30
ok 88 - Create command for v3.3.8
ok 89 - Should not be okay with v3.3.8
ok 90 - Should get ident "sqlite" for v3.3.8
ok 91 - Should get proper error message for v3.3.8
ok 92 - Create command for v3.3.0
ok 93 - Should not be okay with v3.3.0
ok 94 - Should get ident "sqlite" for v3.3.0
ok 95 - Should get proper error message for v3.3.0
ok 96 - Create command for v3.2.8
ok 97 - Should not be okay with v3.2.8
ok 98 - Should get ident "sqlite" for v3.2.8
ok 99 - Should get proper error message for v3.2.8
ok 100 - Create command for v3.0.1
ok 101 - Should not be okay with v3.0.1
ok 102 - Should get ident "sqlite" for v3.0.1
ok 103 - Should get proper error message for v3.0.1
ok 104 - Create command for v3.0.0
ok 105 - Should not be okay with v3.0.0
ok 106 - Should get ident "sqlite" for v3.0.0
ok 107 - Should get proper error message for v3.0.0
ok 108 - Create command for v2.8.1
ok 109 - Should not be okay with v2.8.1
ok 110 - Should get ident "sqlite" for v2.8.1
ok 111 - Should get proper error message for v2.8.1
ok 112 - Create command for v2.20.0
ok 113 - Should not be okay with v2.20.0
ok 114 - Should get ident "sqlite" for v2.20.0
ok 115 - Should get proper error message for v2.20.0
ok 116 - Create command for v1.0.0
ok 117 - Should not be okay with v1.0.0
ok 118 - Should get ident "sqlite" for v1.0.0
ok 119 - Should get proper error message for v1.0.0
ok 120 - App::Sqitch::Engine::sqlite->can(...)
# Subtest: live database
1..0 # SKIP Unable to live-test SQLite engine: "sqlite3.exe" failed to start: "The system cannot find the file specified"
#
ok 121 # skip Unable to live-test SQLite engine: "sqlite3.exe" failed to start: "The system cannot find the file specified"
#
1..121
ok
t/status.t ..........
1..114
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 - Default target should be undef
ok 27 - 'new status with target' isa 'App::Sqitch::Command::status'
ok 28 - Should have target "foo"
ok 29 - Should get empty hash for no config or options
ok 30 - Should get error for invalid date format in config
ok 31 - Invalid date format error ident should be "datetime"
ok 32 - Invalid date format error message should be correct
ok 33 - Should get bool values set from config
ok 34 - Should get error for invalid date format in optsions
ok 35 - Invalid date format error ident should be "status"
ok 36 - Invalid date format error message should be correct
ok 37 - Emit the state
ok 38 - The state should have been emitted
ok 39 - Emit the state with a tag
ok 40 - The state should have been emitted with a tag
ok 41 - Emit the state with multiple tags
ok 42 - The state should have been emitted with multiple tags
ok 43 - Create status command with an engine
ok 44 - Try to emit changes
ok 45 - Should have emitted no changes
ok 46 - Create change-showing status command
ok 47 - Emit changes again
ok 48 - Project "foo" should have been passed to current_changes
ok 49 - Should have emitted one change
ok 50 - Emit changes thrice
ok 51 - Project "foo" again should have been passed to current_changes
ok 52 - Should have emitted three changes
ok 53 - Try to emit tags
ok 54 - No tags should have been emitted
ok 55 - Create tag-showing status command
ok 56 - Try to emit tags again
ok 57 - Project "bar" should be passed to current_tags()
ok 58 - Should have emitted a header for no tags
ok 59 - Emit tags
ok 60 - Project "bar" should again be passed to current_tags()
ok 61 - Should have emitted one tag
ok 62 - Emit tags again
ok 63 - Project "bar" should once more be passed to current_tags()
ok 64 - Should have emitted all three tags
ok 65 - Create status command with actual plan command
ok 66 - Emit status
ok 67 - Should have a blank comment line
ok 68 - Should emit up-to-date output
ok 69 - Emit status again
ok 70 - Should have a blank comment line
ok 71 - Should emit list of undeployed changes
ok 72 - Emit status thrice
ok 73 - Should have a blank comment line
ok 74 - Should emit list of undeployed changes
ok 75 - Die on invalid ID
ok 76 - Invalid ID error ident should be "status"
ok 77 - The invalid ID error message should be correct
ok 78 - Should have a blank comment line
ok 79 - Should have a message about inability to find the change
ok 80 - Recreate status command
ok 81 - Execute
ok 82 - The state should have been emitted
ok 83 - Should emit list of undeployed changes
ok 84 - No target name should have been passed to Target
ok 85 - Execute with target arg
ok 86 - The state should have been emitted
ok 87 - Should emit list of undeployed changes
ok 88 - Name "db:sqlite:" should have been passed to Target
ok 89 - Create status command with a target option
ok 90 - Execute with target attribute
ok 91 - The state should have been emitted
ok 92 - Should emit list of undeployed changes
ok 93 - Name "db:sqlite:" should have been passed to Target
ok 94 - Execute with target attribute and arg
ok 95 - The state should have been emitted
ok 96 - Should emit list of undeployed changes
ok 97 - Name "db:sqlite:" should have been passed to Target
ok 98 - Should have got warning for two targets
ok 99 - Create status command with specified project
ok 100 - Execute for specified project
ok 101 - The specified project state should have been emitted
ok 102 - Should emit unknown status message for specified project
ok 103 - Create status command with external project
ok 104 - Execute for external project
ok 105 - The external project state should have been emitted
ok 106 - Should emit unknown status message for external project
ok 107 - Die on no state
ok 108 - No state error ident should be "status"
ok 109 - No state error message should be correct
ok 110 - The "On database" comment should have been emitted
ok 111 - Should get an error for uninitialized db
ok 112 - Uninitialized db error ident should be "status"
ok 113 - Uninitialized db error message should be correct
ok 114 - no warnings
ok
t/tag.t .............
1..27
ok 1 - require App::Sqitch::Plan::Tag;
ok 2 - App::Sqitch::Plan::Tag->can(...)
ok 3 - An object of class 'App::Sqitch::Plan::Tag' isa 'App::Sqitch::Plan::Tag'
ok 4 - An object of class 'App::Sqitch::Plan::Tag' 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..78
ok 1 - Load a sqitch sqitch object
ok 2 - 'tag command' isa 'App::Sqitch::Command::tag'
ok 3 - The all attribute should be false by default
ok 4 - App::Sqitch::Command::tag->can(...)
ok 5 - Should have note option
ok 6 - Should get empty hash for no config or options
ok 7 - Should not have fetched boolean tag.all config
ok 8 - Should get populated hash for no all options
ok 9 - Should not have fetched boolean tag.all config
ok 10 - Add change "foo"
ok 11 - Tag @alpha
ok 12 - Should have tagged "foo"
ok 13 - Reload plan
ok 14 - New tag should have been written
ok 15 - New tag should have empty note
ok 16 - Should have requested a note
ok 17 - The info message should be correct
ok 18 - Execute with no arg
ok 19 - The one tag should have been listed
ok 20 - Should have requested a note
ok 21 - Add tag @beta
ok 22 - Execute with no arg again
ok 23 - Both tags should have been listed
ok 24 - Should have requested a note
ok 25 - 'tag command with note' isa 'App::Sqitch::Command::tag'
ok 26 - Tag @gamma
ok 27 - Gamma tag should be on change "foo"
ok 28 - Gamma tag should have note
ok 29 - Reload plan
ok 30 - Gamma tag should have been written
ok 31 - Written tag should have note
ok 32 - Should have requested a note
ok 33 - The gamma note should be correct
ok 34 - 'tag command with note' isa 'App::Sqitch::Command::tag'
ok 35 - Add change "bar"
ok 36 - Add change "baz"
ok 37 - Tag change "bar" with @delta
ok 38 - Should have tagged "bar"
ok 39 - Reload plan
ok 40 - New tag should have been written
ok 41 - New tag should have the proper note
ok 42 - Should have requested a note
ok 43 - The info message should be correct
ok 44 - 'tag command with change name' isa 'App::Sqitch::Command::tag'
ok 45 - Tag change "bar" with @zeta
ok 46 - Should have tagged "bar" with @zeta
ok 47 - Reload plan
ok 48 - Tag @zeta should have been written
ok 49 - Tag @zeta should have the proper note
ok 50 - Should have requested a note
ok 51 - The zeta info message should be correct
ok 52 - Load another sqitch sqitch object
ok 53 - 'another tag command' isa 'App::Sqitch::Command::tag'
ok 54 - Tag with @whacko
ok 55 - Should have tagged "baz" with @whacko
ok 56 - The whacko info message should be correct
ok 57 - Should get an error for --all and a target arg
ok 58 - Mixed arguments error ident should be "tag"
ok 59 - Mixed arguments error message should be correct
ok 60 - Load another sqitch sqitch object
ok 61 - 'yet another tag command' isa 'App::Sqitch::Command::tag'
ok 62 - Tag with @dubdub
ok 63 - Should have two targets
ok 64 - Should have tagged pg plan change "pg_change" with @dubdub
ok 65 - Should have tagged sqlite plan change "sqlite_change" with @dubdub
ok 66 - The dubdub info message should show both plans tagged
ok 67 - Tag sqlite plan with @shoot
ok 68 - Should still have two targets
ok 69 - Should not have tagged pg plan change "sqlite_change" with @shoot
ok 70 - Should have tagged sqlite plan change "sqlite_change" with @shoot
ok 71 - The shoot info message should the sqlite plan getting tagged
ok 72 - 'yet another tag command' isa 'App::Sqitch::Command::tag'
ok 73 - Tag with @huwah
ok 74 - Should still have two targets
ok 75 - Should have tagged pg plan change "pg_change" with @huwah
ok 76 - Should not have tagged sqlite plan change "sqlite_change" with @huwah
ok 77 - The huwah info message should the pg plan getting tagged
ok 78 - no warnings
ok
t/target.t ..........
ok 1 - use App::Sqitch::Target;
ok 2 - Load a sqitch sqitch object
ok 3 - An object of class 'App::Sqitch::Target' isa 'App::Sqitch::Target'
ok 4 - App::Sqitch::Target->can(...)
ok 5 - Name should be "db:sqlite:"
ok 6 - Target should be alias for name
ok 7 - URI should be "db:sqlite:"
ok 8 - Sqitch should be as passed
ok 9 - Engine key should be "sqlite"
ok 10 - 'Engine' isa 'App::Sqitch::Engine::sqlite'
ok 11 - Should have default registry
ok 12 - Should have default client
ok 13 - Should have default top_dir
ok 14 - Should have default deploy_dir
ok 15 - Should have default revert_dir
ok 16 - Should have default verify_dir
ok 17 - Should have default extension
ok 18 - Should have default plan file
ok 19 - 'Should get plan' isa 'App::Sqitch::Plan'
ok 20 - Plan file should be copied from Target
ok 21 - DSN should be from URI
ok 22 - Username should be from URI
ok 23 - Password should be from URI
ok 24 - An object of class 'App::Sqitch::Target' isa 'App::Sqitch::Target'
ok 25 - Password should be from environment variable
ok 26 - Should get error for missing params
ok 27 - 'Target with name and URI' isa 'App::Sqitch::Target'
ok 28 - Name should be "foo"
ok 29 - Target should be alias for name
ok 30 - URI should be set as passed
ok 31 - Sqitch should be as passed
ok 32 - Engine key should be "pg"
ok 33 - 'Engine' isa 'App::Sqitch::Engine::pg'
ok 34 - DSN should be from URI
ok 35 - Username should be from URI
ok 36 - Password should be from environment
ok 37 - 'Target with URI' isa 'App::Sqitch::Target'
ok 38 - Name should be URI without password
ok 39 - Target should be alias for name
ok 40 - Engine key should be "pg"
ok 41 - 'Engine' isa 'App::Sqitch::Engine::pg'
ok 42 - DSN should be from URI
ok 43 - Username should be from URI
ok 44 - Password should be from URI
ok 45 - 'Default target' isa 'App::Sqitch::Target'
ok 46 - Name should be "db:sqlite:"
ok 47 - URI should be "db:sqlite:"
ok 48 - Should have tried to get engine target
ok 49 - 'Default target' isa 'App::Sqitch::Target'
ok 50 - Name should be "db:mysql:"
ok 51 - URI should be "db:mysql"
ok 52 - Should have tried to get core.target, core.engine and then the target
ok 53 - 'Target with URI in name' isa 'App::Sqitch::Target'
ok 54 - Name should be "db:pg:"
ok 55 - URI should be "db:pg"
ok 56 - Should have fetched no config
ok 57 - Should have error for no engine in URI
ok 58 - Should have target ident
ok 59 - Should have message about no engine-less URI
ok 60 - Should have error for no engine or target
ok 61 - Should have target ident
ok 62 - Should have message about no specified engine
ok 63 - 'Engineless target' isa 'App::Sqitch::Target'
ok 64 - Name should be "db:"
ok 65 - URI should be "db:"
ok 66 - Should not have tried to get engine target
ok 67 - Sqitch should be as passed
ok 68 - Engine key should be undef
ok 69 - Should get exception for no engine
ok 70 - Should have engine ident
ok 71 - Should have message about no engine
ok 72 - Should have default top_dir
ok 73 - Should have default deploy_dir
ok 74 - Should have default revert_dir
ok 75 - Should have default verify_dir
ok 76 - Should have default extension
ok 77 - Should have default plan file
ok 78 - 'Should get plan' isa 'App::Sqitch::Plan'
ok 79 - Plan file should be copied from Target
ok 80 - DSN should be empty
ok 81 - Username should be undef
ok 82 - Password should be undef
ok 83 - 'Engine URI target' isa 'App::Sqitch::Target'
ok 84 - Name should be "db:pg://a@foo/scat"
ok 85 - URI should be "db:pg://a:b@foo/scat"
ok 86 - Nothing should have been fetched from config
ok 87 - 'Engine URI core.target' isa 'App::Sqitch::Target'
ok 88 - Name should be "db:pg://s@ack/shi"
ok 89 - URI should be "db:pg://s:b@ack/shi"
ok 90 - Should have fetched core.target from config
ok 91 - 'Engine name core.target' isa 'App::Sqitch::Target'
ok 92 - Name should be "shout"
ok 93 - URI should be "db:pg:w:e@we/bar"
ok 94 - Should have fetched target.shout.uri from config
ok 95 - Should have exception for unknown named target
ok 96 - Unknown target error ident should be "target"
ok 97 - Unknown target error message should be correct
ok 98 - Should have requested target URI from config
ok 99 - Should have requested target.foo section
ok 100 - Should have exception for URL-less named target
ok 101 - URL-less target error ident should be "target"
ok 102 - URL-less target error message should be correct
ok 103 - Should have requested target URI from config
ok 104 - Should have requested target.foo section
ok 105 - 'Named target' isa 'App::Sqitch::Target'
ok 106 - Name should be "foo"
ok 107 - URI should be "db:pg:foo"
ok 108 - Should have requested target URI from config
ok 109 - Should not have requested deprecated pg section
ok 110 - 'Engine named target' isa 'App::Sqitch::Target'
ok 111 - Name should be "foo"
ok 112 - URI should be "db:sqlite:foo"
ok 113 - Should have requested engine target and target URI from config
ok 114 - Should not have requested pg section
ok 115 - 'Pg target' isa 'App::Sqitch::Target'
ok 116 - Should have requested core and engine pg sections
ok 117 - Name should be passwordless stringified URI
ok 118 - URI should be tweaked by config* options
ok 119 - Should have warned on deprecated config options
ok 120 - 'Postgres target' isa 'App::Sqitch::Target'
ok 121 - Should have requested sqlite core and engine sections
ok 122 - Name should be passwordless stringified URI
ok 123 - URI should be tweaked by --db-* options
ok 124 - Should have warned on deprecated config
ok 125 - 'Foo target' isa 'App::Sqitch::Target'
ok 126 - Should have requested target URI
ok 127 - Should have fetched no section
ok 128 - Name should be as passed
ok 129 - URI should be tweaked by --db-* options
ok 130 - Should have emitted no warnigns
ok 131 - Registry should be "myreg"
ok 132 - Client should be "pgsql"
ok 133 - Plan file should be "my.plan"
ok 134 - 'Plan file' isa 'Path::Class::File'
ok 135 - 'Plan' isa 'App::Sqitch::Plan'
ok 136 - Plan should use target plan file
ok 137 - Top dir should be "top"
ok 138 - 'Top dir' isa 'Path::Class::Dir'
ok 139 - Deploy dir should be "dep"
ok 140 - 'Deploy dir' isa 'Path::Class::Dir'
ok 141 - Revert dir should be "rev"
ok 142 - 'Revert dir' isa 'Path::Class::Dir'
ok 143 - Verify dir should be "ver"
ok 144 - 'Verify dir' isa 'Path::Class::Dir'
ok 145 - Extension should be "ddl"
ok 146 - Registry should be "yoreg"
ok 147 - Client should be "mycli"
ok 148 - Plan file should be "pg.plan"
ok 149 - 'Plan file' isa 'Path::Class::File'
ok 150 - 'Plan' isa 'App::Sqitch::Plan'
ok 151 - Plan should use target plan file
ok 152 - Top dir should be "pg"
ok 153 - 'Top dir' isa 'Path::Class::Dir'
ok 154 - Deploy dir should be "pgdep"
ok 155 - 'Deploy dir' isa 'Path::Class::Dir'
ok 156 - Revert dir should be "pgrev"
ok 157 - 'Revert dir' isa 'Path::Class::Dir'
ok 158 - Verify dir should be "pgver"
ok 159 - 'Verify dir' isa 'Path::Class::Dir'
ok 160 - Extension should be "pgddl"
ok 161 - Registry should be "fooreg"
ok 162 - Client should be "foocli"
ok 163 - Plan file should be "foo.plan"
ok 164 - 'Plan file' isa 'Path::Class::File'
ok 165 - 'Plan' isa 'App::Sqitch::Plan'
ok 166 - Plan should use target plan file
ok 167 - Top dir should be "foo"
ok 168 - 'Top dir' isa 'Path::Class::Dir'
ok 169 - Deploy dir should be "foodep"
ok 170 - 'Deploy dir' isa 'Path::Class::Dir'
ok 171 - Revert dir should be "foorev"
ok 172 - 'Revert dir' isa 'Path::Class::Dir'
ok 173 - Verify dir should be "foover"
ok 174 - 'Verify dir' isa 'Path::Class::Dir'
ok 175 - Extension should be "fooddl"
ok 176 - Registry should be "optreg"
ok 177 - Client should be "optcli"
ok 178 - Plan file should be "opt.plan"
ok 179 - 'Plan file' isa 'Path::Class::File'
ok 180 - 'Plan' isa 'App::Sqitch::Plan'
ok 181 - Plan should use target plan file
ok 182 - Top dir should be "top.dir"
ok 183 - 'Top dir' isa 'Path::Class::Dir'
ok 184 - Deploy dir should be "dep.dir"
ok 185 - 'Deploy dir' isa 'Path::Class::Dir'
ok 186 - Revert dir should be "rev.dir"
ok 187 - 'Revert dir' isa 'Path::Class::Dir'
ok 188 - Verify dir should be "ver.dir"
ok 189 - 'Verify dir' isa 'Path::Class::Dir'
ok 190 - Extension should be "opt"
ok 191 - Load all targets
ok 192 - Should have one target
ok 193 - It should be the generic core enginetarget
ok 194 - Load all targets with core target config
ok 195 - Should again have one target
ok 196 - It should be the named target
ok 197 - Load all targets with core engine and target config
ok 198 - Should still have one target
ok 199 - It should again be the named target
ok 200 - Load all user conf targets
ok 201 - Should have four user targets
ok 202 - Should have all the engine targets
ok 203 - Load all target conf targets
ok 204 - Should have three targets
ok 205 - Core engine should be default target
ok 206 - Should have the core target plus the named targets
ok 207 - Load all local conf targets
ok 208 - Should have two local targets
ok 209 - Core engine should be lead to default target
ok 210 - Should have the core target plus the named targets
ok 211 - Load all engine conf targets
ok 212 - Should have three engine conf targets
ok 213 - Should have the engine and target targets
1..213
ok
t/target_cmd.t ......
1..236
ok 1 - Load a sqitch sqitch object
ok 2 - 'Target command' isa 'App::Sqitch::Command::target'
ok 3 - App::Sqitch::Command::target->can(...)
ok 4 - Options should be correct
ok 5 - Default verbosity should be 0
ok 6 - Default properties should be empty
ok 7 - configure() should ignore config file
ok 8 - Run list()
ok 9 - The list of targets should have been output
ok 10 - 'Verbose target' isa 'App::Sqitch::Command::target'
ok 11 - Run verbose list()
ok 12 - The list of targets and their URIs should have been output
ok 13 - No name arg to add() should yield usage
ok 14 - No args should be passed to usage
ok 15 - No URI arg to add() should yield usage
ok 16 - No args should be passed to usage
ok 17 - Should get error for existing target
ok 18 - Existing target error ident should be "target"
ok 19 - Existing target error message should be correct
ok 20 - Add target "test"
ok 21 - Target "test" URI should have been set
ok 22 - Target "test" should have no client set
ok 23 - Target "test" should have no registry set
ok 24 - Target "test" should have no top_dir set
ok 25 - Target "test" should have no plan_file set
ok 26 - Target "test" should have no deploy_dir set
ok 27 - Target "test" should have no revert_dir set
ok 28 - Target "test" should have no verify_dir set
ok 29 - Target "test" should have no extension set
ok 30 - 'Target with registry' isa 'App::Sqitch::Command::target'
ok 31 - Add target "withreg"
ok 32 - Target "withreg" URI should have been set
ok 33 - Target "withreg" registry should have been set
ok 34 - Target "test" should have no client set
ok 35 - Target "test" should have no top_dir set
ok 36 - Target "test" should have no plan_file set
ok 37 - Target "test" should have no deploy_dir set
ok 38 - Target "test" should have no revert_dir set
ok 39 - Target "test" should have no verify_dir set
ok 40 - Target "test" should have no extension set
ok 41 - 'Target with client' isa 'App::Sqitch::Command::target'
ok 42 - Add target "withcli"
ok 43 - Target "withcli" URI should have been set
ok 44 - Target "withcli" should have client set
ok 45 - Target "withcli" should have no registry set
ok 46 - Target "withcli" should have no top_dir set
ok 47 - Target "withcli" should have no plan_file set
ok 48 - Target "withcli" should have no deploy_dir set
ok 49 - Target "withcli" should have no revert_dir set
ok 50 - Target "withcli" should have no verify_dir set
ok 51 - Target "withcli" should have no extension set
ok 52 - 'Target with client and registry' isa 'App::Sqitch::Command::target'
ok 53 - Add target "withboth"
ok 54 - Target "withboth" URI should have been set
ok 55 - Target "withboth" registry should have been set
ok 56 - Target "withboth" should have client set
ok 57 - Target "withboth" should have no top_dir set
ok 58 - Target "withboth" should have no plan_file set
ok 59 - Target "withboth" should have no deploy_dir set
ok 60 - Target "withboth" should have no revert_dir set
ok 61 - Target "withboth" should have no verify_dir set
ok 62 - Target "withboth" should have no extension set
ok 63 - 'Target with all properties' isa 'App::Sqitch::Command::target'
ok 64 - Add target "withall"
ok 65 - Target "withall" should have extension set
ok 66 - Target "withall" should have revert_dir set
ok 67 - Target "withall" should have top_dir set
ok 68 - Target "withall" should have registry set
ok 69 - Target "withall" should have client set
ok 70 - Target "withall" should have deploy_dir set
ok 71 - Target "withall" should have plan_file set
ok 72 - Target "withall" should have verify_dir set
ok 73 - No name arg to set_uri() should yield usage
ok 74 - No args should be passed to usage
ok 75 - No URI arg to set_uri() should yield usage
ok 76 - No args should be passed to usage
ok 77 - Should get error for nonexistent target
ok 78 - Nonexistent target error ident should be "target"
ok 79 - Nonexistent target error message should be correct
ok 80 - Set new URI
ok 81 - Target "withboth" should have new URI
ok 82 - Set new URI
ok 83 - Target "withboth" should have new DB URI
ok 84 - No name arg to set_extension() should yield usage
ok 85 - No args should be passed to usage
ok 86 - No extension arg to set_extension() should yield usage
ok 87 - No args should be passed to usage
ok 88 - Should get error for nonexistent target
ok 89 - Nonexistent target error ident should be "target"
ok 90 - Nonexistent target error message should be correct
ok 91 - Set new $key
ok 92 - Target "withboth" should have new extension
ok 93 - No name arg to set_revert_dir() should yield usage
ok 94 - No args should be passed to usage
ok 95 - No revert_dir arg to set_revert_dir() should yield usage
ok 96 - No args should be passed to usage
ok 97 - Should get error for nonexistent target
ok 98 - Nonexistent target error ident should be "target"
ok 99 - Nonexistent target error message should be correct
ok 100 - Set new $key
ok 101 - Target "withboth" should have new revert_dir
ok 102 - No name arg to set_top_dir() should yield usage
ok 103 - No args should be passed to usage
ok 104 - No top_dir arg to set_top_dir() should yield usage
ok 105 - No args should be passed to usage
ok 106 - Should get error for nonexistent target
ok 107 - Nonexistent target error ident should be "target"
ok 108 - Nonexistent target error message should be correct
ok 109 - Set new $key
ok 110 - Target "withboth" should have new top_dir
ok 111 - No name arg to set_registry() should yield usage
ok 112 - No args should be passed to usage
ok 113 - No registry arg to set_registry() should yield usage
ok 114 - No args should be passed to usage
ok 115 - Should get error for nonexistent target
ok 116 - Nonexistent target error ident should be "target"
ok 117 - Nonexistent target error message should be correct
ok 118 - Set new $key
ok 119 - Target "withboth" should have new registry
ok 120 - No name arg to set_client() should yield usage
ok 121 - No args should be passed to usage
ok 122 - No client arg to set_client() should yield usage
ok 123 - No args should be passed to usage
ok 124 - Should get error for nonexistent target
ok 125 - Nonexistent target error ident should be "target"
ok 126 - Nonexistent target error message should be correct
ok 127 - Set new $key
ok 128 - Target "withboth" should have new client
ok 129 - No name arg to set_deploy_dir() should yield usage
ok 130 - No args should be passed to usage
ok 131 - No deploy_dir arg to set_deploy_dir() should yield usage
ok 132 - No args should be passed to usage
ok 133 - Should get error for nonexistent target
ok 134 - Nonexistent target error ident should be "target"
ok 135 - Nonexistent target error message should be correct
ok 136 - Set new $key
ok 137 - Target "withboth" should have new deploy_dir
ok 138 - No name arg to set_plan_file() should yield usage
ok 139 - No args should be passed to usage
ok 140 - No plan_file arg to set_plan_file() should yield usage
ok 141 - No args should be passed to usage
ok 142 - Should get error for nonexistent target
ok 143 - Nonexistent target error ident should be "target"
ok 144 - Nonexistent target error message should be correct
ok 145 - Set new $key
ok 146 - Target "withboth" should have new plan_file
ok 147 - No name arg to set_verify_dir() should yield usage
ok 148 - No args should be passed to usage
ok 149 - No verify_dir arg to set_verify_dir() should yield usage
ok 150 - No args should be passed to usage
ok 151 - Should get error for nonexistent target
ok 152 - Nonexistent target error ident should be "target"
ok 153 - Nonexistent target error message should be correct
ok 154 - Set new $key
ok 155 - Target "withboth" should have new verify_dir
ok 156 - No name args to rename() should yield usage
ok 157 - No args should be passed to usage
ok 158 - No second arg to rename() should yield usage
ok 159 - No args should be passed to usage
ok 160 - Should get error for nonexistent target
ok 161 - Nonexistent target error ident should be "target"
ok 162 - Nonexistent target error message should be correct
ok 163 - Rename
ok 164 - Target "àlafois" should now be present
ok 165 - Target "withboth" should no longer be present
ok 166 - Should get error renaming a target with dependencies
ok 167 - Dependency target error ident should be "target"
ok 168 - Dependency target error message should be correct
ok 169 - No name args to remove() should yield usage
ok 170 - No args should be passed to usage
ok 171 - Should get error for nonexistent target
ok 172 - Nonexistent target error ident should be "target"
ok 173 - Nonexistent target error message should be correct
ok 174 - Remove
ok 175 - Target "àlafois" should now be gone
ok 176 - Should get error removing a target with dependencies
ok 177 - Dependency target error ident should be "target"
ok 178 - Dependency target error message should be correct
ok 179 - Run show()
ok 180 - Show with no names should emit the list of targets
ok 181 - Show dev
ok 182 - The "dev" target should have been shown
ok 183 - Show withcli
ok 184 - The "with_cli" target should have been shown
ok 185 - Show withreg
ok 186 - The "with_reg" target should have been shown
ok 187 - Show three targets
ok 188 - All three targets should have been shown
ok 189 - 'Simple target' isa 'App::Sqitch::Command::target'
ok 190 - Execute undef
ok 191 - list() should have been called
ok 192 - Execute undef with args
ok 193 - list() should have been passed args
ok 194 - Execute list
ok 195 - list() should have been called
ok 196 - Execute list with args
ok 197 - list() should have been passed args
ok 198 - Execute add
ok 199 - add() should have been called
ok 200 - Execute add with args
ok 201 - add() should have been passed args
ok 202 - Execute set-uri
ok 203 - set_uri() should have been called
ok 204 - Execute set-uri with args
ok 205 - set_uri() should have been passed args
ok 206 - Execute set-url
ok 207 - set_uri() should have been called
ok 208 - Execute set-url with args
ok 209 - set_uri() should have been passed args
ok 210 - Execute set-registry
ok 211 - set_registry() should have been called
ok 212 - Execute set-registry with args
ok 213 - set_registry() should have been passed args
ok 214 - Execute set-client
ok 215 - set_client() should have been called
ok 216 - Execute set-client with args
ok 217 - set_client() should have been passed args
ok 218 - Execute remove
ok 219 - remove() should have been called
ok 220 - Execute remove with args
ok 221 - remove() should have been passed args
ok 222 - Execute rm
ok 223 - remove() should have been called
ok 224 - Execute rm with args
ok 225 - remove() should have been passed args
ok 226 - Execute rename
ok 227 - rename() should have been called
ok 228 - Execute rename with args
ok 229 - rename() should have been passed args
ok 230 - Execute show
ok 231 - show() should have been called
ok 232 - Execute show with args
ok 233 - show() should have been passed args
ok 234 - Should get an exception for a nonexistent action
ok 235 - Nonexistent action message should be passed to usage
ok 236 - no warnings
ok
t/upgrade.t .........
1..19
ok 1 - require App::Sqitch::Command::upgrade;
ok 2 - Load a sqitch object
ok 3 - 'upgrade command' isa 'App::Sqitch::Command::upgrade'
ok 4 - App::Sqitch::Command::upgrade->can(...)
ok 5 - Options should be correct
ok 6 - Execute upgrade
ok 7 - Upgrade should not have been called
ok 8 - Should get output for up-to-date registry
ok 9 - Execute upgrade with target
ok 10 - Upgrade should again not have been called
ok 11 - Should get output for up-to-date registry with target
ok 12 - 'upgrade command with target' isa 'App::Sqitch::Command::upgrade'
ok 13 - Execute upgrade with target option
ok 14 - Upgrade should still not have been called
ok 15 - Should get output for up-to-date registry with target option
ok 16 - Execute upgrade with out-of-date registry
ok 17 - Upgrade should now have been called
ok 18 - Should get output for the upgrade
ok 19 - no warnings
ok
t/verify.t ..........
ok 1 - require App::Sqitch::Command::verify;
ok 2 - The class (or class-like) 'App::Sqitch::Command::verify' 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 changes and variables from options
ok 7 - Should have no config if no options
ok 8 - Should have merged variables
ok 9 - An object of class 'App::Sqitch::Command::verify' isa 'App::Sqitch::Command::verify'
ok 10 - Should pick up variables from configuration
ok 11 - 'new status with target' isa 'App::Sqitch::Command::verify'
ok 12 - Should have target "foo"
ok 13 - An object of class 'App::Sqitch::Command::verify' isa 'App::Sqitch::Command::verify'
ok 14 - Default target should be undef
ok 15 - from_change should be undef
ok 16 - to_change should be undef
ok 17 - Execute with nothing.
ok 18 - Two undefs should be passed to the engine
ok 19 - Should have no warnings
ok 20 - Execute from "@alpha"
ok 21 - "@alpha" and undef should be passed to the engine
ok 22 - Should again have no warnings
ok 23 - Execute from "@alpha" to "@beta"
ok 24 - "@alpha" and "@beat" should be passed to the engine
ok 25 - Should still have no warnings
ok 26 - 'Object with from, to, and variables' isa 'App::Sqitch::Command::verify'
ok 27 - Execute again
ok 28 - "foo" and "bar" should be passed to the engine
ok 29 - Vars should have been passed through to the engine
ok 30 - Still should have no warnings
ok 31 - Execute with command-line args
ok 32 - "foo" and "bar" should be passed to the engine
ok 33 - Vars should have been passed through to the engine
ok 34 - Should have warning about which roles are used
ok 35 - Execute with target arg
ok 36 - The target should have been passed to the engine
ok 37 - "foo" and "bar" should be passed to the engine
ok 38 - Vars should have been passed through to the engine
ok 39 - Should once again have no warnings
ok 40 - 'Object with target' isa 'App::Sqitch::Command::verify'
ok 41 - Execute with no args
ok 42 - The target option should have been passed to the engine
ok 43 - Undefs should be passed to the engine
ok 44 - No vars should have been passed through to the engine
ok 45 - Should once again have no warnings
ok 46 - Execute with two targegs and two changes
ok 47 - The target option should have been passed to the engine
ok 48 - The two changes should be passed to the engine
ok 49 - No vars should have been passed through to the engine
ok 50 - Should have warning about too many targets
ok 51 - Should get an exception for unknown arg
ok 52 - Unknow arg ident should be "verify"
ok 53 - Should get an exeption for two unknown arg
ok 54 - Should get an exception for unknown args
ok 55 - Unknow args ident should be "verify"
ok 56 - Should get an exeption for two unknown args
1..56
ok
t/vertica.t .........
ok 1 - require App::Sqitch::Engine::vertica;
ok 2 - config_vars should return three vars
ok 3 - An object of class 'App::Sqitch::Engine::vertica' isa 'App::Sqitch::Engine::vertica'
ok 4 - client should default to vsql
ok 5 - registry default should be "sqitch"
ok 6 - DB URI should be "db:vertica:"
ok 7 - Destination should fall back on environment variables
ok 8 - Registry destination should be the same as destination
ok 9 - vsql command should be std opts-only
ok 10 - An object of class 'App::Sqitch::Engine::vertica' isa 'App::Sqitch::Engine::vertica'
ok 11 - Set some variables
ok 12 - Variables should be passed to vsql via --set
ok 13 - Target name should not read $VERTICADATABASE
ok 14 - Meta target should be the same as destination
ok 15 - Target name should not read $VERTICAUSER
ok 16 - Meta target should be the same as destination
ok 17 - Target name should not fall back on sysuser
ok 18 - Meta target should be the same as destination
ok 19 - Target name should be the default
ok 20 - Meta target should be the same as destination
ok 21 - Create another vertica
ok 22 - client should be as configured
ok 23 - uri should be as configured
ok 24 - registry should be as configured
ok 25 - vsql command should be configured from URI config
ok 26 - Create a vertica with sqitch with options
ok 27 - client should be as optioned
ok 28 - vsql command should be as optioned
ok 29 - App::Sqitch::Engine::vertica->can(...)
ok 30 - VSQL_PASSWORD should be "s3cr3t"
ok 31 - Call _run
ok 32 - Command should be passed to run()
ok 33 - VSQL_PASSWORD should be "s3cr3t"
ok 34 - Call _spool
ok 35 - Command should be passed to spool()
ok 36 - VSQL_PASSWORD should be "s3cr3t"
ok 37 - Call _capture
ok 38 - Command should be passed to capture()
ok 39 - Create a vertica with sqitch with no pw
ok 40 - VSQL_PASSWORD should not exist
ok 41 - Call _run again
ok 42 - Command should be passed to run() again
ok 43 - VSQL_PASSWORD should not exist
ok 44 - Call _spool again
ok 45 - Command should be passed to spool() again
ok 46 - VSQL_PASSWORD should not exist
ok 47 - Call _capture again
ok 48 - Command should be passed to capture() again
ok 49 - VSQL_PASSWORD should not exist
ok 50 - Run foo/bar.sql
ok 51 - File should be passed to run()
ok 52 - VSQL_PASSWORD should not exist
ok 53 - Spool a "file handle"
ok 54 - Handle should be passed to spool()
ok 55 - VSQL_PASSWORD should not exist
ok 56 - Verify foo/bar.sql
ok 57 - Verify file should be passed to capture()
ok 58 - VSQL_PASSWORD should not exist
ok 59 - Verify foo/bar.sql again
ok 60 - Verifile file should be passed to run() for high verbosity
ok 61 - App::Sqitch::Engine::vertica->can('_ts2char')
ok 62 - _ts2char should work
ok 63 - App::Sqitch::Engine::vertica->can('_dt')
ok 64 - 'Return value of _dt()' isa 'App::Sqitch::DateTime'
ok 65 - DateTime year should be set
ok 66 - DateTime month should be set
ok 67 - DateTime day should be set
ok 68 - DateTime hour should be set
ok 69 - DateTime minute should be set
ok 70 - DateTime second should be set
ok 71 - DateTime TZ should be set
ok 72 - App::Sqitch::Engine::vertica->can(...)
# Subtest: live database
1..0 # SKIP Unable to live-test Vertica engine: Can't connect to data source 'dbname=password@localhost/dbadmin' because I can't work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DBI_DRIVER env var is not set) at t/vertica.t line 298.
#
ok 73 # skip Unable to live-test Vertica engine: Can't connect to data source 'dbname=password@localhost/dbadmin' because I can't work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DBI_DRIVER env var is not set) at t/vertica.t line 298.
#
1..73
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 StackTrace::Auto
ok 5 - Create X without ident
ok 6 - Default ident should be "DEV"
ok 7 - threw App::Sqitch::X
ok 8 - 'Thrown object' isa 'App::Sqitch::X'
ok 9 - Ident should be "basic"
ok 10 - The message should have been passed
ok 11 - It should have a stack trace
ok 12 - Exit val should be 2
ok 13 - The trace should start in this file
ok 14 - threw App::Sqitch::X
ok 15 - 'Thrown object' isa 'App::Sqitch::X'
ok 16 - Ident should be "DEV"
ok 17 - The message should have been passed
ok 18 - Exit val should again be 2
ok 19 - Previous exception should have been passed
ok 20 - threw App::Sqitch::X
ok 21 - 'Thrown object' isa 'App::Sqitch::X'
ok 22 - The params should have been passed
ok 23 - Exit val should be 1
ok 24 - Stringification should work
ok 25 - Stringification should work
ok 26 - Should be an "io" exception
ok 27 - Should catch error called via &goto
1..27
ok
All tests successful.
Files=42, Tests=6257, 67 wallclock secs ( 0.69 usr + 0.08 sys = 0.77 CPU)
Result: PASS
DWHEELER/App-Sqitch-0.9992.tar.gz
C:\Perl-5.14\bin\perl.exe ./Build test verbose=1 -- OK
David E. Wheeler <david@justatheory.com>
Sane database change management
>>> (cd C:\cpanfly-5.14\var\cpan\build\App-Sqitch-0.9992-m0ozmJ && tar cvf - App-Sqitch-0.9992.ppd blib) | gzip -c >C:/cpanfly-5.14/var/REPO/D/DW/DWHEELER/App-Sqitch-0.9992.tar.gz
App-Sqitch-0.9992.ppd
blib/
blib/etc/
blib/etc/templates/
blib/etc/templates/deploy/
blib/etc/templates/deploy/firebird.tmpl
blib/etc/templates/deploy/mysql.tmpl
blib/etc/templates/deploy/oracle.tmpl
blib/etc/templates/deploy/pg.tmpl
blib/etc/templates/deploy/sqlite.tmpl
blib/etc/templates/deploy/vertica.tmpl
blib/etc/templates/revert/
blib/etc/templates/revert/firebird.tmpl
blib/etc/templates/revert/mysql.tmpl
blib/etc/templates/revert/oracle.tmpl
blib/etc/templates/revert/pg.tmpl
blib/etc/templates/revert/sqlite.tmpl
blib/etc/templates/revert/vertica.tmpl
blib/etc/templates/verify/
blib/etc/templates/verify/firebird.tmpl
blib/etc/templates/verify/mysql.tmpl
blib/etc/templates/verify/oracle.tmpl
blib/etc/templates/verify/pg.tmpl
blib/etc/templates/verify/sqlite.tmpl
blib/etc/templates/verify/vertica.tmpl
blib/etc/tools/
blib/etc/tools/upgrade-registry-to-mysql-5.5.0.sql
blib/etc/tools/upgrade-registry-to-mysql-5.6.4.sql
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/checkout.pm
blib/lib/App/Sqitch/Command/config.pm
blib/lib/App/Sqitch/Command/deploy.pm
blib/lib/App/Sqitch/Command/engine.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/plan.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/target.pm
blib/lib/App/Sqitch/Command/upgrade.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/firebird.pm
blib/lib/App/Sqitch/Engine/firebird.sql
blib/lib/App/Sqitch/Engine/mysql.pm
blib/lib/App/Sqitch/Engine/mysql.sql
blib/lib/App/Sqitch/Engine/oracle.pm
blib/lib/App/Sqitch/Engine/oracle.sql
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/sqlite.sql
blib/lib/App/Sqitch/Engine/Upgrade/
blib/lib/App/Sqitch/Engine/Upgrade/firebird-1.0.sql
blib/lib/App/Sqitch/Engine/Upgrade/firebird-1.1.sql
blib/lib/App/Sqitch/Engine/Upgrade/mysql-1.0.sql
blib/lib/App/Sqitch/Engine/Upgrade/mysql-1.1.sql
blib/lib/App/Sqitch/Engine/Upgrade/oracle-1.0.sql
blib/lib/App/Sqitch/Engine/Upgrade/oracle-1.1.sql
blib/lib/App/Sqitch/Engine/Upgrade/pg-1.0.sql
blib/lib/App/Sqitch/Engine/Upgrade/pg-1.1.sql
blib/lib/App/Sqitch/Engine/Upgrade/sqlite-1.0.sql
blib/lib/App/Sqitch/Engine/Upgrade/sqlite-1.1.sql
blib/lib/App/Sqitch/Engine/Upgrade/vertica-1.0.sql
blib/lib/App/Sqitch/Engine/Upgrade/vertica-1.1.sql
blib/lib/App/Sqitch/Engine/vertica.pm
blib/lib/App/Sqitch/Engine/vertica.sql
blib/lib/App/Sqitch/Engine.pm
blib/lib/App/Sqitch/ItemFormatter.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/Role/
blib/lib/App/Sqitch/Role/DBIEngine.pm
blib/lib/App/Sqitch/Role/RevertDeployCommand.pm
blib/lib/App/Sqitch/Target.pm
blib/lib/App/Sqitch/Types.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-checkout-usage.pod
blib/lib/sqitch-checkout.pod
blib/lib/sqitch-config-usage.pod
blib/lib/sqitch-config.pod
blib/lib/sqitch-configuration.pod
blib/lib/sqitch-deploy-usage.pod
blib/lib/sqitch-deploy.pod
blib/lib/sqitch-engine-usage.pod
blib/lib/sqitch-engine.pod
blib/lib/sqitch-environment.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-passwords.pod
blib/lib/sqitch-plan-usage.pod
blib/lib/sqitch-plan.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-target-usage.pod
blib/lib/sqitch-target.pod
blib/lib/sqitch-upgrade-usage.pod
blib/lib/sqitch-upgrade.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/sqitchguides.pod
blib/lib/sqitchtutorial-firebird.pod
blib/lib/sqitchtutorial-mysql.pod
blib/lib/sqitchtutorial-oracle.pod
blib/lib/sqitchtutorial-sqlite.pod
blib/lib/sqitchtutorial-vertica.pod
blib/lib/sqitchtutorial.pod
blib/lib/sqitchusage.pod
blib/script/
blib/script/sqitch
blib/script/sqitch.bat
>>> mv C:\cpanfly-5.14\var\cpan\build\App-Sqitch-0.9992-m0ozmJ/App-Sqitch-0.9992.ppd C:/cpanfly-5.14/var/REPO/D/DW/DWHEELER
Finished 2015-05-21T00:28:35