PATH=/usr/bin:/bin:/data/fly2400/cpanfly-5.24/var/megalib/bin Start 2019-06-06T02:20:50 ActivePerl-2400 CPAN-2.10 Reading '/data/fly2400/cpanfly-5.24/var/cpan/Metadata' Database was generated on Wed, 05 Jun 2019 05:55:05 GMT Checksum for /data/fly2400/cpanfly-5.24/var/cpan/sources/authors/id/D/DW/DWHEELER/App-Sqitch-v1.0.0.tar.gz ok App-Sqitch-v1.0.0/t App-Sqitch-v1.0.0/t/x.t App-Sqitch-v1.0.0/t/pg.t App-Sqitch-v1.0.0 App-Sqitch-v1.0.0/README App-Sqitch-v1.0.0/Changes App-Sqitch-v1.0.0/t/tag.t App-Sqitch-v1.0.0/t/add.t App-Sqitch-v1.0.0/t/log.t App-Sqitch-v1.0.0/LICENSE App-Sqitch-v1.0.0/t/help.t App-Sqitch-v1.0.0/t/die.pl App-Sqitch-v1.0.0/t/show.t App-Sqitch-v1.0.0/t/sqitch App-Sqitch-v1.0.0/t/init.t App-Sqitch-v1.0.0/t/plan.t App-Sqitch-v1.0.0/t/base.t App-Sqitch-v1.0.0/META.yml App-Sqitch-v1.0.0/MANIFEST App-Sqitch-v1.0.0/Build.PL App-Sqitch-v1.0.0/README.md App-Sqitch-v1.0.0/t/mysql.t App-Sqitch-v1.0.0/t/blank.t App-Sqitch-v1.0.0/t/echo.pl App-Sqitch-v1.0.0/t/read.pl App-Sqitch-v1.0.0/META.json App-Sqitch-v1.0.0/LICENSE.md App-Sqitch-v1.0.0/bin App-Sqitch-v1.0.0/bin/sqitch App-Sqitch-v1.0.0/t/engine.t App-Sqitch-v1.0.0/t/revert.t App-Sqitch-v1.0.0/t/status.t App-Sqitch-v1.0.0/t/config.t App-Sqitch-v1.0.0/t/bundle.t App-Sqitch-v1.0.0/t/oracle.t App-Sqitch-v1.0.0/t/exasol.t App-Sqitch-v1.0.0/t/rebase.t App-Sqitch-v1.0.0/t/target.t App-Sqitch-v1.0.0/t/sqlite.t App-Sqitch-v1.0.0/t/change.t App-Sqitch-v1.0.0/t/pragma.t App-Sqitch-v1.0.0/t/rework.t App-Sqitch-v1.0.0/t/verify.t App-Sqitch-v1.0.0/t/deploy.t App-Sqitch-v1.0.0/t/depend.t App-Sqitch-v1.0.0/t/vertica.t App-Sqitch-v1.0.0/t/tag_cmd.t App-Sqitch-v1.0.0/t/upgrade.t App-Sqitch-v1.0.0/t/options.t App-Sqitch-v1.0.0/t/command.t App-Sqitch-v1.0.0/t/core.conf App-Sqitch-v1.0.0/t/user.conf App-Sqitch-v1.0.0/t/lib App-Sqitch-v1.0.0/t/lib/LC.pm App-Sqitch-v1.0.0/t/plan_cmd.t App-Sqitch-v1.0.0/t/linelist.t App-Sqitch-v1.0.0/t/firebird.t App-Sqitch-v1.0.0/t/datetime.t App-Sqitch-v1.0.0/t/local.conf App-Sqitch-v1.0.0/t/checkout.t App-Sqitch-v1.0.0/t/engine.conf App-Sqitch-v1.0.0/t/sqitch.conf App-Sqitch-v1.0.0/t/target.conf App-Sqitch-v1.0.0/t/rework.conf App-Sqitch-v1.0.0/t/snowflake.t App-Sqitch-v1.0.0/t/mooseless.t App-Sqitch-v1.0.0/t/editor.conf App-Sqitch-v1.0.0/dist App-Sqitch-v1.0.0/dist/cpanfile App-Sqitch-v1.0.0/t/changelist.t App-Sqitch-v1.0.0/t/target_cmd.t App-Sqitch-v1.0.0/t/engine_cmd.t App-Sqitch-v1.0.0/lib App-Sqitch-v1.0.0/lib/sqitch.pod App-Sqitch-v1.0.0/t/cx_cmd_role.t App-Sqitch-v1.0.0/dist/sqitch.spec App-Sqitch-v1.0.0/t/templates.conf App-Sqitch-v1.0.0/t/multiplan.conf App-Sqitch-v1.0.0/t/plans App-Sqitch-v1.0.0/t/plans/dos.plan App-Sqitch-v1.0.0/t/conn_cmd_role.t App-Sqitch-v1.0.0/t/configuration.t App-Sqitch-v1.0.0/t/add_change.conf App-Sqitch-v1.0.0/t/sql App-Sqitch-v1.0.0/t/sql/sqitch.plan App-Sqitch-v1.0.0/lib/App App-Sqitch-v1.0.0/lib/App/Sqitch.pm App-Sqitch-v1.0.0/t/core_target.conf App-Sqitch-v1.0.0/t/item_formatter.t App-Sqitch-v1.0.0/t/plans/multi.plan App-Sqitch-v1.0.0/t/odbc App-Sqitch-v1.0.0/t/odbc/vertica.ini App-Sqitch-v1.0.0/lib/sqitch-add.pod App-Sqitch-v1.0.0/lib/sqitch-tag.pod App-Sqitch-v1.0.0/lib/sqitch-log.pod App-Sqitch-v1.0.0/inc/Menlo App-Sqitch-v1.0.0/inc/Menlo/Sqitch.pm App-Sqitch-v1.0.0/t/odbc/odbcinst.ini App-Sqitch-v1.0.0/t/lib/TestConfig.pm App-Sqitch-v1.0.0/t/lib/MockOutput.pm App-Sqitch-v1.0.0/lib/sqitch-help.pod App-Sqitch-v1.0.0/lib/sqitch-plan.pod App-Sqitch-v1.0.0/lib/sqitch-init.pod App-Sqitch-v1.0.0/lib/sqitchusage.pod App-Sqitch-v1.0.0/lib/sqitch-show.pod App-Sqitch-v1.0.0/lib/App/Sqitch App-Sqitch-v1.0.0/lib/App/Sqitch/X.pm App-Sqitch-v1.0.0/t/plans/widgets.plan App-Sqitch-v1.0.0/t/plans/pragmas.plan App-Sqitch-v1.0.0/t/engine App-Sqitch-v1.0.0/t/engine/sqitch.plan App-Sqitch-v1.0.0/lib/sqitchguides.pod App-Sqitch-v1.0.0/t/plans/dupe-tag.plan App-Sqitch-v1.0.0/lib/sqitch-status.pod App-Sqitch-v1.0.0/lib/sqitch-rework.pod App-Sqitch-v1.0.0/lib/sqitch-verify.pod App-Sqitch-v1.0.0/lib/sqitchchanges.pod App-Sqitch-v1.0.0/lib/sqitch-engine.pod App-Sqitch-v1.0.0/lib/sqitch-bundle.pod App-Sqitch-v1.0.0/lib/sqitch-revert.pod App-Sqitch-v1.0.0/lib/sqitch-target.pod App-Sqitch-v1.0.0/lib/sqitch-config.pod App-Sqitch-v1.0.0/lib/sqitch-deploy.pod App-Sqitch-v1.0.0/lib/sqitch-rebase.pod App-Sqitch-v1.0.0/t/lib/DBIEngineTest.pm App-Sqitch-v1.0.0/t/sql/verify App-Sqitch-v1.0.0/t/sql/verify/users.sql App-Sqitch-v1.0.0/t/sql/deploy App-Sqitch-v1.0.0/t/sql/deploy/users.sql App-Sqitch-v1.0.0/t/sql/deploy/roles.sql App-Sqitch-v1.0.0/lib/sqitchcommands.pod App-Sqitch-v1.0.0/lib/sqitch-upgrade.pod App-Sqitch-v1.0.0/lib/sqitchtutorial.pod App-Sqitch-v1.0.0/lib/App/Sqitch/Plan.pm App-Sqitch-v1.0.0/t/plans/bad-change.plan App-Sqitch-v1.0.0/lib/sqitch-checkout.pod App-Sqitch-v1.0.0/lib/App/Sqitch/Types.pm App-Sqitch-v1.0.0/t/plans/dupe-change.plan App-Sqitch-v1.0.0/t/sql/deploy/widgets.sql App-Sqitch-v1.0.0/lib/sqitch-passwords.pod App-Sqitch-v1.0.0/lib/sqitch-add-usage.pod App-Sqitch-v1.0.0/lib/sqitch-log-usage.pod App-Sqitch-v1.0.0/lib/sqitch-tag-usage.pod App-Sqitch-v1.0.0/lib/App/Sqitch/Config.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Engine.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Target.pm App-Sqitch-v1.0.0/t/plans/reserved-tag.plan App-Sqitch-v1.0.0/t/plans/project_deps.plan App-Sqitch-v1.0.0/t/plans/changes-only.plan App-Sqitch-v1.0.0/t/plans/dependencies.plan App-Sqitch-v1.0.0/t/engine/revert App-Sqitch-v1.0.0/t/engine/revert/users.sql App-Sqitch-v1.0.0/t/engine/deploy App-Sqitch-v1.0.0/t/engine/deploy/users.sql App-Sqitch-v1.0.0/lib/sqitch-init-usage.pod App-Sqitch-v1.0.0/lib/sqitch-plan-usage.pod App-Sqitch-v1.0.0/lib/sqitch-help-usage.pod App-Sqitch-v1.0.0/lib/sqitch-show-usage.pod App-Sqitch-v1.0.0/lib/App/Sqitch/Command.pm App-Sqitch-v1.0.0/inc/Module/Build App-Sqitch-v1.0.0/inc/Module/Build/Sqitch.pm App-Sqitch-v1.0.0/lib/sqitch-environment.pod App-Sqitch-v1.0.0/lib/App/Sqitch/DateTime.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Plan App-Sqitch-v1.0.0/lib/App/Sqitch/Plan/Tag.pm App-Sqitch-v1.0.0/t/engine/revert/widgets.sql App-Sqitch-v1.0.0/t/engine/deploy/widgets.sql App-Sqitch-v1.0.0/lib/sqitch-rebase-usage.pod App-Sqitch-v1.0.0/lib/sqitch-verify-usage.pod App-Sqitch-v1.0.0/lib/sqitch-target-usage.pod App-Sqitch-v1.0.0/lib/sqitch-config-usage.pod App-Sqitch-v1.0.0/lib/sqitch-deploy-usage.pod App-Sqitch-v1.0.0/lib/sqitch-engine-usage.pod App-Sqitch-v1.0.0/lib/sqitch-status-usage.pod App-Sqitch-v1.0.0/lib/sqitch-bundle-usage.pod App-Sqitch-v1.0.0/lib/sqitch-rework-usage.pod App-Sqitch-v1.0.0/lib/sqitch-revert-usage.pod App-Sqitch-v1.0.0/lib/App/Sqitch/Plan/Line.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Engine App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/pg.pm App-Sqitch-v1.0.0/etc/templates/revert App-Sqitch-v1.0.0/etc/templates/revert/pg.tmpl App-Sqitch-v1.0.0/etc/templates/verify App-Sqitch-v1.0.0/etc/templates/verify/pg.tmpl App-Sqitch-v1.0.0/etc/templates/deploy App-Sqitch-v1.0.0/etc/templates/deploy/pg.tmpl App-Sqitch-v1.0.0/lib/sqitchtutorial-mysql.pod App-Sqitch-v1.0.0/lib/sqitch-configuration.pod App-Sqitch-v1.0.0/lib/sqitch-upgrade-usage.pod App-Sqitch-v1.0.0/lib/App/Sqitch/Plan/Blank.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/pg.sql App-Sqitch-v1.0.0/lib/sqitchtutorial-sqlite.pod App-Sqitch-v1.0.0/lib/sqitchtutorial-exasol.pod App-Sqitch-v1.0.0/lib/sqitch-checkout-usage.pod App-Sqitch-v1.0.0/lib/sqitchtutorial-oracle.pod App-Sqitch-v1.0.0/lib/sqitch-authentication.pod App-Sqitch-v1.0.0/lib/App/Sqitch/Plan/Pragma.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Plan/Depend.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Plan/Change.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command App-Sqitch-v1.0.0/lib/App/Sqitch/Command/log.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/add.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/tag.pm App-Sqitch-v1.0.0/t/plans/deploy-and-revert.plan App-Sqitch-v1.0.0/t/lib/App/Sqitch/Engine App-Sqitch-v1.0.0/t/lib/App/Sqitch/Engine/bad.pm App-Sqitch-v1.0.0/lib/sqitchtutorial-vertica.pod App-Sqitch-v1.0.0/lib/App/Sqitch/Command/plan.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/show.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/help.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/init.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/mysql.pm App-Sqitch-v1.0.0/etc/templates/revert/mysql.tmpl App-Sqitch-v1.0.0/etc/templates/verify/mysql.tmpl App-Sqitch-v1.0.0/etc/templates/deploy/mysql.tmpl App-Sqitch-v1.0.0/t/lib/App/Sqitch/Command App-Sqitch-v1.0.0/t/lib/App/Sqitch/Command/bad.pm App-Sqitch-v1.0.0/t/lib/App/Sqitch/Engine/good.pm App-Sqitch-v1.0.0/lib/sqitchtutorial-firebird.pod App-Sqitch-v1.0.0/lib/App/Sqitch/ItemFormatter.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Plan/LineList.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/mysql.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/sqlite.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/oracle.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/exasol.pm App-Sqitch-v1.0.0/etc/templates/revert/sqlite.tmpl App-Sqitch-v1.0.0/etc/templates/revert/exasol.tmpl App-Sqitch-v1.0.0/etc/templates/revert/oracle.tmpl App-Sqitch-v1.0.0/etc/templates/verify/sqlite.tmpl App-Sqitch-v1.0.0/etc/templates/verify/exasol.tmpl App-Sqitch-v1.0.0/etc/templates/verify/oracle.tmpl App-Sqitch-v1.0.0/etc/templates/deploy/sqlite.tmpl App-Sqitch-v1.0.0/etc/templates/deploy/exasol.tmpl App-Sqitch-v1.0.0/etc/templates/deploy/oracle.tmpl App-Sqitch-v1.0.0/t/lib/App/Sqitch/Command/good.pm App-Sqitch-v1.0.0/lib/sqitchtutorial-snowflake.pod App-Sqitch-v1.0.0/lib/App/Sqitch/Role App-Sqitch-v1.0.0/lib/App/Sqitch/Role/DBIEngine.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/bundle.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/rebase.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/config.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/deploy.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/rework.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/engine.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/revert.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/target.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/verify.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/status.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/exasol.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/sqlite.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/oracle.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/vertica.pm App-Sqitch-v1.0.0/etc/templates/revert/vertica.tmpl App-Sqitch-v1.0.0/etc/templates/verify/vertica.tmpl App-Sqitch-v1.0.0/etc/templates/deploy/vertica.tmpl App-Sqitch-v1.0.0/t/plans/dupe-change-diff-tag.plan App-Sqitch-v1.0.0/t/engine/revert/func App-Sqitch-v1.0.0/t/engine/revert/func/add_user.sql App-Sqitch-v1.0.0/t/engine/deploy/func App-Sqitch-v1.0.0/t/engine/deploy/func/add_user.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Plan/ChangeList.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Command/upgrade.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/firebird.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/vertica.sql App-Sqitch-v1.0.0/etc/templates/revert/firebird.tmpl App-Sqitch-v1.0.0/etc/templates/verify/firebird.tmpl App-Sqitch-v1.0.0/etc/templates/deploy/firebird.tmpl App-Sqitch-v1.0.0/t/lib/upgradable_registries App-Sqitch-v1.0.0/t/lib/upgradable_registries/pg.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Command/checkout.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/firebird.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/snowflake.pm App-Sqitch-v1.0.0/etc/templates/revert/snowflake.tmpl App-Sqitch-v1.0.0/etc/templates/verify/snowflake.tmpl App-Sqitch-v1.0.0/etc/templates/deploy/snowflake.tmpl App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/snowflake.sql App-Sqitch-v1.0.0/t/lib/upgradable_registries/mysql.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Role/ContextCommand.pm App-Sqitch-v1.0.0/t/lib/upgradable_registries/exasol.sql App-Sqitch-v1.0.0/t/lib/upgradable_registries/sqlite.sql App-Sqitch-v1.0.0/t/lib/upgradable_registries/oracle.sql App-Sqitch-v1.0.0/t/lib/upgradable_registries/vertica.sql App-Sqitch-v1.0.0/t/lib/upgradable_registries/firebird.sql App-Sqitch-v1.0.0/t/engine/reworked/revert App-Sqitch-v1.0.0/t/engine/reworked/revert/users@alpha.sql App-Sqitch-v1.0.0/t/engine/reworked/deploy App-Sqitch-v1.0.0/t/engine/reworked/deploy/users@alpha.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Role/ConnectingCommand.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/pg-1.0.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/pg-1.1.sql App-Sqitch-v1.0.0/t/lib/upgradable_registries/snowflake.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Role/TargetConfigCommand.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Role/RevertDeployCommand.pm App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/mysql-1.0.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/mysql-1.1.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/sqlite-1.0.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/sqlite-1.1.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/exasol-1.1.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/exasol-1.0.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/oracle-1.0.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/oracle-1.1.sql App-Sqitch-v1.0.0/etc/tools App-Sqitch-v1.0.0/etc/tools/upgrade-registry-to-mysql-5.5.0.sql App-Sqitch-v1.0.0/etc/tools/upgrade-registry-to-mysql-5.6.4.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/vertica-1.1.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/vertica-1.0.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/firebird-1.1.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/firebird-1.0.sql App-Sqitch-v1.0.0/lib/LocaleData/fr_FR/LC_MESSAGES App-Sqitch-v1.0.0/lib/LocaleData/fr_FR/LC_MESSAGES/App-Sqitch.mo App-Sqitch-v1.0.0/lib/LocaleData/it_IT/LC_MESSAGES App-Sqitch-v1.0.0/lib/LocaleData/it_IT/LC_MESSAGES/App-Sqitch.mo App-Sqitch-v1.0.0/lib/LocaleData/de_DE/LC_MESSAGES App-Sqitch-v1.0.0/lib/LocaleData/de_DE/LC_MESSAGES/App-Sqitch.mo App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/snowflake-1.1.sql App-Sqitch-v1.0.0/lib/App/Sqitch/Engine/Upgrade/snowflake-1.0.sql Configuring D/DW/DWHEELER/App-Sqitch-v1.0.0.tar.gz with Build.PL >>> /data/fly2400/ap2400-300558/bin/perl-static Build.PL Created MYMETA.yml and MYMETA.json Creating new 'Build' script for 'App-Sqitch' version 'v1.0.0' DWHEELER/App-Sqitch-v1.0.0.tar.gz /data/fly2400/ap2400-300558/bin/perl-static Build.PL -- OK Running Build for D/DW/DWHEELER/App-Sqitch-v1.0.0.tar.gz >>> ./Build Building App-Sqitch DWHEELER/App-Sqitch-v1.0.0.tar.gz ./Build -- OK Running Build test >>> ./Build test verbose=1 /data/fly2400/ap2400-300558/bin/perl-static -i.bak -pe s{my \$SYSTEM_DIR = undef}{my \$SYSTEM_DIR = q{\/home\/fly2400\/ap2400\-300558\/site\/etc\/sqitch}} blib/lib/App/Sqitch/Config.pm t/add.t ............. 1..236 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 - App::Sqitch::Command::add does ContextCommand ok 5 - Options should be set up ok 6 - Should parse options ok 7 - Options should not conflict with core options ok 8 - Should have default configuration with no config or opts ok 9 - Should have get requires and conflicts options ok 10 - Should set up template directory option ok 11 - Should set up change name option ok 12 - Should die if --template-directory does not exist ok 13 - Missing directory ident should be "add" ok 14 - Missing directory error message should be correct ok 15 - Should die if --template-directory does is not a dir ok 16 - In alid directory ident should be "add" ok 17 - Invalid directory error message should be correct ok 18 - Should set up template name option ok 19 - Should have get template options ok 20 - Variables should by default not be loaded from config ok 21 - --set should be merged with config variables ok 22 - --set should be override config variables ok 23 - Requires should be an arrayref ok 24 - Conflicts should be an arrayref ok 25 - Notes should be an arrayref ok 26 - Varibles should be a hashref ok 27 - Default dir should be undef ok 28 - Default temlate_name should be undef ok 29 - Default with_scripts should be all true ok 30 - Default templates should be empty ok 31 - '_check_script' isa 'CODE' ok 32 - _check_script should be okay with script ok 33 - _check_script should die on nonexistent file ok 34 - Nonexistent file ident should be "add" ok 35 - Nonexistent file error message should be correct ok 36 - _check_script should die on directory ok 37 - Directory error ident should be "add" ok 38 - Directory error message should be correct ok 39 - Load another sqitch sqitch object ok 40 - Create add with template config ok 41 - Should load the config templates ok 42 - Add object with template directory ok 43 - Template name should be undef ok 44 - Should find all templates in directory ok 45 - Add object with template name ok 46 - Should find all templates in user directory ok 47 - Add object with another template name ok 48 - Should find all templates in systsem directory ok 49 - Add object with temporary template directory ok 50 - Template dir files should override others ok 51 - Add object with configured templates ok 52 - Template dir files should override others ok 53 - Add object requiring deploy template ok 54 - Should get error for missing deploy template ok 55 - Missing deploy template ident should be "add" ok 56 - Missing deploy template message should be correct ok 57 - Add object requiring revert template ok 58 - Should get error for missing revert template ok 59 - Missing revert template ident should be "add" ok 60 - Missing revert template message should be correct ok 61 - Add object requiring verify template ok 62 - Should get error for missing verify template ok 63 - Missing verify template ident should be "add" ok 64 - Missing verify template message should be correct ok 65 - _slurp() should load a reference to file contents ok 66 - test-add/sqitch_change_test.sql does not exist ok 67 - Create add command ok 68 - Write out a script ok 69 - test-add/sqitch_change_test.sql exists ok 70 - The template should have been evaluated ok 71 - Info should show $out created ok 72 - Create add cmd with requires and conflicts ok 73 - Write out a script with requires and conflicts ok 74 - Info should show $out created ok 75 - The template should have been evaluated with requires and conflicts ok 76 - test-add/sqitch_change_test.sql does not exist ok 77 - Create add command ok 78 - Write out a script ok 79 - test-add/sqitch_change_test.sql exists ok 80 - The template should have been evaluated ok 81 - Info should show $out created ok 82 - Create add cmd with requires and conflicts ok 83 - Write out a script with requires and conflicts ok 84 - Info should show $out created ok 85 - The template should have been evaluated with requires and conflicts ok 86 - Create add command ok 87 - Should get an exception on TT syntax error ok 88 - TT exception ident should be "add" ok 89 - TT exception message should include the original error message ok 90 - Create another add with template_directory ok 91 - Should not have "widgets_table" in plan ok 92 - dir test-add/deploy does not exist ok 93 - dir test-add/revert does not exist ok 94 - dir test-add/verify does not exist ok 95 - Add change "widgets_table" ok 96 - 'Added change' isa 'App::Sqitch::Plan::Change' ok 97 - Change name should be set ok 98 - It should have no requires ok 99 - It should have no conflicts ok 100 - It should have prompted for a note ok 101 - test-add/deploy/widgets_table.sql exists ok 102 - test-add/revert/widgets_table.sql exists ok 103 - test-add/verify/widgets_table.sql exists ok 104 - Deploy script should look right ok 105 - Revert script should look right ok 106 - Verify script should look right ok 107 - Info should have reported file creation ok 108 - Create another add with template_directory and no verify script ok 109 - test-add/deploy/foo_table.sql exists ok 110 - test-add/revert/foo_table.sql does not exist ok 111 - test-add/ferify/foo_table.sql does not exist ok 112 - Should not have "foo_table" in plan ok 113 - Add change "foo_table" ok 114 - test-add/deploy/foo_table.sql exists ok 115 - test-add/revert/foo_table.sql exists ok 116 - test-add/ferify/foo_table.sql does not exist ok 117 - '"foo_table" change' isa 'App::Sqitch::Plan::Change' ok 118 - It should have prompted for a note ok 119 - Change name should be set to "foo_table" ok 120 - It should have requires ok 121 - It should have conflicts ok 122 - It should have a comment ok 123 - Info should report skipping file and include dependencies ok 124 - Should get an error on unkonwn argument ok 125 - Unkown argument error ident should be "add" ok 126 - Unknown argument error message should be correct ok 127 - Should get an error for conflict with target name ok 128 - Conflicting target error ident should be "add" ok 129 - Conflicting target error message should be correct ok 130 - No name arg or option should yield usage ok 131 - No args should be passed to usage ok 132 - No name arg or option should yield usage ok 133 - No args should be passed to usage ok 134 - Create another add with open_editor ok 135 - Should not have "open_editor" in plan ok 136 - Add change "open_editor" ok 137 - 'Added change' isa 'App::Sqitch::Plan::Change' ok 138 - Change name should be set ok 139 - It should have prompted to edit sql files ok 140 - test-add/deploy/open_editor.sql exists ok 141 - test-add/revert/open_editor.sql exists ok 142 - test-add/verify/open_editor.sql exists ok 143 - Deploy script should look right ok 144 - Revert script should look right ok 145 - Verify script should look right ok 146 - Info should have reported file creation ok 147 - Create another add with custom script and no verify ok 148 - Add change "custom_script" ok 149 - 'Added change' isa 'App::Sqitch::Plan::Change' ok 150 - Change name should be set ok 151 - It should have no requires ok 152 - It should have no conflicts ok 153 - It should have prompted for a note ok 154 - test-add/deploy/custom_script.sql exists ok 155 - test-add/revert/custom_script.sql exists ok 156 - test-add/whatev/custom_script.sql exists ok 157 - test-add/verify/custom_script.sql does not exist ok 158 - Deploy script should look right ok 159 - Revert script should look right ok 160 - Whatev script should look right ok 161 - Whatev script should be based on the MySQL verify script ok 162 - Info should have reported file creation ok 163 - 'Added change in reloaded plan' isa 'App::Sqitch::Plan::Change' ok 164 - Create another add with custom multiplan config ok 165 - Should have three targets ok 166 - Add change "widgets" to all plans ok 167 - Should have "widgets" in pg plan ok 168 - Should have "widgets" in sqlite plan ok 169 - Should have "widgets" in mysql plan ok 170 - pg/deploy/widgets.sql exists ok 171 - pg/revert/widgets.sql exists ok 172 - pg/verify/widgets.sql exists ok 173 - sqlite/deploy/widgets.sql exists ok 174 - sqlite/revert/widgets.sql exists ok 175 - sqlite/verify/widgets.sql exists ok 176 - mysql/deploy/widgets.sql exists ok 177 - mysql/revert/widgets.sql exists ok 178 - mysql/verify/widgets.sql exists ok 179 - Info should have reported all script creations and plan updates ok 180 - Should get an error for --all and a target arg ok 181 - Mixed arguments error ident should be "add" ok 182 - Mixed arguments error message should be correct ok 183 - Create yet another add with custom multiplan config ok 184 - Add change "choc" to the sqlite plan ok 185 - Should still have three targets ok 186 - Should not have "choc" in the pg plan ok 187 - Should not have "choc" in the mysql plan ok 188 - Should have "choc" in the sqlite plan ok 189 - sqlite/deploy/choc.sql exists ok 190 - sqlite/revert/choc.sql exists ok 191 - sqlite/verify/choc.sql exists ok 192 - pg/deploy/choc.sql does not exist ok 193 - pg/revert/choc.sql does not exist ok 194 - pg/verify/choc.sql does not exist ok 195 - mysql/deploy/choc.sql does not exist ok 196 - mysql/revert/choc.sql does not exist ok 197 - mysql/verify/choc.sql does not exist ok 198 - Info should have reported sqlite choc script creations and plan updates ok 199 - Create another add with single plan, multi-target config ok 200 - Should have two targets ok 201 - Targets should use the same plan file ok 202 - Add change "widgets" to all plans ok 203 - Should have "widgets" in the plan ok 204 - pg/deploy/widgets.sql exists ok 205 - pg/revert/widgets.sql exists ok 206 - pg/verify/widgets.sql exists ok 207 - sqlite/deploy/widgets.sql exists ok 208 - sqlite/revert/widgets.sql exists ok 209 - sqlite/verify/widgets.sql exists ok 210 - Should have the proper files listed in the note promt ok 211 - Info should have reported all script creations and one plan update ok 212 - Create another add with two targets, one top dir ok 213 - Should have two targets ok 214 - First target plan should be in pg.plan ok 215 - Second target plan should be in sqlite.plan ok 216 - Add change "widgets" to all plans ok 217 - Should have "widgets" in pg plan ok 218 - Should have "widgets" in sqlite plan ok 219 - deploy/widgets.sql exists ok 220 - revert/widgets.sql exists ok 221 - verify/widgets.sql exists ok 222 - Should have the proper files listed in the note promt ok 223 - Info should have script creations and skips ok 224 - App::Sqitch::Command::add->can(...) ok 225 - Create a App::Sqitch::Command::add object again ok 226 - Base _parse_opts should return the script config ok 227 - _parse_opts() hould use options spec ok 228 - _parse_opts() should parse options spec ok 229 - Args array should be cleared of options ok 230 - _parse_opts() should parse --set options ok 231 - Args array should be cleared of options ok 232 - _parse_opts() should parse --set options with repeting key ok 233 - Args array should be cleared of options ok 234 - _parse_opts() should parse --with, --without, and --user ok 235 - Args array should be cleared of options ok 236 - no warnings ok # Failed test 'Default user_name should be set from system' # at t/base.t line 56. # Looks like you failed 1 test of 189. t/base.t ............ 1..189 ok 1 - use App::Sqitch; ok 2 - App::Sqitch->can(...) ok 3 - 'A configured object' isa 'App::Sqitch' ok 4 - Configured verbosity should override default ok 5 - 'A configured object' isa 'App::Sqitch' ok 6 - Verbosity option should override configuration ok 7 - 'A new object' isa 'App::Sqitch' ok 8 - Default verbosity should be 1 ok 9 - Should have default sysuser from system not ok 10 - Default user_name should be set from system ok 11 - Default user_email should be set from system ok 12 - 'Another new object' isa 'App::Sqitch' ok 13 - SQITCH_ORIG_SYSUER should override system username ok 14 - SQITCH_ORIG_FULLNAME should override system user full name ok 15 - SQITCH_ORIG_EMAIL should override system-derived email ok 16 - 'Another new object' isa 'App::Sqitch' ok 17 - SQITCH_FULLNAME should override originating host user full name ok 18 - SQITCH_EMAIL should override originating host email ok 19 - Should get 0 from go() ok 20 - 'Command' isa 'App::Sqitch::Command::help' ok 21 - Extra args should be passed to execute ok 22 - An object of class 'App::Sqitch' isa 'App::Sqitch' ok 23 - Get the Sqitch config ok 24 - Should have local config overriding user ok 25 - Should fall back on user config ok 26 - Should have read user name from configuration ok 27 - Should have read user email from configuration ok 28 - Should have no options ok 29 - Should get 0 from go() again ok 30 - An object of class 'App::Sqitch' isa 'App::Sqitch' ok 31 - Should have read user name from environment ok 32 - Should have read user email from environment ok 33 - Go should return 2 on Sqitch exception ok 34 - The error should have been vented ok 35 - The stack trace should have been sent to trace ok 36 - Go should return exitval on another exception ok 37 - Both the message and the trace should have been vented ok 38 - Nothing should have been traced ok 39 - Go should return 2 on a third Sqitch exception ok 40 - Should have one thing vented ok 41 - And it should include our message ok 42 - editor should use $EDITOR ok 43 - editor should prefer $VISUAL over $EDITOR ok 44 - editor should prefer core.editor over $VISUAL ok 45 - editor should prefer $SQITCH_EDITOR over $VISUAL ok 46 - editor should use use parameter regardless of environment ok 47 - editor fall back on vi when not Windows ok 48 - pager program should be picked up from PAGER when SQITCH_PAGER and core.pager are not set ok 49 - 'morez pager' isa 'IO::Handle' ok 50 - SQITCH_PAGER should take precedence over PAGER ok 51 - 'less -myway' isa 'IO::Handle' ok 52 - `core.pager' setting should take precedence over PAGER when SQITCH_PAGER is not set. ok 53 - 'morezz pager' isa 'IO::Handle' ok 54 - SQITCH_PAGER should take precedence over both PAGER and the `core.pager' setting. ok 55 - 'less -rules' isa 'IO::Handle' ok 56 - trace should work ok 57 - Should get no trace output for verbosity 2 ok 58 - trace_literal should work ok 59 - Should get no trace_literal output for verbosity 2 ok 60 - debug should work ok 61 - Should get no debug output for verbosity 1 ok 62 - debug_literal should work ok 63 - Should get no debug_literal output for verbosity 1 ok 64 - info should work ok 65 - Should get no info output for verbosity 0 ok 66 - info_literal should work ok 67 - Should get no info_literal output for verbosity 0 ok 68 - comment should work ok 69 - comment should work with verbosity 0 ok 70 - comment_literal should work ok 71 - comment_literal should work with verbosity 0 ok 72 - emit should work ok 73 - emit should work even with verbosity 0 ok 74 - emit_literal should work ok 75 - emit_literal should work even with verbosity 0 ok 76 - warn should work ok 77 - warn_literal should work ok 78 - vent should work ok 79 - vent_literal should work ok 80 - App::Sqitch->can('run') ok 81 - Should get success back from run echo ok 82 - The echo script should have run ok 83 - Nothing should have gone to STDERR ok 84 - run die should, well, die ok 85 - The die script should have its STDOUT ummolested ok 86 - The die script should have its STDERR unmolested ok 87 - App::Sqitch->can('shell') ok 88 - Should get success back from shell echo ok 89 - The echo script should have shell ok 90 - Nothing should have gone to STDERR ok 91 - shell die should, well, die ok 92 - The die script should have its STDOUT ummolested ok 93 - The die script should have its STDERR unmolested ok 94 - quote_shell should work ok 95 - App::Sqitch->can('capture') ok 96 - The echo script output should have been returned ok 97 - Should get an error if the command errors out ok 98 - The die script STDERR should have passed through ok 99 - App::Sqitch->can('probe') ok 100 - Should have just chomped first line of output ok 101 - App::Sqitch->can('spool') ok 102 - Spool to read.pl ok 103 - Data should have been sent to STDOUT by read.pl ok 104 - Spool to read.pl ok 105 - All data should have been sent to STDOUT by read.pl ok 106 - Should get error when die.pl dies ok 107 - Error ident should be "io" ok 108 - The error message should be one of the I/O messages ok 109 - The die script STDERR should have passed through ok 110 - Should get an error for a bad command ok 111 - Error ident should be "io" ok 112 - Error message should be about inability to exec ok 113 - Should get error for no prompt message ok 114 - No prompt ident should be "DEV" ok 115 - No prompt error message should be correct ok 116 - Prompt should return input ok 117 - Prompt should prompt ok 118 - Prompt with default should return input ok 119 - Prompt should prompt with default ok 120 - Prompt with undef default should return input ok 121 - Prompt should prompt with bracket for undef default ok 122 - Prompt should return default for undef input ok 123 - Prompt should show default when undef input ok 124 - Prompt should return input for empty input ok 125 - Prompt should show default when empty input ok 126 - Should get error when uattended and no default ok 127 - Unattended error ident should be "io" ok 128 - Unattended error message should be correct ok 129 - Prompt should return input ok 130 - Prompt should show default as selected when unattended ok 131 - Should get error for no ask_yes_no message ok 132 - No ask_yes_no ident should be "DEV" ok 133 - No ask_yes_no error message should be correct ok 134 - ask_yes_no() should return true for "Yes" input ok 135 - ask_yes_no() should prompt for "Yes" ok 136 - ask_yes_no() should return true for "yes" input ok 137 - ask_yes_no() should prompt for "yes" ok 138 - ask_yes_no() should return true for "YES" input ok 139 - ask_yes_no() should prompt for "YES" ok 140 - ask_yes_no() should return true for "y" input ok 141 - ask_yes_no() should prompt for "y" ok 142 - ask_yes_no() should return true for "Ye" input ok 143 - ask_yes_no() should prompt for "Ye" ok 144 - ask_yes_no() should return false for "No" input ok 145 - ask_yes_no() should prompt for "No" ok 146 - ask_yes_no() should return false for "no" input ok 147 - ask_yes_no() should prompt for "no" ok 148 - ask_yes_no() should return false for "NO" input ok 149 - ask_yes_no() should prompt for "NO" ok 150 - ask_yes_no() should return false for "n" input ok 151 - ask_yes_no() should prompt for "n" ok 152 - ask_yes_no() should return false for "No" input ok 153 - ask_yes_no() should prompt for "No" ok 154 - ask_yes_no() should return true for true default ok 155 - ask_yes_no() should prompt and show default "Yes" ok 156 - ask_yes_no() should return false for false default ok 157 - ask_yes_no() should prompt and show default "No" ok 158 - Should get error for bad answers ok 159 - Bad answers ident should be "IO" ok 160 - Bad answers message should be correct ok 161 - Should get error for no ask_y_n message ok 162 - No ask_y_n ident should be "DEV" ok 163 - No ask_y_n error message should be correct ok 164 - Should get a deprecation warning from ask_y_n ok 165 - Should get error for invalid ask_y_n default ok 166 - Invalid ask_y_n default ident should be "DEV" ok 167 - Invalid ask_y_n default error message should be correct ok 168 - ask_y_n should return true for "y" input ok 169 - ask_y_n() should prompt ok 170 - ask_y_n should return false for "n" input ok 171 - ask_y_n() should prompt for no ok 172 - ask_y_n should return false for "N" input ok 173 - ask_y_n() should prompt for no ok 174 - ask_y_n should return true for "YE" input ok 175 - ask_y_n() should prompt for yes ok 176 - ask_y_n should return true default "Yes" ok 177 - ask_y_n() should prompt and show default "Yes" ok 178 - ask_y_n should return false default "No" ok 179 - ask_y_n() should prompt and show default "No" ok 180 - Should get error for bad answers ok 181 - Bad answers ident should be "IO" ok 182 - Bad answers message should be correct ok 183 - _readline should work ok 184 - _readline should return undef when unattended ok 185 - Localied string should be valid UTF-8 ok 186 - Localied string should be decoded ok 187 - Localied string should be valid UTF-8 ok 188 - Localied string should be decoded ok 189 - no warnings Dubious, test returned 1 (wstat 256, 0x100) Failed 1/189 subtests 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..306 ok 1 - Load a sqitch object ok 2 - 'bundle command' isa 'App::Sqitch::Command::bundle' ok 3 - App::Sqitch::Command::bundle->can(...) ok 4 - App::Sqitch::Command::bundle does ContextCommand ok 5 - Should have dest_dir option ok 6 - Should parse options ok 7 - Options should not conflict with core options ok 8 - Default dest_dir should be bundle/ ok 9 - Should have dest top dir ok 10 - Default config should be empty ok 11 - --dest_dir should be converted to a path object by configure() ok 12 - --from and --to should be passed through configure ok 13 - Load a sqitch object with top_dir ok 14 - bundle.dest_dir config should be converted to a path object by configure() ok 15 - 'another bundle command' isa 'App::Sqitch::Command::bundle' ok 16 - dest_dir should be "_build/sql" ok 17 - Dest top dir should be _build/sql/sql/ ok 18 - Dest deploy dir should be _build/sql/sql/deploy ok 19 - Dest revert dir should be _build/sql/sql/revert ok 20 - Dest verify dir should be _build/sql/sql/verify ok 21 - Load a sqitch object with engine top_dir ok 22 - 'engine bundle command' isa 'App::Sqitch::Command::bundle' ok 23 - dest_dir should again be "_build/sql" ok 24 - Dest deploy dir should be _build/sql/engine/deploy ok 25 - Dest revert dir should be _build/sql/engine/revert ok 26 - Dest verify dir should be _build/sql/engine/verify ok 27 - Path delete.me should not exist ok 28 - Create delete.me ok 29 - Path delete.me should now exist ok 30 - The mkdir info should have been output ok 31 - Create delete.me again ok 32 - Path delete.me should still exist ok 33 - Nothing should have been emitted ok 34 - Should fail on permission issue ok 35 - Permission error should have ident "bundle" ok 36 - The permission error should be formatted properly ok 37 - File delete.me/deploy/roles.sql should not exist ok 38 - Copy sql/deploy/roles.sql to delete.me/deploy/roles.sql ok 39 - File delete.me/deploy/roles.sql should now exist ok 40 - delete.me/deploy/roles.sql and sql/deploy/roles.sql contents are the same ok 41 - The mkdir and copy info should have been output ok 42 - Copy sql/deploy/roles.sql to delete.me/deploy/roles.sql again ok 43 - File delete.me/deploy/roles.sql should still exist ok 44 - delete.me/deploy/roles.sql and sql/deploy/roles.sql contents are the same ok 45 - Should have no debugging output ok 46 - Copy sql/deploy/roles.sql to old delete.me/deploy/roles.sql ok 47 - File delete.me/deploy/roles.sql should still be there ok 48 - delete.me/deploy/roles.sql and sql/deploy/roles.sql contents are the same ok 49 - Only copy message should again have been emitted ok 50 - Copy sql/deploy/users.sql to delete.me/deploy/roles.sql ok 51 - File delete.me/deploy/roles.sql should now exist ok 52 - delete.me/deploy/roles.sql and sql/deploy/users.sql contents are the same ok 53 - Again only Copy message should have been emitted ok 54 - Should get exception when source file does not exist ok 55 - Nonexistent file error ident should be "bundle" ok 56 - Nonexistent file error message should be correct ok 57 - Should get exception when copy returns false ok 58 - Copy fail ident should be "bundle" ok 59 - Copy fail error message should be correct ok 60 - _build/sql/sqitch.conf does not exist ok 61 - Bundle the config file ok 62 - _build/sql/sqitch.conf exists ok 63 - _build/sql/sqitch.conf and sqitch.conf contents are the same ok 64 - Should have config notice ok 65 - _build/sql/engine/sqitch.plan does not exist ok 66 - Bundle the default target plan file ok 67 - _build/sql/engine/sqitch.plan exists ok 68 - _build/sql/engine/sqitch.plan and engine/sqitch.plan contents are the same ok 69 - Should have plan notice ok 70 - '--from bundle command' isa 'App::Sqitch::Command::bundle' ok 71 - From should be "widgets" ok 72 - Bundle the default target plan file with from arg ok 73 - Statement of the bits written should have been emitted ok 74 - Plan should contain only changes from "widgets" on ok 75 - '--to bundle command' isa 'App::Sqitch::Command::bundle' ok 76 - To should be "users" ok 77 - Bundle the default target plan file with to arg ok 78 - Statement of the bits written should have been emitted ok 79 - Plan should have written only "users" and its tags ok 80 - _build/sql/engine/reworked/deploy/users@alpha.sql does not exist ok 81 - _build/sql/engine/reworked/revert/users@alpha.sql does not exist ok 82 - _build/sql/engine/deploy/widgets.sql does not exist ok 83 - _build/sql/engine/revert/widgets.sql does not exist ok 84 - _build/sql/engine/deploy/func/add_user.sql does not exist ok 85 - _build/sql/engine/revert/func/add_user.sql does not exist ok 86 - _build/sql/engine/deploy/users.sql does not exist ok 87 - _build/sql/engine/revert/users.sql does not exist ok 88 - 'another bundle command' isa 'App::Sqitch::Command::bundle' ok 89 - Bundle default target scripts ok 90 - _build/sql/engine/reworked/deploy/users@alpha.sql exists ok 91 - _build/sql/engine/reworked/revert/users@alpha.sql exists ok 92 - _build/sql/engine/deploy/widgets.sql exists ok 93 - _build/sql/engine/revert/widgets.sql exists ok 94 - _build/sql/engine/deploy/func/add_user.sql exists ok 95 - _build/sql/engine/revert/func/add_user.sql exists ok 96 - _build/sql/engine/deploy/users.sql exists ok 97 - _build/sql/engine/revert/users.sql exists ok 98 - Should have change notices ok 99 - 'bundle from "widgets"' isa 'App::Sqitch::Command::bundle' ok 100 - Bundle scripts ok 101 - _build/sql/engine/reworked/deploy/users@alpha.sql does not exist ok 102 - _build/sql/engine/reworked/revert/users@alpha.sql does not exist ok 103 - _build/sql/engine/deploy/widgets.sql exists ok 104 - _build/sql/engine/revert/widgets.sql exists ok 105 - Should have changes only from "widets" onward in notices ok 106 - 'bundle to "users"' isa 'App::Sqitch::Command::bundle' ok 107 - Bundle scripts ok 108 - _build/sql/engine/reworked/deploy/users@alpha.sql exists ok 109 - _build/sql/engine/reworked/revert/users@alpha.sql exists ok 110 - _build/sql/engine/deploy/widgets.sql does not exist ok 111 - _build/sql/engine/revert/widgets.sql does not exist ok 112 - Should have only "users" in change notices ok 113 - Should die on nonexistent from change ok 114 - Nonexistent from change ident should be "bundle" ok 115 - Nonexistent from message change should be correct ok 116 - Should die on nonexistent to change ok 117 - Nonexistent to change ident should be "bundle" ok 118 - Nonexistent to message change should be correct ok 119 - _build/sql/sqitch.conf does not exist ok 120 - _build/sql/engine/sqitch.plan does not exist ok 121 - _build/sql/engine/reworked/deploy/users@alpha.sql does not exist ok 122 - _build/sql/engine/reworked/revert/users@alpha.sql does not exist ok 123 - _build/sql/engine/deploy/widgets.sql does not exist ok 124 - _build/sql/engine/revert/widgets.sql does not exist ok 125 - _build/sql/engine/deploy/func/add_user.sql does not exist ok 126 - _build/sql/engine/revert/func/add_user.sql does not exist ok 127 - _build/sql/engine/deploy/users.sql does not exist ok 128 - _build/sql/engine/revert/users.sql does not exist ok 129 - 'another bundle command' isa 'App::Sqitch::Command::bundle' ok 130 - Execute! ok 131 - _build/sql/sqitch.conf exists ok 132 - _build/sql/engine/sqitch.plan exists ok 133 - _build/sql/engine/reworked/deploy/users@alpha.sql exists ok 134 - _build/sql/engine/reworked/revert/users@alpha.sql exists ok 135 - _build/sql/engine/deploy/widgets.sql exists ok 136 - _build/sql/engine/revert/widgets.sql exists ok 137 - _build/sql/engine/deploy/func/add_user.sql exists ok 138 - _build/sql/engine/revert/func/add_user.sql exists ok 139 - _build/sql/engine/deploy/users.sql exists ok 140 - _build/sql/engine/revert/users.sql exists ok 141 - Should have all notices ok 142 - _build/multiplan.conf does not exist ok 143 - _build/sql/sqitch.plan does not exist ok 144 - _build/sql/deploy/roles.sql does not exist ok 145 - _build/sql/deploy/users.sql does not exist ok 146 - _build/sql/verify/users.sql does not exist ok 147 - _build/sql/deploy/widgets.sql does not exist ok 148 - _build/engine/sqitch.plan does not exist ok 149 - _build/engine/reworked/deploy/users@alpha.sql does not exist ok 150 - _build/engine/reworked/revert/users@alpha.sql does not exist ok 151 - _build/engine/deploy/widgets.sql does not exist ok 152 - _build/engine/revert/widgets.sql does not exist ok 153 - _build/engine/deploy/func/add_user.sql does not exist ok 154 - _build/engine/revert/func/add_user.sql does not exist ok 155 - _build/engine/deploy/users.sql does not exist ok 156 - _build/engine/revert/users.sql does not exist ok 157 - 'all multiplan bundle command' isa 'App::Sqitch::Command::bundle' ok 158 - Execute multi-target bundle! ok 159 - _build/multiplan.conf exists ok 160 - _build/sql/sqitch.plan exists ok 161 - _build/sql/deploy/roles.sql exists ok 162 - _build/sql/deploy/users.sql exists ok 163 - _build/sql/verify/users.sql exists ok 164 - _build/sql/deploy/widgets.sql exists ok 165 - _build/engine/sqitch.plan exists ok 166 - _build/engine/reworked/deploy/users@alpha.sql exists ok 167 - _build/engine/reworked/revert/users@alpha.sql exists ok 168 - _build/engine/deploy/widgets.sql exists ok 169 - _build/engine/revert/widgets.sql exists ok 170 - _build/engine/deploy/func/add_user.sql exists ok 171 - _build/engine/revert/func/add_user.sql exists ok 172 - _build/engine/deploy/users.sql exists ok 173 - _build/engine/revert/users.sql exists ok 174 - Should get an error for --all and a target arg ok 175 - Mixed arguments error ident should be "bundle" ok 176 - Mixed arguments error message should be correct ok 177 - 'multiplan bundle command' isa 'App::Sqitch::Command::bundle' ok 178 - Execute with no arg ok 179 - _build/multiplan.conf exists ok 180 - _build/engine/sqitch.plan exists ok 181 - _build/engine/reworked/deploy/users@alpha.sql exists ok 182 - _build/engine/reworked/revert/users@alpha.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/engine/deploy/users.sql exists ok 188 - _build/engine/revert/users.sql exists ok 189 - _build/sql/sqitch.plan does not exist ok 190 - _build/sql/deploy/roles.sql does not exist ok 191 - _build/sql/deploy/users.sql does not exist ok 192 - _build/sql/verify/users.sql does not exist ok 193 - _build/sql/deploy/widgets.sql does not exist ok 194 - Execute with bundle.all config ok 195 - _build/multiplan.conf exists ok 196 - _build/engine/sqitch.plan exists ok 197 - _build/engine/reworked/deploy/users@alpha.sql exists ok 198 - _build/engine/reworked/revert/users@alpha.sql exists ok 199 - _build/engine/deploy/widgets.sql exists ok 200 - _build/engine/revert/widgets.sql exists ok 201 - _build/engine/deploy/func/add_user.sql exists ok 202 - _build/engine/revert/func/add_user.sql exists ok 203 - _build/engine/deploy/users.sql exists ok 204 - _build/engine/revert/users.sql exists ok 205 - _build/sql/sqitch.plan exists ok 206 - _build/sql/deploy/roles.sql exists ok 207 - _build/sql/deploy/users.sql exists ok 208 - _build/sql/verify/users.sql exists ok 209 - _build/sql/deploy/widgets.sql exists ok 210 - Execute with target arg "pg" ok 211 - _build/multiplan.conf exists ok 212 - _build/engine/sqitch.plan exists ok 213 - _build/engine/reworked/deploy/users@alpha.sql exists ok 214 - _build/engine/reworked/revert/users@alpha.sql exists ok 215 - _build/engine/deploy/widgets.sql exists ok 216 - _build/engine/revert/widgets.sql exists ok 217 - _build/engine/deploy/func/add_user.sql exists ok 218 - _build/engine/revert/func/add_user.sql exists ok 219 - _build/engine/deploy/users.sql exists ok 220 - _build/engine/revert/users.sql exists ok 221 - _build/sql/sqitch.plan does not exist ok 222 - _build/sql/deploy/roles.sql does not exist ok 223 - _build/sql/deploy/users.sql does not exist ok 224 - _build/sql/verify/users.sql does not exist ok 225 - _build/sql/deploy/widgets.sql does not exist ok 226 - Execute with plan file arg "engine/sqitch.plan" ok 227 - _build/multiplan.conf exists ok 228 - _build/engine/sqitch.plan exists ok 229 - _build/engine/reworked/deploy/users@alpha.sql exists ok 230 - _build/engine/reworked/revert/users@alpha.sql exists ok 231 - _build/engine/deploy/widgets.sql exists ok 232 - _build/engine/revert/widgets.sql exists ok 233 - _build/engine/deploy/func/add_user.sql exists ok 234 - _build/engine/revert/func/add_user.sql exists ok 235 - _build/engine/deploy/users.sql exists ok 236 - _build/engine/revert/users.sql exists ok 237 - _build/sql/sqitch.plan does not exist ok 238 - _build/sql/deploy/roles.sql does not exist ok 239 - _build/sql/deploy/users.sql does not exist ok 240 - _build/sql/verify/users.sql does not exist ok 241 - _build/sql/deploy/widgets.sql does not exist ok 242 - Execute with target arg "mysql" ok 243 - _build/multiplan.conf exists ok 244 - _build/sql/sqitch.plan exists ok 245 - _build/sql/deploy/roles.sql exists ok 246 - _build/sql/deploy/users.sql exists ok 247 - _build/sql/verify/users.sql exists ok 248 - _build/sql/deploy/widgets.sql exists ok 249 - _build/engine/sqitch.plan does not exist ok 250 - _build/engine/reworked/deploy/users@alpha.sql does not exist ok 251 - _build/engine/reworked/revert/users@alpha.sql does not exist ok 252 - _build/engine/deploy/widgets.sql does not exist ok 253 - _build/engine/revert/widgets.sql does not exist ok 254 - _build/engine/deploy/func/add_user.sql does not exist ok 255 - _build/engine/revert/func/add_user.sql does not exist ok 256 - _build/engine/deploy/users.sql does not exist ok 257 - _build/engine/revert/users.sql does not exist ok 258 - Execute with plan file arg "sql/sqitch.plan" ok 259 - _build/multiplan.conf exists ok 260 - _build/sql/sqitch.plan exists ok 261 - _build/sql/deploy/roles.sql exists ok 262 - _build/sql/deploy/users.sql exists ok 263 - _build/sql/verify/users.sql exists ok 264 - _build/sql/deploy/widgets.sql exists ok 265 - _build/engine/sqitch.plan does not exist ok 266 - _build/engine/reworked/deploy/users@alpha.sql does not exist ok 267 - _build/engine/reworked/revert/users@alpha.sql does not exist ok 268 - _build/engine/deploy/widgets.sql does not exist ok 269 - _build/engine/revert/widgets.sql does not exist ok 270 - _build/engine/deploy/func/add_user.sql does not exist ok 271 - _build/engine/revert/func/add_user.sql does not exist ok 272 - _build/engine/deploy/users.sql does not exist ok 273 - _build/engine/revert/users.sql does not exist ok 274 - 'to/from bundle command' isa 'App::Sqitch::Command::bundle' ok 275 - Execute to/from bundle! ok 276 - _build/multiplan.conf exists ok 277 - _build/engine/sqitch.plan exists ok 278 - _build/engine/deploy/widgets.sql exists ok 279 - _build/engine/revert/widgets.sql exists ok 280 - _build/engine/reworked/deploy/users@alpha.sql does not exist ok 281 - _build/engine/reworked/revert/users@alpha.sql does not exist ok 282 - _build/engine/deploy/func/add_user.sql does not exist ok 283 - _build/engine/revert/func/add_user.sql does not exist ok 284 - _build/engine/deploy/users.sql does not exist ok 285 - _build/engine/revert/users.sql does not exist ok 286 - Plan should have written only "widgets" ok 287 - 'another bundle command' isa 'App::Sqitch::Command::bundle' ok 288 - Execute bundle with to/from args! ok 289 - _build/multiplan.conf exists ok 290 - _build/engine/sqitch.plan exists ok 291 - _build/engine/deploy/widgets.sql exists ok 292 - _build/engine/revert/widgets.sql exists ok 293 - _build/engine/deploy/func/add_user.sql exists ok 294 - _build/engine/revert/func/add_user.sql exists ok 295 - _build/engine/deploy/users.sql exists ok 296 - _build/engine/revert/users.sql exists ok 297 - _build/engine/reworked/deploy/users@alpha.sql does not exist ok 298 - _build/engine/reworked/revert/users@alpha.sql does not exist ok 299 - Plan should have written "widgets" and "func/add_user" ok 300 - Should get an exception for unknown argument ok 301 - Unknown argument error ident shoud be "bundle" ok 302 - Unknown argument error message should be correct ok 303 - Should get an exception for unknown arguments ok 304 - Unknown arguments error ident shoud be "bundle" ok 305 - Unknown arguments error message should be correct ok 306 - no warnings ok t/change.t .......... 1..92 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 dir should be correct ok 11 - The deploy file should be correct ok 12 - The revert dir should be correct ok 13 - The revert file should be correct ok 14 - The verify dir should be correct ok 15 - The verify file should be correct ok 16 - The change should not be reworked ok 17 - path_segments should not include suffix ok 18 - Nonexistent deploy script hash should be undef ok 19 - Deploy script hash should be correct ok 20 - Tag-qualified name should be tagged with @HEAD ok 21 - Add a rework tag ok 22 - Reworked tag should be stored ok 23 - The change should be reworked ok 24 - path_segments should now include suffix ok 25 - The change should not be reworked ok 26 - Add two rework tags ok 27 - The change should again be reworked ok 28 - path_segments should now include the correct suffixc ok 29 - Name should format as "foo" ok 30 - Name should format with tags as "foo" ok 31 - Tag-qualified Name should format as "foo@beta" ok 32 - Dependencies should format as "" ok 33 - Name should format with dependencies as "foo" ok 34 - Name should format op without dependencies as "foo" ok 35 - Change content should format correctly without dependencies ok 36 - Planner name shoudld default to user name ok 37 - Planner email shoudld default to user email ok 38 - Planner name and email should format properly ok 39 - should stringify to "foo" + planner ok 40 - Since tag should be undef ok 41 - Parent should be undef ok 42 - Change info should be correct ok 43 - Change ID should be correct ok 44 - Create change with more stuff ok 45 - It should stringify correctly ok 46 - It should not be a deploy change ok 47 - It should be a revert change ok 48 - It should say so ok 49 - It should have a since tag ok 50 - It should have a parent ok 51 - Info should include parent and dependencies ok 52 - Should have no tags ok 53 - Add a tag ok 54 - Should have the tag ok 55 - Should format name with tags ok 56 - Should format tag-qualiified name ok 57 - Add another tag ok 58 - Should have both tags ok 59 - Should format name with both tags ok 60 - Should format tag-qualified name with first tag ok 61 - Planner name and email should format properly ok 62 - Dependencies should format as "[foo bar @baz !dr_evil]" ok 63 - Name should format with dependencies as "yo/howdy [foo bar @baz !dr_evil]" ok 64 - Name should format op with dependencies as "yo/howdy [foo bar @baz !dr_evil]" ok 65 - Change content should format correctly with dependencies ok 66 - path_segments should include directories ok 67 - Deploy dir should be in rworked dir ok 68 - Deploy file should be in rworked dir and include suffix ok 69 - Revert dir should be in rworked dir ok 70 - Revert file should be in rworked dir and include suffix ok 71 - Verify dir should be in rworked dir ok 72 - Verify file should be in rworked dir and include suffix ok 73 - Create change "baz" ok 74 - Create change "bar" ok 75 - Get deploy handle ok 76 - It should be the deploy file ok 77 - Get revert handle ok 78 - It should be the revert file ok 79 - Get verify handle ok 80 - It should be the verify file ok 81 - Create a change with explicit requires and conflicts ok 82 - requires should be set ok 83 - conflicts should be set ok 84 - Dependencies should include requires and conflicts ok 85 - Should find changes for requires ok 86 - Should find changes for conflicts ok 87 - Create change with UTF-8 name ok 88 - The name should be decoded text in info ok 89 - Change ID should be hashed from encoded UTF-8 ok 90 - note_prompt() should work ok 91 - note_prompt() should work ok 92 - no warnings ok t/changelist.t ...... 1..248 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 bar at 1 ok 16 - Should find bar^ at 0 ok 17 - Should find bar~ at 2 ok 18 - Should find bar~~ at 3 ok 19 - Should not find bar~~~ ok 20 - Should find bar~2 at 3 ok 21 - Should find bar~3 at 4 ok 22 - Should find bar by ID at 1 ok 23 - Should find @alpha at 2 ok 24 - Should find @alpha^ at 1 ok 25 - Should find @alpha^^ at 1 ok 26 - Should not find @alpha^^^ ok 27 - Should find @alpha by ID at 2 ok 28 - Should find baz at 3 ok 29 - Should find baz by ID at 3 ok 30 - Should not find baz^^^ ok 31 - Should not find baz^3 at 0 ok 32 - Should not find baz^4 ok 33 - Should find baz by ID^ at 2 ok 34 - Should get multiple indexes error looking for index of "yo" ok 35 - Multiple indexes error ident should be "plan" ok 36 - Multiple indexes message should be correct ok 37 - Should have output listing tag-qualified changes ok 38 - Should unknown tag error for invalid tag ok 39 - Unknown tag error ident should be "plan" ok 40 - Unknown taf message should be correct ok 41 - Should get 2 for yo@alpha ok 42 - Should get 1 for yo@alpha^ ok 43 - Should get 4 for yo@HEAD ok 44 - Should get 3 for yo@HEAD^ ok 45 - Should get undef for yo@HEAD~ ok 46 - Should get undef for yo@HEAD~~ ok 47 - Should get 0 for foo@alpha ok 48 - Should get 0 for foo@HEAD ok 49 - Should get 0 for foo@ROOT ok 50 - Should get undef for baz@alpha ok 51 - Should get 3 for baz@HEAD ok 52 - Should get 4 for @HEAD ok 53 - Should get 0 for @ROOT ok 54 - Should get 3 for @HEAD^ ok 55 - Should get undef for @HEAD~ ok 56 - Should get 1 for @ROOT~ ok 57 - Should get undef for @ROOT^ ok 58 - Should get 4 for HEAD ok 59 - Should get 0 for ROOT ok 60 - Should get 3 for HEAD^ ok 61 - Should get undef for HEAD~ ok 62 - Should get 1 for ROOT~ ok 63 - Should get undef for ROOT^ ok 64 - Should get foo for "foo" ok 65 - Should get bar for "foo~" ok 66 - Should get foo by ID ok 67 - Should get bar for "bar" ok 68 - Should get foo for "bar^" ok 69 - Should get yo1 for "bar~" ok 70 - Should get baz for "bar~~" ok 71 - Should get yo2 for "bar~3" ok 72 - Should get bar by ID ok 73 - Should get "yo" by the @alpha tag ID ok 74 - Should get baz for "baz" ok 75 - Should get baz by ID ok 76 - Should get baz for "@HEAD^" ok 77 - Should get yo1 for "@HEAD^^" ok 78 - Should get bar for "@HEAD^3" ok 79 - Should get foo for "@ROOT" ok 80 - Should get baz for "HEAD^" ok 81 - Should get yo1 for "HEAD^^" ok 82 - Should get bar for "HEAD^3" ok 83 - Should get foo for "ROOT" ok 84 - Should get yo1 for yo@alpha ok 85 - Should get yo2 for yo@HEAD ok 86 - Should get foo for foo@alpha ok 87 - Should get foo for foo@HEAD ok 88 - Should get undef for baz@alpha ok 89 - Should get baz for baz@HEAD ok 90 - Should get yo2 for "yo@HEAD" ok 91 - Should get foo for "foo@ROOT" ok 92 - Should find yo1 with "yo" ok 93 - Should find yo1 with "yo@alpha" ok 94 - Should find yo2 with yo@HEAD ok 95 - Should find foo for "foo" ok 96 - Should find foo for "foo@alpha" ok 97 - Should find foo for "foo@HEAD" ok 98 - Should find bar with "yo^" ok 99 - Should find foo with "yo^^" ok 100 - Should find foo with "yo^2" ok 101 - Should find baz with "yo~" ok 102 - Should find yo2 with "yo~~" ok 103 - Should find yo2 with "yo~2" ok 104 - Should find bar with "yo@alpha^" ok 105 - Should find baz with "yo@alpha^" ok 106 - Should find baz with yo@HEAD^ ok 107 - Should find baz with @HEAD^ ok 108 - Should find bar with @ROOT~^ ok 109 - Should find baz with HEAD^ ok 110 - Should find bar with ROOT~^ ok 111 - Should contain yo1 with "yo" ok 112 - Should contain yo1 with "yo@alpha" ok 113 - Should contain yo2 with yo@HEAD ok 114 - Should contain foo for "foo" ok 115 - Should contain foo for "foo@alpha" ok 116 - Should contain foo for "foo@HEAD" ok 117 - Should contain bar with "yo^" ok 118 - Should contain foo with "yo^^" ok 119 - Should contain foo with "yo^2" ok 120 - Should contain baz with "yo~" ok 121 - Should contain yo2 with "yo~~" ok 122 - Should contain yo2 with "yo~2" ok 123 - Should contain bar with "yo@alpha^" ok 124 - Should contain baz with "yo@alpha^" ok 125 - Should contain baz with yo@HEAD^ ok 126 - Should contain baz with @HEAD^ ok 127 - Should contain bar with @ROOT~^ ok 128 - Should contain baz with HEAD^ ok 129 - Should contain bar with ROOT~^ ok 130 - Should get multiple indexes error looking for index of "yo" ok 131 - Multiple indexes error ident should be "plan" ok 132 - Multiple indexes message should be correct ok 133 - Should have output listing tag-qualified changes ok 134 - Should unknown tag error for invalid tag ok 135 - Unknown tag error ident should be "plan" ok 136 - Unknown taf message should be correct ok 137 - Push hi ok 138 - Count should now be six ok 139 - Changes should be in order with $hi at the end ok 140 - Should find "hi" at index 5 ok 141 - Should find "hi" by ID at index 5 ok 142 - Index of @ROOT should still be 0 ok 143 - Index of @HEAD should now be 5 ok 144 - Index of ROOT should still be 0 ok 145 - Index of HEAD should now be 5 ok 146 - First index of "non" should be undef ok 147 - First index of "foo" should be 0 ok 148 - First index of "foo~" should be 1 ok 149 - First index of "foo~~" should be 2 ok 150 - First index of "foo~3" should be 3 ok 151 - Should not find first index of "foo~~~" ok 152 - First index of "foo" since @ROOT should be undef ok 153 - First index of "bar" should be 1 ok 154 - First index of "yo" should be 2 ok 155 - First index of "yo" since @ROOT should be 2 ok 156 - First index of "baz" should be 3 ok 157 - First index of "baz^" should be 2 ok 158 - First index of "baz^^" should be 1 ok 159 - First index of "baz^3" should be 0 ok 160 - Should not find first index of "baz^^^" ok 161 - First index of "yo" since "@alpha" should be 4 ok 162 - First index of "yo" since "baz" should be 4 ok 163 - First index of "yo^" since "baz" should be 4 ok 164 - First index of "yo~" since "baz" should be 5 ok 165 - Should get an exception for an unknown change passed to first_index_of() ok 166 - Unknown change error ident should be "plan" ok 167 - Unknown change message should be correct ok 168 - Push so and fu ok 169 - Count should now be eight ok 170 - Index of @ROOT should remain 0 ok 171 - Index of @HEAD should now be 7 ok 172 - Index of ROOT should remain 0 ok 173 - Index of HEAD should now be 7 ok 174 - Changes should be in order with $so and $fu at the end ok 175 - Index beta ok 176 - Should find @beta at index 4 ok 177 - Should find yo2 via @beta ok 178 - Should find yo2 via @beta ID ok 179 - Tags should return both tags ok 180 - Should get 2 for last tagged index ok 181 - Should find "yo" as last tagged ok 182 - Should get 8 for count ok 183 - Should find fu as last change ok 184 - Should find last tagged index at 0 ok 185 - Should find last tagged at 0 ok 186 - Should get count 1 ok 187 - Should find last change at 0 ok 188 - Should find last tagged index at 1 ok 189 - Should find last tagged at 1 ok 190 - Should get count 2 ok 191 - Should find last change at 1 ok 192 - Should find last tagged index at 3 ok 193 - Should find last tagged at 3 ok 194 - Should get count 4 ok 195 - Should find last change at 3 ok 196 - Should find last tagged index at 4 ok 197 - Should find last tagged at 4 ok 198 - Should get count 5 ok 199 - Should find last change at 4 ok 200 - Should not find tag index in 0 changes ok 201 - Should not find tag in 0 changes ok 202 - Should find no change in empty plan ok 203 - Should not find tag index in 2 changes ok 204 - Should not find tag in 2 changes ok 205 - Should not find tag index in 4 changes ok 206 - Should not find tag in 4 changes ok 207 - An object of class 'App::Sqitch::Plan::ChangeList' isa 'App::Sqitch::Plan::ChangeList' ok 208 - Should not find index of "foo" in empty list ok 209 - Should not find first index of "foo" in empty list ok 210 - Should get undef for "foo" in empty list ok 211 - Should not contain "foo" in empty list ok 212 - Should find undef for "foo" in empty list ok 213 - Should not find index of "bar" in empty list ok 214 - Should not find first index of "bar" in empty list ok 215 - Should get undef for "bar" in empty list ok 216 - Should not contain "bar" in empty list ok 217 - Should find undef for "bar" in empty list ok 218 - Should not find index of "HEAD" in empty list ok 219 - Should not find first index of "HEAD" in empty list ok 220 - Should get undef for "HEAD" in empty list ok 221 - Should not contain "HEAD" in empty list ok 222 - Should find undef for "HEAD" in empty list ok 223 - Should not find index of "@HEAD" in empty list ok 224 - Should not find first index of "@HEAD" in empty list ok 225 - Should get undef for "@HEAD" in empty list ok 226 - Should not contain "@HEAD" in empty list ok 227 - Should find undef for "@HEAD" in empty list ok 228 - Should not find index of "ROOT" in empty list ok 229 - Should not find first index of "ROOT" in empty list ok 230 - Should get undef for "ROOT" in empty list ok 231 - Should not contain "ROOT" in empty list ok 232 - Should find undef for "ROOT" in empty list ok 233 - Should not find index of "@ROOT" in empty list ok 234 - Should not find first index of "@ROOT" in empty list ok 235 - Should get undef for "@ROOT" in empty list ok 236 - Should not contain "@ROOT" in empty list ok 237 - Should find undef for "@ROOT" in empty list ok 238 - Should not find index of "alpha" in empty list ok 239 - Should not find first index of "alpha" in empty list ok 240 - Should get undef for "alpha" in empty list ok 241 - Should not contain "alpha" in empty list ok 242 - Should find undef for "alpha" in empty list ok 243 - Should not find index of "@alpha" in empty list ok 244 - Should not find first index of "@alpha" in empty list ok 245 - Should get undef for "@alpha" in empty list ok 246 - Should not contain "@alpha" in empty list ok 247 - Should find undef for "@alpha" in empty list ok 248 - 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 - App::Sqitch::Command::checkout does RevertDeployCommand ok 5 - App::Sqitch::Command::checkout does ConnectingCommand ok 6 - App::Sqitch::Command::checkout does ContextCommand ok 7 - Options should be correct ok 8 - Should parse options ok 9 - Options should not conflict with core options ok 10 - Load a sqitch object ok 11 - Check default configuration ok 12 - Should have set option ok 13 - Should have mode, deploy_variables, verify, no_prompt, and log_only ok 14 - Should have set_revert option and no_prompt false ok 15 - set_deploy and set_revert should overrid set ok 16 - set_deploy and set_revert should merge with set ok 17 - set_revert should merge with set_deploy ok 18 - Should have deploy configuration ok 19 - Should have merged variables ok 20 - Should have no_prompt and prompt_accept from revert config ok 21 - Should have false log_only, verify, true prompt_accept from checkout config ok 22 - Should have log_only, prompt_accept true from checkout and verify from deploy ok 23 - Should have log_only false and mode all again ok 24 - Should have log_only false for false config ok 25 - Should have no_prompt true with -y ok 26 - Should collect no variables for deploy ok 27 - Should collect no variables for revert ok 28 - Should collect core deploy vars for deploy ok 29 - Should collect core revert vars for revert ok 30 - Should override core vars with deploy vars for deploy ok 31 - Should override core vars with deploy vars for revert ok 32 - Deploy vars should be unaffected by revert vars ok 33 - Should override deploy vars with revert vars for revert ok 34 - Should override deploy vars with engine vars for deploy ok 35 - Should override checkout vars with engine vars for revert ok 36 - Should override engine vars with deploy vars for deploy ok 37 - Should override engine vars with target vars for revert ok 38 - Should override target vars with --set vars for deploy ok 39 - Should override target vars with --set variables for revert ok 40 - Should override --set vars with --set-deploy variables for deploy ok 41 - Should not override --set vars with --set-deploy variables for revert ok 42 - Should not override --set vars with --set-revert variables for deploy ok 43 - Should override --set vars with --set-revert variables for revert ok 44 - 'checkout command' isa 'App::Sqitch::Command::checkout' ok 45 - Should get an error current branch ok 46 - Current branch error ident should be "checkout" ok 47 - Should get proper error for current branch error ok 48 - The proper args should have been passed to rev-parse ok 49 - Should get an error for plans without a common change ok 50 - The no common change error ident should be "checkout" ok 51 - The no common change error message should be correct ok 52 - 'Object with to and variables' isa 'App::Sqitch::Command::checkout' ok 53 - Checkout master ok 54 - The proper args should again have been passed to rev-parse ok 55 - Should have requested the plan file contents as of master ok 56 - Should have checked out other branch ok 57 - Should have no warnings ok 58 - Should have emitted info identifying the last common change ok 59 - "users" ID and 1 should be passed to the engine revert ok 60 - Should have had the current changes for revision ok 61 - undef, "tag", and 1 should be passed to the engine deploy ok 62 - Should have had the other branch changes (decoded) for deploy ok 63 - Engine should verify ok 64 - The engine should be set to log_only ok 65 - Variables should have been passed to the engine twice ok 66 - The revert vars should have been passed first ok 67 - The deploy vars should have been next ok 68 - Checkout master with target ok 69 - Target should be passed to engine ok 70 - Should have no warnings ok 71 - 'Object with to and variables' isa 'App::Sqitch::Command::checkout' ok 72 - Checkout master again ok 73 - Target should be passed to engine ok 74 - Should have no warnings ok 75 - The engine should not be set to log_only ok 76 - The engine should not be set with_verfy ok 77 - undef, "tag", and 1 should be passed to the engine deploy again ok 78 - Should have had the other branch changes (decoded) for deploy again ok 79 - Variables should again have been passed to the engine twice ok 80 - The revert vars should again have been passed first ok 81 - The deploy vars should again have been next ok 82 - Checkout master again with target ok 83 - Target should be passed to engine ok 84 - Should have warning about two targets ok 85 - Should get an exception for unknown arg ok 86 - Unknow arg ident should be "checkout" ok 87 - Should get an exeption for two unknown arg ok 88 - Should get an exception for unknown args ok 89 - Unknow args ident should be "checkout" ok 90 - Should get an exeption for two unknown args ok 91 - Should rethrow confirm exception ok 92 - Should rethrow fatal exception ok 93 - Should rethrow unknown exception 1..93 ok t/command.t ......... 1..182 ok 1 - use App::Sqitch::Command; ok 2 - App::Sqitch::Command->can(...) ok 3 - Load a 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 - Should find class for "whu" ok 13 - Should find class for "wah-hoo" ok 14 - Should find class for "help" ok 15 - Should find no class for "_nonesush" ok 16 - Should have sent error to debug ok 17 - Load a sqitch object ok 18 - Load a "whu" command ok 19 - An object of class 'App::Sqitch::Command::whu' isa 'App::Sqitch::Command::whu' ok 20 - The sqitch attribute should be set ok 21 - The command method should return "whu" ok 22 - Load a "whu" command with "foo" config ok 23 - The "foo" attribute should be set ok 24 - Should exit ok 25 - Nonexistent command error ident should be "config" ok 26 - Should get proper mesage for nonexistent command ok 27 - Nonexistent command should yield exitval of 1 ok 28 - Should die on bad command ok 29 - Bad command error ident should be "config" ok 30 - Should get proper mesage for bad command ok 31 - Bad command should yield exitval of 1 ok 32 - No command should yield usage ok 33 - No args should be passed to usage ok 34 - Should die on broken command module ok 35 - Broken command error ident should be "config" ok 36 - Should get proper mesage for broken command ok 37 - Broken command should yield exitval of 1 ok 38 - Load a "whu" command with "--feathers" option ok 39 - The "feathers" attribute should be set ok 40 - Load a "wah-hoo" command ok 41 - 'It' isa 'App::Sqitch::Command::wah_hoo' ok 42 - command() should return hyphenated name ok 43 - Create a "whu" command ok 44 - An object of class 'App::Sqitch::Command::whu' isa 'App::Sqitch::Command::whu' ok 45 - The sqitch attribute should be set ok 46 - The command method should return "whu" ok 47 - Create a "whu" command with "foo" config ok 48 - The "foo" attribute should be set ok 49 - Create a "whu" command with "--feathers" option ok 50 - The "feathers" attribute should be set ok 51 - Create an App::Sqitch::Command object ok 52 - 'default target' isa 'App::Sqitch::Target' ok 53 - Default target name should be "db:" ok 54 - Default target URI should be "db:" ok 55 - Create an App::Sqitch::Command object ok 56 - 'default target' isa 'App::Sqitch::Target' ok 57 - Default target name should be "db:sqlite:" ok 58 - Default target URI should be "db:sqlite:" ok 59 - Should have fetched config stuff ok 60 - Create an App::Sqitch::Command object ok 61 - 'default target' isa 'App::Sqitch::Target' ok 62 - Default target name should be "db:pg:foo" ok 63 - Default target URI should be "db:pg:foo" ok 64 - Should have fetched config stuff again ok 65 - App::Sqitch::Command->can('execute') ok 66 - Create an App::Sqitch::Command object ok 67 - Base class command should be "" ok 68 - Base object command should be "" ok 69 - Should get an error calling execute on command base class ok 70 - Execute exception ident should be "DEV" ok 71 - The execute() error message should be correct ok 72 - Create a subclass command object ok 73 - Subclass oject command should be "whu" ok 74 - Subclass class command should be "whu" ok 75 - Should get an error for un-overridden execute() method ok 76 - Un-overidden execute() exception ident should be "DEV" ok 77 - The unoverridden execute() error message should be correct ok 78 - App::Sqitch::Command->can(...) ok 79 - Create an App::Sqitch::Command object again ok 80 - Base _parse_opts should return an empty hash ok 81 - Create a subclass command object again ok 82 - Subclass should return an empty hash for no args ok 83 - Subclass should use options spec ok 84 - Subclass should parse options spec ok 85 - Args array should be cleared of options ok 86 - Should get warning for unknown option ok 87 - Should call _pod2usage on options parse failure ok 88 - 'Good command object' isa 'App::Sqitch::Command::good' ok 89 - Should get warning for unknown option when there are no options ok 90 - Should call _pod2usage on no options parse failure ok 91 - Should get sqitch param from target_params ok 92 - Load Sqitch with config and plan ok 93 - Load cmd with config and plan ok 94 - Parsing no args should return default target ok 95 - Single unknown arg raise an error ok 96 - Unknown error ident should be "whu" ok 97 - Unknown error message should be correct ok 98 - Single change should be recognized as change ok 99 - Single target should be recognized as target ok 100 - URI target should be recognized as target, too ok 101 - Target and change should be recognized ok 102 - Change and target should be recognized ok 103 - Alternate Target and change should be recognized ok 104 - Change and alternate target should be recognized ok 105 - Change, target, and unknown name should be recognized ok 106 - Multiple changes, target, and unknown name should be recognized ok 107 - Multiple names should be recognized ok 108 - Should get an error with name and unknown ok 109 - Unknown error ident should be "whu" ok 110 - Unknown error message should be correct ok 111 - Should get an error with name and two unknowns ok 112 - Two unknowns error ident should be "whu" ok 113 - Two unknowns error message should be correct ok 114 - Load Sqitch with config ok 115 - Load cmd with config ok 116 - Change following target should be recognized from target plan ok 117 - Passed target should always be returned ok 118 - Passed and specified targets should always be returned ok 119 - Change unknown to passed target should error ok 120 - Change unknown error ident should be "whu" ok 121 - Change unknown error message should be correct ok 122 - Should get known changes from default target (t/sql/sqitch.plan) ok 123 - Change seen after target should error if not in that target ok 124 - Change after target error ident should be "whu" ok 125 - Change after target error message should be correct ok 126 - Should resolve plan file to a target ok 127 - SHould resolve default plan file to target ok 128 - Should resolve engine "pg" file to its target ok 129 - Should resolve engine "sqlite" file to its target ok 130 - Bad target should trigger error ok 131 - Bad target error ident should be "target" ok 132 - Should have bad target error message ok 133 - Should recognize target when default target has no plan file ok 134 - Load Sqitch without engine ok 135 - Load cmd without engine ok 136 - Should have error for no engine or target ok 137 - Should have target ident ok 138 - Should have message about no config ok 139 - Engine arg should override core target error ok 140 - Target arg should override core target error ok 141 - Call _pod2usage on base object ok 142 - Default params should be passed to Pod::Usage ok 143 - Call _pod2usage on "whu" command object ok 144 - Default params should be passed to Pod::Usage ok 145 - 'Config command object' isa 'App::Sqitch::Command::config' ok 146 - Call _pod2usage on "config" command object ok 147 - Should find sqitch-config docs to pass to Pod::Usage ok 148 - 'Good command object' isa 'App::Sqitch::Command::good' ok 149 - Call _pod2usage on "good" command object ok 150 - Should find App::Sqitch::Command::good docs to pass to Pod::Usage ok 151 - App::Sqitch::Command::good->can('usage') ok 152 - Should find App::Sqitch::Command::good docs to pass to Pod::Usage ok 153 - App::Sqitch::Command->can('verbosity') ok 154 - Verbosity should be from sqitch ok 155 - Verbosity should change with sqitch ok 156 - trace should work ok 157 - Should get no trace output for verbosity 2 ok 158 - trace_literal should work ok 159 - Should get no trace_literal output for verbosity 2 ok 160 - debug should work ok 161 - Should get no debug output for verbosity 1 ok 162 - debug_literal should work ok 163 - Should get no debug_literal output for verbosity 1 ok 164 - info should work ok 165 - Should get no info output for verbosity 0 ok 166 - info_literal should work ok 167 - Should get no info_literal output for verbosity 0 ok 168 - comment should work ok 169 - comment should work with verbosity 0 ok 170 - comment_literal should work ok 171 - comment_literal should work with verbosity 0 ok 172 - emit should work ok 173 - emit should work even with verbosity 0 ok 174 - emit_literal should work ok 175 - emit_literal should work even with verbosity 0 ok 176 - warn should work ok 177 - warn_literal should work ok 178 - threw Regexp ((?^:EXITED: 2)) ok 179 - usage should work ok 180 - threw Regexp ((?^:EXITED: 2)) ok 181 - usage should prefer sqitch-$command-usage ok 182 - no warnings ok t/config.t .......... 1..346 ok 1 - use App::Sqitch::Command::config; 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 - Should parse options ok 8 - Options should not conflict with core options ok 9 - Construct with user and system ok 10 - Should get error for multiple config files ok 11 - Construct with user and local ok 12 - Should get error for multiple config files ok 13 - Construct with file and system ok 14 - Should get another error for multiple config files ok 15 - Construct with file and user ok 16 - Should get a third error for multiple config files ok 17 - Construct with file, system, and user ok 18 - Should get one last error for multiple config files ok 19 - Construct with bool and num ok 20 - Should get error for multiple types ok 21 - Construct with int and num ok 22 - Should get another error for multiple types ok 23 - Construct with int and bool ok 24 - Should get a third error for multiple types ok 25 - Construct with int, num, and bool ok 26 - Should get one last error for multiple types ok 27 - Construct with get & unset ok 28 - Should get error for multiple actions ok 29 - Construct with get & unset & edit ok 30 - Should get error for multiple actions ok 31 - Construct with get & unset & edit & list ok 32 - Should get error for multiple actions ok 33 - Construct with unset & edit ok 34 - Should get error for multiple actions ok 35 - Construct with unset & edit & list ok 36 - Should get error for multiple actions ok 37 - Construct with edit & list ok 38 - Should get error for multiple actions ok 39 - Construct with edit & add & list ok 40 - Should get error for multiple actions ok 41 - Construct with edit & add & list & get_all ok 42 - Should get error for multiple actions ok 43 - Construct with edit & add & list & get_regex ok 44 - Should get error for multiple actions ok 45 - Construct with edit & add & list & unset_all ok 46 - Should get error for multiple actions ok 47 - Construct with edit & add & list & get_all & unset_all ok 48 - Should get error for multiple actions ok 49 - Construct with edit & list & remove_section ok 50 - Should get error for multiple actions ok 51 - Construct with edit & list & remove_section & rename_section ok 52 - Should get error for multiple actions ok 53 - Default context should be local context ok 54 - Default action should be undef ok 55 - Default context should be undef ok 56 - Local context should be local ok 57 - User context should be user ok 58 - System context should be system ok 59 - Create config set command ok 60 - Execute the set command ok 61 - The set method should have been called ok 62 - Execute the get command ok 63 - The get method should have been called ok 64 - Create config get_all command ok 65 - An action with a dash should have triggered a method with an underscore ok 66 - Create config get command ok 67 - Get core.engine ok 68 - Should have emitted the merged core.engine ok 69 - Get engine.pg.registry ok 70 - Should have emitted the merged engine.pg.registry ok 71 - Get engine.pg.client ok 72 - Should have emitted the merged engine.pg.client ok 73 - Should get usage for missing get key ok 74 - And the missing get key should trigger a usage message ok 75 - Should get usage for invalid get key ok 76 - And the invalid get key should trigger a usage message ok 77 - Create config get int command ok 78 - Get revert.count as int ok 79 - Should have emitted the revert count ok 80 - Get revert.revision as int ok 81 - Should have emitted the revert revision as an int ok 82 - Get bundle.tags_only as an int should fail ok 83 - Int cast exception ident should be "config" ok 84 - Create config get num command ok 85 - Get revert.count as num ok 86 - Should have emitted the revert count ok 87 - Get revert.revision as num ok 88 - Should have emitted the revert revision as an num ok 89 - Get bundle.tags_only as an num should fail ok 90 - Num cast exception ident should be "config" ok 91 - Create config get bool command ok 92 - Should get failure for invalid bool int ok 93 - Bool int cast exception ident should be "config" ok 94 - Should get failure for invalid bool num ok 95 - Bool num cast exception ident should be "config" ok 96 - Get bundle.tags_only as bool ok 97 - Should have emitted bundle.tags_only as a bool ok 98 - Create config get bool-or-int command ok 99 - Get revert.count as bool-or-int ok 100 - Should have emitted the revert count as an int ok 101 - Get revert.revision as bool-or-int ok 102 - Should have emitted the revert revision as an int ok 103 - Get bundle.tags_only as bool-or-int ok 104 - Should have emitted bundle.tags_only as a bool ok 105 - Create system config get command ok 106 - Get system core.engine ok 107 - Should have emitted the system core.engine ok 108 - Get system engine.pg.client ok 109 - Should have emitted the system engine.pg.client ok 110 - Attempt to get engine.pg.host should fail ok 111 - Error ident should be "config" ok 112 - Error Message should be empty ok 113 - Error exitval should be 1 ok 114 - Nothing should have been emitted ok 115 - Create user config get command ok 116 - Get user engine.pg.registry ok 117 - Should have emitted the user engine.pg.registry ok 118 - Get user engine.pg.client ok 119 - Should have emitted the user engine.pg.client ok 120 - Create local config get command ok 121 - Get local engine.pg.target ok 122 - Should have emitted the local engine.pg.target ok 123 - Get local core.engine ok 124 - Should have emitted the local core.engine ok 125 - Create another system config get command ok 126 - There should be no system config file ok 127 - Should fail when no system config file ok 128 - Error ident should be "config" ok 129 - Error Message should be empty ok 130 - Error exitval should be 1 ok 131 - Create another user config get command ok 132 - There should be no user config file ok 133 - Should fail when no user config file ok 134 - Error ident should be "config" ok 135 - Error Message should be empty ok 136 - Error exitval should be 1 ok 137 - Create another local config get command ok 138 - There should be no local config file ok 139 - Should fail when no local config file ok 140 - Error ident should be "config" ok 141 - Error Message should be empty ok 142 - Error exitval should be 1 ok 143 - Create config list command ok 144 - Execute the list action ok 145 - Should have emitted the merged config ok 146 - Create system config list command ok 147 - List the system config ok 148 - Should have emitted the system config list ok 149 - Create user config list command ok 150 - List the user config ok 151 - Should only have emitted the user config list ok 152 - Create local config list command ok 153 - List the local config ok 154 - Should only have emitted the local config list ok 155 - Create system config list command with no file ok 156 - List the system config ok 157 - Nothing should have been emitted ok 158 - Create user config list command with no file ok 159 - List the user config ok 160 - Nothing should have been emitted ok 161 - Create system config set command ok 162 - Write core.foo ok 163 - The property should have been written ok 164 - Write core.engine ok 165 - Both settings should be saved ok 166 - Write engine.pg.user ok 167 - Both sections should be saved ok 168 - Should set usage for missing set key ok 169 - And the missing set key should trigger a usage message ok 170 - Should set usage for invalid set key ok 171 - And the invalid set key should trigger a usage message ok 172 - Should set usage for missing set value ok 173 - And the missing set value should trigger a usage message ok 174 - Create system config add command ok 175 - Add to core.foo ok 176 - The value should have been added to the property ok 177 - Should add usage for missing add key ok 178 - And the missing add key should trigger a usage message ok 179 - Should add usage for invalid add key ok 180 - And the invalid add key should trigger a usage message ok 181 - Should add usage for missing add value ok 182 - And the missing add value should trigger a usage message ok 183 - Create system config add command ok 184 - Get core.engine with regex ok 185 - Should have emitted value ok 186 - Get core.foo with regex ok 187 - Should have emitted value ok 188 - Attempt to get core.foo with non-matching regex should fail ok 189 - Error ident should be "config" ok 190 - Error Message should be empty ok 191 - Error exitval should be 1 ok 192 - Nothing should have been emitted ok 193 - Create system config get_all command ok 194 - Call get_all on core.engine ok 195 - The engine should have been emitted ok 196 - Get all core.engine with regex ok 197 - Should have emitted value ok 198 - Call get_all on core.foo ok 199 - Both foos should have been emitted ok 200 - Call get_all on core.foo with regex ok 201 - Both foos should have been emitted ok 202 - Call get_all on core.foo with limiting regex ok 203 - Only the one foo should have been emitted ok 204 - Attempt to get_all core.foo with non-matching regex should fail ok 205 - Error ident should be "config" ok 206 - Error Message should be empty ok 207 - Error exitval should be 1 ok 208 - Nothing should have been emitted ok 209 - Should get_all usage for missing get_all key ok 210 - And the missing get_all key should trigger a usage message ok 211 - Should get_all usage for invalid get_all key ok 212 - And the invalid get_all key should trigger a usage message ok 213 - Create config get_all int command ok 214 - Get revert.count as int ok 215 - Should have emitted the revert count ok 216 - Get revert.revision as int ok 217 - Should have emitted the revert revision as an int ok 218 - Get bundle.tags_only as an int should fail ok 219 - Int cast exception ident should be "config" ok 220 - Create config get_all num command ok 221 - Get revert.count as num ok 222 - Should have emitted the revert count ok 223 - Get revert.revision as num ok 224 - Should have emitted the revert revision as an num ok 225 - Get bundle.tags_only as an num should fail ok 226 - Num cast exception ident should be "config" ok 227 - Create config get_all bool command ok 228 - Should get failure for invalid bool int ok 229 - Bool int cast exception ident should be "config" ok 230 - Should get failure for invalid bool num ok 231 - Num int cast exception ident should be "config" ok 232 - Get bundle.tags_only as bool ok 233 - Should have emitted bundle.tags_only as a bool ok 234 - Create config get_all bool-or-int command ok 235 - Get revert.count as bool-or-int ok 236 - Should have emitted the revert count as an int ok 237 - Get revert.revision as bool-or-int ok 238 - Should have emitted the revert revision as an int ok 239 - Get bundle.tags_only as bool-or-int ok 240 - Should have emitted bundle.tags_only as a bool ok 241 - Create system config get_regex command ok 242 - Call get_regex on core\..+ ok 243 - Should match all core options ok 244 - Call get_regex on engine\.pg\..+ ok 245 - Should match all engine.pg options ok 246 - Call get_regex on engine\.pg\..+ and value regex ok 247 - Should match all engine.pg options that match ok 248 - Attempt to get_regex core.foo with non-matching regex should fail ok 249 - Error ident should be "config" ok 250 - Error Message should be empty ok 251 - Error exitval should be 1 ok 252 - Nothing should have been emitted ok 253 - Should get_regex usage for missing get_regex key ok 254 - And the missing get_regex key should trigger a usage message ok 255 - Should get_regex usage for invalid get_regex key ok 256 - And the invalid get_regex key should trigger a usage message ok 257 - Create config get_regex int command ok 258 - Get revert.count as int ok 259 - Should have emitted the revert count ok 260 - Get revert.revision as int ok 261 - Should have emitted the revert revision as an int ok 262 - Get bundle.tags_only as an int should fail ok 263 - Int cast exception ident should be "config" ok 264 - Create config get_regexp num command ok 265 - Get revert.count as num ok 266 - Should have emitted the revert count ok 267 - Get revert.revision as num ok 268 - Should have emitted the revert revision as an num ok 269 - Get bundle.tags_only as an num should fail ok 270 - Num cast exception ident should be "config" ok 271 - Create config get_regex bool command ok 272 - Should get failure for invalid bool int ok 273 - Bool int cast exception ident should be "config" ok 274 - Should get failure for invalid bool num ok 275 - Num int cast exception ident should be "config" ok 276 - Get bundle.tags_only as bool ok 277 - Should have emitted bundle.tags_only as a bool ok 278 - Create config get_regex bool-or-int command ok 279 - Get revert.count as bool-or-int ok 280 - Should have emitted the revert count as an int ok 281 - Get revert.revision as bool-or-int ok 282 - Should have emitted the revert revision as an int ok 283 - Get bundle.tags_only as bool-or-int ok 284 - Should have emitted bundle.tags_only as a bool ok 285 - Create system config unset command ok 286 - Unset engine.pg.user ok 287 - engine.pg.user should be gone ok 288 - Unset core.engine ok 289 - core.engine should have been removed ok 290 - Should get failure trying to delete multivalue key ok 291 - Multiple value exception ident should be "config" ok 292 - And it should have the proper error message ok 293 - Unset core.foo with a regex ok 294 - The core.foo "baz" value should have been removed ok 295 - Should unset usage for missing unset key ok 296 - And the missing unset key should trigger a usage message ok 297 - Should unset usage for invalid unset key ok 298 - And the invalid unset key should trigger a usage message ok 299 - Create system config unset_all command ok 300 - unset_all core.foo ok 301 - core.foo should have been removed ok 302 - unset_all core.foo with regex ok 303 - core.foo should have one value left ok 304 - Should unset_all usage for missing unset_all key ok 305 - And the missing unset_all key should trigger a usage message ok 306 - Should unset_all usage for invalid unset_all key ok 307 - And the invalid unset_all key should trigger a usage message ok 308 - Create system config replace_all command ok 309 - Replace all core.bar ok 310 - core.bar should have all its values with one value ok 311 - Replace all core.bar matching /^ba/ ok 312 - core.foo should have had the matching values replaced ok 313 - Create system config rename_section command ok 314 - Rename "core" to "funk" ok 315 - core.foo should have become funk.foo ok 316 - Should fail with no new name ok 317 - Message should be in the usage call ok 318 - Should fail with bad old name ok 319 - Message should be in the usage call ok 320 - Should fail with bad new name ok 321 - Message should be in the usage call ok 322 - Should fail with invalid section ok 323 - Invalid section exception ident should be "config" ok 324 - Invalid section exception message should be set ok 325 - Create system config remove_section command ok 326 - Remove "func" section ok 327 - The "funk" section should be gone ok 328 - Should fail with no name ok 329 - Message should be in the usage call ok 330 - Should fail with invalid name ok 331 - Invalid key name exception ident should be "config" ok 332 - And the invalid key message should be set ok 333 - Should fail fetching multi-value key ok 334 - Multi-value key exception ident should be "config" ok 335 - The multiple value error should be thrown ok 336 - Should fail setting multi-value key ok 337 - Mult-valkue key exception ident should be "config" ok 338 - The multi-value key error should be thrown ok 339 - Create system config edit command ok 340 - Execute the edit comand ok 341 - The editor should have been run ok 342 - Load a new sqitch object ok 343 - Create system config set command with subdirectory config file path ok 344 - Set "my.foo" in subdirectory config file ok 345 - The file should have been written ok 346 - no warnings ok t/configuration.t ... 1..22 ok 1 - use App::Sqitch::Config; ok 2 - 'New config object' isa 'App::Sqitch::Config' ok 3 - confname should be "sqitch.conf" ok 4 - Should not be initialized ok 5 # skip System dir can be modified at build time ok 6 - Default user directory should be correct ok 7 - Default global file name should be correct ok 8 - Should preferably get SQITCH_SYSTEM_CONFIG file from global_file ok 9 - system_file should alias global_file ok 10 - Default user file name should be correct ok 11 - Should preferably get SQITCH_USER_CONFIG file from user_file ok 12 - Local file should be correct ok 13 - dir_file should alias local_file ok 14 - local_file should prefer $SQITCH_CONFIG ok 15 - And so should dir_file ok 16 - 'Another config object' isa 'App::Sqitch::Config' ok 17 - Should be initialized ok 18 - get_section("core") should work ok 19 - get_section("engine.pg") should work ok 20 - get_section() whould work with capitalized subsection ok 21 - get_section() whould work with mixed case subsections ok 22 - no warnings ok t/conn_cmd_role.t ... ok 1 - use App::Sqitch::Role::ConnectingCommand; ok 2 - App::Sqitch::Command::click->can('does') ok 3 - App::Sqitch::Command::click does App::Sqitch::Role::ConnectingCommand ok 4 - Options should include connection options ok 5 - Should get no params for no options ok 6 - Should get dbname for --db-name ok 7 - Should collect existing but false params ok 8 - Should collect params ok 9 - An object of class 'App::Sqitch::Command::click' isa 'App::Sqitch::Command::click' ok 10 - Should get connection params from target_params 1..10 ok t/cx_cmd_role.t ..... ok 1 - use App::Sqitch::Role::ContextCommand; ok 2 - App::Sqitch::Command::click->can('does') ok 3 - App::Sqitch::Command::click does App::Sqitch::Role::ContextCommand ok 4 - Options should include context options ok 5 - Should get no params for no options ok 6 - Should get no params for empty options ok 7 - Should have no warning ok 8 - Should get top_dir ok 9 - Should have --top-dir deprecation warning ok 10 - Should collect params ok 11 - Should have --top-dir deprecation warning again ok 12 - An object of class 'App::Sqitch::Command::click' isa 'App::Sqitch::Command::click' ok 13 - Should get context params from target_params 1..13 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, June 6, 2019 at 2:21:15 AM America/Vancouver" ok 5 - Format "full" should be valid ok 6 - Date format "long" should yield "June 6, 2019 at 2:21:15 AM PDT" ok 7 - Format "long" should be valid ok 8 - Date format "medium" should yield "Jun 6, 2019, 2:21:15 AM" ok 9 - Format "medium" should be valid ok 10 - Date format "short" should yield "6/6/19, 2:21 AM" ok 11 - Format "short" should be valid ok 12 - Date format "raw" should yield "2019-06-06T09:21:15Z" ok 13 - Format "raw" should be valid ok 14 - Date format "" should yield "2019-06-06T09:21:15Z" ok 15 - Date format "iso" should yield "2019-06-06 02:21:15 -0700" ok 16 - Format "iso" should be valid ok 17 - Date format "iso8601" should yield "2019-06-06 02:21:15 -0700" ok 18 - Format "iso8601" should be valid ok 19 - Date format "rfc" should yield "Thu, 06 Jun 2019 02:21:15 -0700" ok 20 - Format "rfc" should be valid ok 21 - Date format "rfc2822" should yield "Thu, 06 Jun 2019 02:21:15 -0700" ok 22 - Format "rfc2822" should be valid ok 23 - Date format "cldr:HH'h' mm'm'" should yield "02h 21m" 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 02:21:15" 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 - App::Sqitch::Command::deploy does ContextCommand ok 5 - App::Sqitch::Command::deploy does ConnectingCommand ok 6 - Options should be correct ok 7 - Should parse options ok 8 - Options should not conflict with core options ok 9 - Should have default configuration with no config or opts ok 10 - Should have mode, verify, set, and log-only options ok 11 - Should have mode and verify configuration ok 12 - 'new deploy with target' isa 'App::Sqitch::Command::deploy' ok 13 - Should have target "foo" ok 14 - An object of class 'App::Sqitch::Command::deploy' isa 'App::Sqitch::Command::deploy' ok 15 - Should have undef default target ok 16 - to_change should be undef ok 17 - mode should be "all" ok 18 - Should collect no variables ok 19 - Should collect core vars ok 20 - Should override core vars with deploy vars ok 21 - Should override deploy vars with engine vars ok 22 - Should override engine vars with target vars ok 23 - Should override target vars with --set variables ok 24 - Execute to "@alpha" ok 25 - "@alpha" "all", and 0 should be passed to the engine ok 26 - Should have a target ok 27 - The engine should not be set log_only ok 28 - Should have no warnings ok 29 - Execute ok 30 - undef and "all" should be passed to the engine ok 31 - Should have no warnings ok 32 - Execute with change ok 33 - "widgets" and "all" should be passed to the engine ok 34 - Should have no warnings ok 35 - Execute with target ok 36 - undef and "all" should be passed to the engine ok 37 - The target should be as specified ok 38 - Should have no warnings ok 39 - Execute with change and target ok 40 - "widgets" and "all" should be passed to the engine ok 41 - The target should be as specified ok 42 - Should have no warnings ok 43 - Execute with target and change ok 44 - "widgets" and "all" should be passed to the engine ok 45 - The target should be as specified ok 46 - Should have no warnings ok 47 - 'Object with to, mode, log_only, and variables' isa 'App::Sqitch::Command::deploy' ok 48 - Execute again 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 - The target name should be from the target option ok 54 - Should have no warnings ok 55 - Execute with change ok 56 - Engine should verify ok 57 - The engine should be set log_only ok 58 - "foo", "tag", and 1 should be passed to the engine ok 59 - Vars should have been passed through to the engine ok 60 - Should have too many changes warning ok 61 - Execute with target again ok 62 - Engine should verify ok 63 - The engine should be set log_only ok 64 - "foo", "tag", and 1 should be passed to the engine ok 65 - Vars should have been passed through to the engine ok 66 - The target should be from the target option ok 67 - Should have warning about too many targets ok 68 - "all" should be a valid mode ok 69 - "tag" should be a valid mode ok 70 - "change" should be a valid mode ok 71 - "foo" should not be a valid mode ok 72 - "bad" should not be a valid mode ok 73 - "gar" should not be a valid mode ok 74 - Should get an exception for unknown arg ok 75 - Unknow arg ident should be "deploy" ok 76 - Should get an exeption for two unknown arg ok 77 - Should get an exception for unknown args ok 78 - Unknow args ident should be "deploy" ok 79 - Should get an exeption for two unknown args 1..79 ok t/engine.t .......... 1..633 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 - Registry 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 non-existent registry ok 52 - Non-existent registry error ident should be "engine" ok 53 - Non-existent registry error message should be correct ok 54 - Should get error from revert ok 55 - revert registry error ident should be "engine" ok 56 - revert registry error message should be correct ok 57 - Should get error from verify ok 58 - verify registry error ident should be "engine" ok 59 - verify registry error message should be correct ok 60 - Should get error for out-of-date registry ok 61 - Out-of-date registry error ident should be "engine" ok 62 - Out-of-date registry error message should be correct ok 63 - Should get error for future registry ok 64 - Future registry error ident should be "engine" ok 65 - Future registry error message should be correct ok 66 - Create a App::Sqitch::Engine object again ok 67 - Should get an unimplemented exception from initialized() ok 68 - Should get an unimplemented exception from initialize() ok 69 - Should get an unimplemented exception from register_project() ok 70 - Should get an unimplemented exception from run_file() ok 71 - Should get an unimplemented exception from run_handle() ok 72 - Should get an unimplemented exception from log_deploy_change() ok 73 - Should get an unimplemented exception from log_fail_change() ok 74 - Should get an unimplemented exception from log_revert_change() ok 75 - Should get an unimplemented exception from log_new_tags() ok 76 - Should get an unimplemented exception from is_deployed_tag() ok 77 - Should get an unimplemented exception from is_deployed_change() ok 78 - Should get an unimplemented exception from are_deployed_changes() ok 79 - Should get an unimplemented exception from change_id_for() ok 80 - Should get an unimplemented exception from changes_requiring_change() ok 81 - Should get an unimplemented exception from earliest_change_id() ok 82 - Should get an unimplemented exception from latest_change_id() ok 83 - Should get an unimplemented exception from deployed_changes() ok 84 - Should get an unimplemented exception from deployed_changes_since() ok 85 - Should get an unimplemented exception from load_change() ok 86 - Should get an unimplemented exception from name_for_change_id() ok 87 - Should get an unimplemented exception from current_state() ok 88 - Should get an unimplemented exception from current_changes() ok 89 - Should get an unimplemented exception from current_tags() ok 90 - Should get an unimplemented exception from search_events() ok 91 - Should get an unimplemented exception from registered_projects() ok 92 - Should get an unimplemented exception from change_offset_from_id() ok 93 - Should get an unimplemented exception from change_id_offset_from_id() ok 94 - App::Sqitch::Engine->can('_load_changes') ok 95 - Should load changes with no change ok 96 - Should load changes with undef ok 97 - Should load changes with no tags ok 98 - Should load changes with multiple hashes with no tags ok 99 - Should load changes with tags ok 100 - Should load changes with tags with leading @ ok 101 - Should load changes with multiple hashes with tags ok 102 - Should load changes with reworked change ok 103 - Should load changes with reworked change & multiple tags ok 104 - Should load changes with doubly reworked change ok 105 - Rework change "you" ok 106 - Tag @beta1 ok 107 - Should load changes with Unplanned change ok 108 - Should load changes with reworked change without reworked version deployed ok 109 - Should load changes with reworked change with reworked version deployed ok 110 - Create a subclass name object again ok 111 - App::Sqitch::Engine::whu->can(...) ok 112 - Deploy a change ok 113 - deploy_change should have called the proper methods ok 114 - Output should reflect the deployment ok 115 - Output should reflect success ok 116 - Only log a change ok 117 - log-only deploy_change should not have called run_file ok 118 - Output should reflect the logging ok 119 - Output should reflect deploy success ok 120 - Enable verification ok 121 - Deploy a change to be verified ok 122 - deploy_change with verification should run the verify file ok 123 - Output should reflect the logging ok 124 - Output should reflect deploy success ok 125 - Enable log_only ok 126 - Verify and log a change ok 127 - deploy_change with verification and log-only should not run deploy ok 128 - Output should reflect the logging ok 129 - Output should reflect deploy success ok 130 - Deploy change with error ok 131 - Error should be from run_file ok 132 - Should have logged change failure ok 133 - Output should reflect the deployment, even with failure ok 134 - Output should reflect deploy failure ok 135 - Deploy change with failed verification ok 136 - Error should be from deploy_change ok 137 - Should have logged verify failure ok 138 - Output should reflect the deployment, even with verify failure ok 139 - Output should reflect deploy failure ok 140 - Verify error should have been vented ok 141 - Enable log_only ok 142 - Deploy change with log-only and failed verification ok 143 - Error should be from deploy_change ok 144 - Should have logged verify failure but not reverted ok 145 - Output should reflect the deployment, even with verify failure ok 146 - Output should reflect deploy failure ok 147 - Verify error should have been vented ok 148 - Deploy a change with no verify script ok 149 - deploy_change with no verify file should not run it ok 150 - Output should reflect the logging ok 151 - Output should reflect deploy success ok 152 - A warning about no verify file should have been emitted ok 153 - Revert a change ok 154 - revert_change should have called the proper methods ok 155 - Output should reflect reversion ok 156 - Output should acknowldge revert success ok 157 - Enable log_only ok 158 - Revert a change with log-only ok 159 - Log-only revert_change should not have run the change script ok 160 - Output should reflect logged reversion ok 161 - Output should acknowldge revert success ok 162 - Engine with sqitch with plan file ok 163 - Should get proper change from latest_change() ok 164 - Latest change ID should have been called with no arg ok 165 - Should again get proper change from latest_change() ok 166 - Latest change ID should have been called with offset arg ok 167 - Should get proper change from earliest_change() ok 168 - Earliest change ID should have been called with no arg ok 169 - Should again get proper change from earliest_change() ok 170 - Earliest change ID should have been called with offset arg ok 171 - App::Sqitch::Engine->can('_sync_plan') ok 172 - Plan should start at position -1 ok 173 - start_at should be undef ok 174 - Sync the plan ok 175 - Plan should still be at position -1 ok 176 - start_at should still be undef ok 177 - Should not have updated IDs or hashes ok 178 - Sync the plan again ok 179 - Plan should again be at position -1 ok 180 - start_at should again be undef ok 181 - Still should not have updated IDs or hashes ok 182 - Sync the plan to a tag ok 183 - Plan should now be at position 2 ok 184 - start_at should now be widgets@beta ok 185 - Should have updated IDs ok 186 - Sync the plan with a random script hash ok 187 - Plan should now be at position 1 ok 188 - start_at should now be widgets@beta ok 189 - Should have updated IDs but not hashes ok 190 - Sync the plan with a random script hash ok 191 - Plan should now be at position 1 ok 192 - start_at should now be widgets@beta ok 193 - Should have updated IDs and hashes ok 194 - Sync the plan ok 195 - Plan should be at position 1 ok 196 - start_at should be users@alpha ok 197 - Should have updated hashes but not IDs ok 198 - App::Sqitch::Engine->can('deploy') ok 199 - Deploy to @alpha ok 200 - Plan should be at position 1 ok 201 - Should have deployed through @alpha ok 202 - Should have called _deploy_all() ok 203 - Should have seen the output of the deploy to @alpha ok 204 - Both change names should be output ok 205 - Enable log_only ok 206 - Log-only deploy in $mode mode to @alpha ok 207 - Plan should be at position 1 ok 208 - Should have deployed through @alpha without running files ok 209 - Should have called _deploy_by_change() ok 210 - Should have seen the output of the deploy to @alpha ok 211 - Both change names should be output ok 212 - Enable log_only ok 213 - Log-only deploy in $mode mode to @alpha ok 214 - Plan should be at position 1 ok 215 - Should have deployed through @alpha without running files ok 216 - Should have called _deploy_by_tag() ok 217 - Should have seen the output of the deploy to @alpha ok 218 - Both change names should be output ok 219 - Enable log_only ok 220 - Log-only deploy in $mode mode to @alpha ok 221 - Plan should be at position 1 ok 222 - Should have deployed through @alpha without running files ok 223 - Should have called _deploy_all() ok 224 - Should have seen the output of the deploy to @alpha ok 225 - Both change names should be output ok 226 - Deploy to @alpha with tag mode ok 227 - Plan should again be at position 1 ok 228 - Should have deployed through @alpha without initialization ok 229 - Should have called _deploy_by_tag() ok 230 - Should have seen the output of the deploy to @alpha ok 231 - Both change names should be output ok 232 - Should get an error for an unknown change ok 233 - The exception should report the unknown change ok 234 - Only latest_item() should have been called ok 235 - Deploy to alpha thrice ok 236 - Only latest_item() should have been called ok 237 - Should notify user that already at @alpha ok 238 - Should fail changeing older change ok 239 - Should be a "deploy" error ok 240 - It should suggest using "revert" ok 241 - Should have called latest_item() and latest_tag() ok 242 - Deploy everything by change ok 243 - Plan should be at position 3 ok 244 - Should have deployed everything ok 245 - Should have called _deploy_by_change() ok 246 - Should have emitted deploy announcement and successes ok 247 - Should have seen the output of the deploy to the end ok 248 - Should return success for deploy to up-to-date DB ok 249 - Should have emitted deploy announcement and successes ok 250 - It should have just fetched the latest change ID ok 251 - Should fail on invalid mode ok 252 - Should be a "deploy" error ok 253 - And the message should reflect the unknown mode ok 254 - It should have check for initialization ok 255 - Should have announced destination ok 256 - Engine with sqitch with no file ok 257 - Should die with no changes ok 258 - Should have the localized message ok 259 - It should have checked for the latest item ok 260 - Deploy changewise to index 1 ok 261 - Should changewise deploy to index 2 ok 262 - Should have seen output of each change ok 263 - Output should reflect deploy successes ok 264 - Deploy changewise to index 2 ok 265 - Should changewise deploy to from index 2 to index 3 ok 266 - Should have seen output of changes 2-3 ok 267 - Output should reflect deploy successes ok 268 - Die in _deploy_by_change ok 269 - It should have died in run_file ok 270 - It should have logged the failure ok 271 - Should have seen output for first change ok 272 - Output should reflect deploy failure ok 273 - Deploy tagwise to index 1 ok 274 - Should tagwise deploy to index 1 ok 275 - Should have seen output of each change ok 276 - Output should reflect deploy successes ok 277 - Deploy tagwise to index 3 ok 278 - Should tagwise deploy from index 2 to index 3 ok 279 - Should have seen output of changes 3-3 ok 280 - Output should reflect deploy successes ok 281 - Die in log_deploy_change ok 282 - Should get final deploy failure message ok 283 - It should have reverted back to the last deployed tag ok 284 - Should have seen deploy and revert messages (excluding curry revert) ok 285 - Output should reflect deploy successes and failure ok 286 - The original error should have been vented ok 287 - Enable log_only ok 288 - Die in log_deploy_change log-only ok 289 - Should get final deploy failure message ok 290 - It should have run no deploy or revert scripts ok 291 - Should have seen deploy and revert messages (excluding curry revert) ok 292 - Output should reflect deploy successes and failure ok 293 - The original error should have been vented ok 294 - Die in _deploy_by_tag again ok 295 - Should again get final deploy failure message ok 296 - Should have logged back to the beginning ok 297 - Should have seen deploy and revert messages ok 298 - Output should reflect deploy successes and failure ok 299 - Should have one vented message ok 300 - And it should be the underlying error ok 301 - And it should had notified that all changes were reverted ok 302 - Die in _deploy_by_tag yet again ok 303 - Should die "Deploy failed" again ok 304 - Should have reverted back to last tag ok 305 - Should have user change reversion messages ok 306 - Output should reflect deploy successes and failure ok 307 - Should see underlying error and reversion message ok 308 - Die in _deploy_by_tag again ok 309 - Should once again get final deploy failure message ok 310 - Should have tried to revert one change ok 311 - Should have seen revert message ok 312 - Output should reflect deploy successes and failure ok 313 - Should get reversion failure message ok 314 - Deploy all to index 1 ok 315 - Should tagwise deploy to index 1 ok 316 - Should have seen output of each change ok 317 - Output should reflect deploy successes ok 318 - Deploy tagwise to index 2 ok 319 - Should tagwise deploy to from index 1 to index 2 ok 320 - Should have seen output of changes 3-4 ok 321 - Output should reflect deploy successe ok 322 - Die in _deploy_all ok 323 - Should get final deploy failure message ok 324 - It should have logged up to the failure ok 325 - Should have seen deploy and revert messages excluding revert for failed logging ok 326 - Output should reflect deploy successes and failures ok 327 - The original error should have been vented ok 328 - Enable log_only ok 329 - Die in log-only _deploy_all ok 330 - Should get final deploy failure message ok 331 - It should have run no deploys or reverts ok 332 - Should have seen deploy and revert messages excluding revert for failed logging ok 333 - Output should reflect deploy successes and failures ok 334 - The original error should have been vented ok 335 - Die in _deploy_all again ok 336 - Should again get final deploy failure message ok 337 - Should have reveted all changes and tags ok 338 - Should see all changes revert ok 339 - Output should reflect deploy successes and failures ok 340 - Should notifiy user of error and rollback ok 341 - Die in _deploy_all on the last change ok 342 - Should once again get final deploy failure message ok 343 - Should have deployed to dr_evil and revered down to @alpha ok 344 - Should see changes revert back to @alpha ok 345 - Output should reflect deploy successes and failures ok 346 - Should notifiy user of error and rollback to @alpha ok 347 - Test is_deployed(tag) ok 348 - It should have called is_deployed_tag() ok 349 - Test is_deployed(change) ok 350 - It should have called is_deployed_change() ok 351 - App::Sqitch::Engine::whu->can('deploy_change') ok 352 - Deploy a change ok 353 - It should have been deployed ok 354 - Should have shown change name ok 355 - Output should reflect deploy success ok 356 - Shuld die on deploy failure ok 357 - Should be told the deploy failed ok 358 - It should failed to have been deployed ok 359 - Should have vented the original error ok 360 - Should have shown change name ok 361 - Output should reflect deploy failure ok 362 - App::Sqitch::Engine::whu->can('revert_change') ok 363 - Revert the change ok 364 - It should have been reverted ok 365 - Should have shown reverted change name ok 366 - And the revert failure should be "ok" ok 367 - App::Sqitch::Engine::whu->can('revert') ok 368 - Should return success for no changes to revert ok 369 - Should have notified that there is nothing to revert ok 370 - It should only have called deployed_changes() ok 371 - Nothing should have been output ok 372 - Revert should die on unknown change ok 373 - Should be another "revert" error ok 374 - The message should mention it is an unknown change ok 375 - Should have called change_id_for() with change name ok 376 - Nothing should have been output ok 377 - Revert should die on unknown change ID ok 378 - Should be another "revert" error ok 379 - The message should mention it is an unknown change ok 380 - Should have called change_id_for() with change ID ok 381 - Nothing should have been output ok 382 - Revert should die on undeployed change ok 383 - Should be another "revert" error ok 384 - The message should mention that the change is not deployed ok 385 - change_id_for ok 386 - Nothing should have been output ok 387 - Should return success for revert even with no changes ok 388 - No subsequent change error message should be correct ok 389 - Should have called change_id_for and deployed_changes_since ok 390 - Should return success for known but undeployed change ok 391 - No changes message should be correct ok 392 - Should have called deployed_changes ok 393 - Revert all changes ok 394 - Should have reverted the changes in reverse order ok 395 - Should have prompted to revert all changes ok 396 - It should have said it was reverting all changes and listed them ok 397 - And the revert successes should be emitted ok 398 - Enable log_only ok 399 - Revert all changes log-only ok 400 - Log-only Should have reverted the changes in reverse order ok 401 - Log-only should have prompted to revert all changes ok 402 - It should have said it was reverting all changes and listed them ok 403 - And the revert successes should be emitted ok 404 - Should abort declined revert ok 405 - Declined revert ident should be "revert" ok 406 - Should have exited with value 1 ok 407 - Should have exited with proper message ok 408 - Should have called deployed_changes only ok 409 - Should have prompt to revert all changes ok 410 - It should have emitted nothing else ok 411 - Revert all changes with no prompt ok 412 - Should have reverted the changes in reverse order ok 413 - Should have no prompt ok 414 - It should have said it was reverting all changes and listed them ok 415 - And the revert successes should be emitted ok 416 - Revert to @alpha ok 417 - Should have reverted only changes after @alpha ok 418 - Should have prompt to revert to change ok 419 - Output should show what it reverts to ok 420 - And the revert successes should be emitted ok 421 - Should abort declined revert to @alpha ok 422 - Declined revert ident should be "revert:confirm" ok 423 - Should have exited with value 1 ok 424 - Should have exited with proper message ok 425 - Should have called revert methods ok 426 - Should have prompt to revert to @alpha ok 427 - It should have emitted nothing else ok 428 - Revert to @HEAD^ ok 429 - Should have reverted one changes for @HEAD^ ok 430 - Should have no prompt ok 431 - Output should show what it reverts to ok 432 - And the header and "ok" should be emitted ok 433 - App::Sqitch::Engine->can('change_id_for_depend') ok 434 - Should get error from change_id_for_depend when change not in plan ok 435 - Should get ident "plan" from change_id_for_depend ok 436 - Should have proper message from change_id_for_depend error ok 437 - Should get error from change_id_for_depend when no ID ok 438 - Should get ident "engine" when no ID ok 439 - Should have proper messag from change_id_for_depend error ok 440 - Get a change id ok 441 - Should have passed dependency params to change_id_for() ok 442 - App::Sqitch::Engine->can('find_change') ok 443 - find_change() should work ok 444 - Its parameters should have been passed to change_id_for and change_offset_from_id ok 445 - find_change() should work ok 446 - Project and offset should have been passed off ok 447 - App::Sqitch::Engine->can('find_change_id') ok 448 - find_change_id() should work ok 449 - Its parameters should have been passed to change_id_for and change_offset_from_id ok 450 - find_change_id() should work ok 451 - Project and offset should have been passed off ok 452 - App::Sqitch::Engine->can('verify_change') ok 453 - Verify a change ok 454 - The change file should have been run ok 455 - Should have no info output ok 456 - Verify a change with no verify script. ok 457 - No abstract methods should be called ok 458 - Should have no info output ok 459 - A warning about no verify file should have been emitted ok 460 - App::Sqitch::Engine::whu->can('check_deploy_dependencies') ok 461 - All planned changes should be okay ok 462 - Should have called are_deployed_changes ok 463 - Dependencies should check out even when within those to be deployed ok 464 - Resolved ID should be populated ok 465 - Conflict should throw exception ok 466 - Should be a "deploy" error ok 467 - Should have localized message about the local conflict ok 468 - Conflict should throw exception ok 469 - Should be a "deploy" error ok 470 - Should have localized message about conflicts ok 471 - Should have called change_id_for() twice ok 472 - Conflicting dependencies should have no resolved IDs ok 473 - Conflict should throw another exception ok 474 - Should be a "deploy" error ok 475 - Should have localized message about all three conflicts ok 476 - Should have called change_id_for() twice ok 477 - Conflicting dependencies should have no resolved IDs ok 478 - Missing dependencies should throw exception ok 479 - Should be another "deploy" error ok 480 - Should have localized message missing dependencies without dupes ok 481 - Should have called check_requires ok 482 - Missing requirements should not have resolved ok 483 - Missing dependencies should throw exception ok 484 - Should be another "deploy" error ok 485 - Should have localized conflicts and required error messages ok 486 - Should have called check_requires ok 487 - Missing requirements should not have resolved ok 488 - App::Sqitch::Engine::whu->can('check_revert_dependencies') ok 489 - Should get error reverting change another depend on ok 490 - Dependent error ident should be "revert" ok 491 - Dependent error message should be correct ok 492 - It should have check for requiring changes ok 493 - Should get error reverting change others depend on ok 494 - Dependent error ident should be "revert" ok 495 - Dependent error message should be correct ok 496 - It should have check for requiring changes ok 497 - Should get error reverting change others depend on ok 498 - Dependent error ident should be "revert" ok 499 - Dependent error message should be correct ok 500 - It should have checked twice for requiring changes ok 501 - App::Sqitch::Engine::whu->can('_trim_to') ok 502 - _trim_to should complain about a nonexistent change key ok 503 - _trim_to nonexistent key error ident should be "foo" ok 504 - _trim_to nonexistent key error message should be correct ok 505 - It should have passed the change name and ROOT tag to change_id_for ok 506 - _trim_to should complain about an undeployed change key ok 507 - _trim_to undeployed change error ident should be "yep" ok 508 - _trim_to undeployed change error message should be correct ok 509 - It should have passed change "blah" change_id_for ok 510 - _trim_to should complain about an unplanned change key ok 511 - _trim_to unplanned change error ident should be "oop" ok 512 - _trim_to unplanned change error message should be correct ok 513 - It should have passed "whatever" to change_id_offset_from_id ok 514 - _trim_to should find "roles" at index 0 ok 515 - Changes should be untrimmed ok 516 - It should have passed change 0 ID to change_id_offset_from_id ok 517 - _trim_to should find "widgets" at index 2 ok 518 - First two changes should be shifted off ok 519 - It should have passed change 2 ID to change_id_offset_from_id ok 520 - _trim_to should find "dr_evil" at last index ok 521 - Changes should be untrimmed ok 522 - It should have passed change -1 ID to change_id_offset_from_id ok 523 - _trim_to should find "tacos" at index 4 ok 524 - Last two changes should be popped off ok 525 - It should have passed change -3 ID to change_id_offset_from_id ok 526 - _trim_to should find "lolz^" at index 4 ok 527 - Should pass change -3 ID and offset -1 to change_id_offset_from_id ok 528 - _trim_to should find "curry~" at index 4 ok 529 - Should pass change -3 ID and offset 1 to change_id_offset_from_id ok 530 - _trim_to should find "@HEAD" at index 2 ok 531 - First two changes should be shifted off ok 532 - Should pass tag HEAD to change_id_for ok 533 - _trim_to should find "HEAD" at index 2 ok 534 - First two changes should be shifted off ok 535 - Should pass tag @HEAD to change_id_for ok 536 - _trim_to should find "@ROOT" at index 2 ok 537 - All but First three changes should be popped off ok 538 - Should pass tag ROOT to change_id_for ok 539 - _trim_to should find "ROOT" at index 2 ok 540 - All but First three changes should be popped off ok 541 - Should pass tag @ROOT to change_id_for ok 542 - App::Sqitch::Engine::whu->can('_verify_changes') ok 543 - Verify of a single change should return errcount 0 ok 544 - Declared output should list the change ok 545 - Emitted Output should reflect the verification of the change ok 546 - Should have no comments ok 547 - The verify script should have been run ok 548 - Verify of another single change should return errcount 0 ok 549 - Declared output should list the change ok 550 - Emitted Output should reflect the verification of the change ok 551 - Should have no comments ok 552 - A warning about no verify file should have been emitted ok 553 - The verify script should not have been run ok 554 - Verify of two changes should return errcount 0 ok 555 - Declared output should list both changes ok 556 - Emitted Output should reflect the verification of the changes ok 557 - Should have no comments ok 558 - A warning about no verify file should have been emitted ok 559 - Only one verify script should have been run ok 560 - Verify of two changes and show pending ok 561 - Delcared output should list deployed changes ok 562 - Emitted output should include list of pending changes ok 563 - Should have no comments ok 564 - A warning about no verify file should have been emitted ok 565 - Only one verify script should have been run ok 566 - Verify of a change not in the plan should return errcount 1 ok 567 - Declared Output should reflect the verification of the change ok 568 - Emitted Output should reflect the failure of the verify ok 569 - Should have a comment about the change missing from the plan ok 570 - No verify script should have been run ok 571 - Verify of an out-of-order change should return errcount 1 ok 572 - Declared output should reflect the verification of the change ok 573 - Emitted Output should reflect the failure of the verify ok 574 - Should have a comment about the out-of-order change ok 575 - The verify script should have been run ok 576 - Verify of a change with 2 issues should return 2 ok 577 - Declared output should reflect the verification of the change ok 578 - Emitted Output should reflect the failure of the verify ok 579 - Should have comment about the out-of-order change and script failure ok 580 - No abstract methods should have been called ok 581 - Verify of 2 changes with 2 issues each should return 4 ok 582 - Declraed output should reflect the verification of both changes ok 583 - Emitted Output should reflect the failure of both verifies ok 584 - Should have comment about the out-of-order changes and script failures ok 585 - No abstract methods should have been called ok 586 - _verify_changes with two undeployed changes should returne 2 ok 587 - Listed changes should be both deployed and undeployed ok 588 - Emitted Output should reflect 1 pass ok 589 - Should have comments for undeployed changes ok 590 - No abstract methods should have been called ok 591 - App::Sqitch::Engine::whu->can('verify') ok 592 - Should return success for no deployed changes ok 593 - Notification of the verify should be emitted ok 594 - Should return success for no changes ok 595 - Notification of the verify should be emitted ok 596 - Should get error for no planned changes ok 597 - No planned changes ident should be "verify" ok 598 - No planned changes exitval should be 2 ok 599 - No planned changes message should be correct ok 600 - Notification of the verify should be emitted ok 601 - Verify one change ok 602 - Notification of the verify should be emitted ok 603 - The one change name should be declared ok 604 - Success should be emitted ok 605 - Should have no comments ok 606 - Verify two changes ok 607 - Notification of the verify should be emitted ok 608 - The two change names should be declared ok 609 - Both successes should be emitted ok 610 - Should have no comments ok 611 - Should have warning about missing verify script ok 612 - Verify with a reworked change changes ok 613 - Notification of the verify should be emitted ok 614 - The two change names should be emitted ok 615 - Both successes should be emitted ok 616 - Should have no comments ok 617 - Should have no warnings ok 618 - Verify two specific changes ok 619 - Notification of the verify should be emitted ok 620 - The two change names should be emitted ok 621 - Both successes should be emitted ok 622 - Should have no comments ok 623 - Should have warning about missing verify script ok 624 - Should get failure for failing verify scripts ok 625 - Failed verify ident should be "verify" ok 626 - Failed verify exitval should be 2 ok 627 - Faield verify message should be correct ok 628 - Notification of the verify should be emitted ok 629 - Both change names should be declared ok 630 - Output should include the failure report ok 631 - Should have the errors in comments ok 632 - Nothing should have been vented ok 633 - no warnings ok t/engine_cmd.t ...... 1..201 ok 1 - Load a sqitch sqitch object ok 2 - 'Engine command' isa 'App::Sqitch::Command::engine' ok 3 - 'Engine command' isa 'App::Sqitch::Command' ok 4 - App::Sqitch::Command::engine->can(...) ok 5 - App::Sqitch::Command::engine does TargetConfigCommand ok 6 - Options should be correct ok 7 - Should parse options ok 8 - Options should not conflict with core options ok 9 - Default config should contain empty properties ok 10 - configure() should ignore config file ok 11 - Get full config ok 12 - Should have properties ok 13 - 'plan_file file attribute' isa 'Path::Class::File' ok 14 - 'top_dir directory attribute' isa 'Path::Class::Dir' ok 15 - 'reworked_dir directory attribute' isa 'Path::Class::Dir' ok 16 - 'deploy_dir directory attribute' isa 'Path::Class::Dir' ok 17 - 'reworked_deploy_dir directory attribute' isa 'Path::Class::Dir' ok 18 - 'revert_dir directory attribute' isa 'Path::Class::Dir' ok 19 - 'reworked_revert_dir directory attribute' isa 'Path::Class::Dir' ok 20 - 'verify_dir directory attribute' isa 'Path::Class::Dir' ok 21 - 'reworked_verify_dir directory attribute' isa 'Path::Class::Dir' ok 22 - Should fail on invalid directory name ok 23 - Invalid directory ident should be "engine" ok 24 - The invalid directory messsage should be correct ok 25 - Should fail on invalid directory names ok 26 - Invalid directories ident should be "engine" ok 27 - The invalid properties messsage should be correct ok 28 - Run list() ok 29 - The list of engines should have been output ok 30 - 'Verbose engine' isa 'App::Sqitch::Command::engine' ok 31 - Run verbose list() ok 32 - The list of engines and their targets should have been output ok 33 - No name arg to add() should yield usage ok 34 - No args should be passed to usage ok 35 - Should get error for existing engine ok 36 - Existing engine error ident should be "engine" ok 37 - Existing engine error message should be correct ok 38 - dir deploy does not exist ok 39 - dir revert does not exist ok 40 - dir verify does not exist ok 41 - Add engine "vertica" ok 42 - dir deploy exists ok 43 - dir revert exists ok 44 - dir verify exists ok 45 - Engine "test" target should have been set ok 46 - Engine "vertica" should have no client set ok 47 - Engine "vertica" should have no registry set ok 48 - Engine "vertica" should have no top_dir set ok 49 - Engine "vertica" should have no plan_file set ok 50 - Engine "vertica" should have no deploy_dir set ok 51 - Engine "vertica" should have no revert_dir set ok 52 - Engine "vertica" should have no verify_dir set ok 53 - Engine "vertica" should have no extension set ok 54 - Engine "vertica" should have no variables set ok 55 - 'Engine with target property' isa 'App::Sqitch::Command::engine' ok 56 - Should get error for engine/target mismatch ok 57 - Target mismatch ident should be "engine" ok 58 - Target mismatch message should be correct ok 59 - 'Engine with all properties' isa 'App::Sqitch::Command::engine' ok 60 - my.plan does not exist ok 61 - dir top/deploy does not exist ok 62 - dir top/revert does not exist ok 63 - dir top/verify does not exist ok 64 - dir r/d does not exist ok 65 - dir r/revert does not exist ok 66 - dir r/verify does not exist ok 67 - Add engine "firebird" ok 68 - dir top/deploy exists ok 69 - dir top/revert exists ok 70 - dir top/verify exists ok 71 - dir r/d exists ok 72 - dir r/revert exists ok 73 - dir r/verify exists ok 74 - my.plan exists ok 75 - Engine "firebird" should have registry set ok 76 - Engine "firebird" should have extension set ok 77 - Engine "firebird" should have revert_dir set ok 78 - Engine "firebird" should have variables ok 79 - Engine "firebird" should have reworked_deploy_dir set ok 80 - Engine "firebird" should have client set ok 81 - Engine "firebird" should have plan_file set ok 82 - Engine "firebird" should have top_dir set ok 83 - Engine "firebird" should have reworked_dir set ok 84 - Engine "firebird" should have target set ok 85 - Engine "firebird" should have deploy_dir set ok 86 - Engine "firebird" should have verify_dir set ok 87 - 'Engine with no properties' isa 'App::Sqitch::Command::engine' ok 88 - No name arg to add() should yield usage ok 89 - No args should be passed to usage ok 90 - Should get error from alter for nonexistent engine ok 91 - Nonexistent engine error ident should be "engine" ok 92 - Nonexistent engine error message should be correct ok 93 - Should get error for missing engine ok 94 - Missing engine error ident should be "engine" ok 95 - Missing engine error message should be correct ok 96 - 'Engine with more properties' isa 'App::Sqitch::Command::engine' ok 97 - Alter engine "firebird" ok 98 - Engine "firebird" should have target set ok 99 - Engine "firebird" should have deploy_dir set ok 100 - Engine "firebird" should have verify_dir set ok 101 - Engine "firebird" should have reworked_deploy_dir set ok 102 - Engine "firebird" should have client set ok 103 - Engine "firebird" should have plan_file set ok 104 - Engine "firebird" should have top_dir set ok 105 - Engine "firebird" should have reworked_dir set ok 106 - Engine "firebird" should have extension set ok 107 - Engine "firebird" should have registry set ok 108 - Engine "firebird" should have revert_dir set ok 109 - Engine "firebird" should have variables ok 110 - 'Engine with new top_dir property' isa 'App::Sqitch::Command::engine' ok 111 - dir pg does not exist ok 112 - dir pg/deploy does not exist ok 113 - dir pg/revert does not exist ok 114 - dir pg/verify does not exist ok 115 - Alter engine "pg" ok 116 - dir pg exists ok 117 - dir pg/deploy exists ok 118 - dir pg/revert exists ok 119 - dir pg/verify exists ok 120 - The pg top_dir should have been set ok 121 - Should again get error for missing engine ok 122 - Missing engine error ident should still be "engine" ok 123 - Missing engine error message should include target property ok 124 - 'Engine with target property' isa 'App::Sqitch::Command::engine' ok 125 - Should get error for engine/target mismatch ok 126 - Target mismatch ident should be "engine" ok 127 - Target mismatch message should be correct ok 128 - No name args to remove() should yield usage ok 129 - No args should be passed to usage ok 130 - Should get error for nonexistent engine ok 131 - Nonexistent engine error ident should be "engine" ok 132 - Nonexistent engine error message should be correct ok 133 - Remove ok 134 - Engine "mysql" should now be gone ok 135 - Engine "mysql" should have no variables ok 136 - 'Engein with variables' isa 'App::Sqitch::Command::engine' ok 137 - Add engine "mysql" ok 138 - Engine "mysql" should be back ok 139 - Engine "mysql" should have variables ok 140 - Remove ok 141 - Engine "mysql" should be gone again ok 142 - Engine "mysql" should have no variables ok 143 - Run show() ok 144 - Show with no names should emit the list of engines ok 145 - Show sqlite ok 146 - The full "sqlite" engine should have been shown ok 147 - Show three engines ok 148 - All three engines should have been shown ok 149 - 'Simple engine' isa 'App::Sqitch::Command::engine' ok 150 - Execute undef ok 151 - list() should have been called ok 152 - Execute undef with args ok 153 - list() should have been passed args ok 154 - Execute list ok 155 - list() should have been called ok 156 - Execute list with args ok 157 - list() should have been passed args ok 158 - Execute add ok 159 - add() should have been called ok 160 - Execute add with args ok 161 - add() should have been passed args ok 162 - Execute set-target ok 163 - set_target() should have been called ok 164 - Execute set-target with args ok 165 - set_target() should have been passed args ok 166 - Execute set-registry ok 167 - set_registry() should have been called ok 168 - Execute set-registry with args ok 169 - set_registry() should have been passed args ok 170 - Execute set-client ok 171 - set_client() should have been called ok 172 - Execute set-client with args ok 173 - set_client() should have been passed args ok 174 - Execute remove ok 175 - remove() should have been called ok 176 - Execute remove with args ok 177 - remove() should have been passed args ok 178 - Execute rm ok 179 - remove() should have been called ok 180 - Execute rm with args ok 181 - remove() should have been passed args ok 182 - Execute rename ok 183 - rename() should have been called ok 184 - Execute rename with args ok 185 - rename() should have been passed args ok 186 - Execute show ok 187 - show() should have been called ok 188 - Execute show with args ok 189 - show() should have been passed args ok 190 - Should get an exception for a nonexistent action ok 191 - Nonexistent action message should be passed to usage ok 192 - Update the config ok 193 - The core.mysql config should still be present ok 194 - MySQL config should have been rewritten without deprecated keys ok 195 - Update the config again ok 196 - The core.mysql config should again remain ok 197 - MySQL config should have been rewritten with an integrated target ok 198 - Update the config again ok 199 - The core.mysql config should again remain ok 200 - MySQL config should have been rewritten with a default target ok 201 - no warnings ok t/exasol.t .......... ok 1 - require App::Sqitch::Engine::exasol; ok 2 - config_vars should return three vars ok 3 - An object of class 'App::Sqitch::Engine::exasol' isa 'App::Sqitch::Engine::exasol' ok 4 - Key should be "exasol" ok 5 - Name should be "Exasol" ok 6 - client should default to exaplus ok 7 - registry default should be "sqitch" ok 8 - DB URI should be "db:exasol:" ok 9 - Destination should default to "db:exasol:" ok 10 - Registry destination should be the same as destination ok 11 - exaplus command should be std opts-only ok 12 - _script should work ok 13 - Set some variables ok 14 - _script should assemble variables ok 15 - Target name should NOT fall back on sysuser ok 16 - Registry target should be the same as destination ok 17 - Create another exasol ok 18 - client should be as configured ok 19 - uri should be as configured ok 20 - registry should be as configured ok 21 - exaplus command should be configured from URI config ok 22 - _script should use registry from config settings ok 23 - App::Sqitch::Engine::exasol->can(...) ok 24 - Call _run ok 25 - EXAplus command should be passed to spool() ok 26 - The script should be spooled ok 27 - Call _capture ok 28 - Command and script should be passed to run3() ok 29 - _capture should actually capture ok 30 - _capture should die when exaplus dies ok 31 - STDERR should be emitted by _capture ok 32 - App::Sqitch::Engine::exasol->can('_file_for_script') ok 33 - File without special characters should be used directly ok 34 - Double quotes should be SQL-escaped ok 35 - Get temp dir ok 36 - 'Temp dir' isa 'Path::Class::Dir' ok 37 - File with special char should be aliased ok 38 - File with special char and quotes should be aliased ok 39 - Run foo/bar.sql ok 40 - File should be passed to capture() ok 41 - Run foo/"bar".sql ok 42 - Double quotes in file passed to capture() should be escaped ok 43 - Spool a "file handle" ok 44 - exaplus command should be passed to spool() ok 45 - 'Array ove handles should be passed to spool' isa 'ARRAY' ok 46 - First file handle should be script ok 47 - Second should be the passed handle ok 48 - Verify foo/bar.sql ok 49 - Verify file should be passed to capture() ok 50 - Verify foo/bar.sql again ok 51 - Verify file should be passed to run() for high verbosity ok 52 - App::Sqitch::Engine::exasol->can('_ts2char_format') ok 53 - _ts2char should work ok 54 - App::Sqitch::Engine::exasol->can('_dt') ok 55 - 'Return value of _dt()' isa 'App::Sqitch::DateTime' ok 56 - DateTime year should be set ok 57 - DateTime month should be set ok 58 - DateTime day should be set ok 59 - DateTime hour should be set ok 60 - DateTime minute should be set ok 61 - DateTime second should be set ok 62 - DateTime TZ should be set ok 63 - _char2ts should present timestamp at UTC w/o tz identifier ok 64 - Should have _listagg_format ok 65 - Should have _ts_default ok 66 - Should have _regex_op ok 67 - Should have _simple_from ok 68 - Should have _limit_default ok 69 - Should have no table error ok 70 - Should have no column error ok 71 - Should now have table error ok 72 - Should now have no column error ok 73 - Should get limit and offset ok 74 - Should get limit and offset when offset only ok 75 - Should get only limit with 0 offset ok 76 - Should get only limit with noa offset ok 77 - Should get no limit or offset for 0s ok 78 - Should get no limit or offset for no args ok 79 - Should use regexp_like and prepend wildcard to regex ok 80 - Should use regexp_like and append wildcard to regex ok 81 - Should not chande regex with both anchors ok 82 - Should append wildcards to both ends without anchors ok 83 - App::Sqitch::Engine::exasol->can(...) # Subtest: live database 1..0 # SKIP Unable to live-test Exasol engine: DBD::ODBC 1.59 required to manage Exasol at t/exasol.t line 362. ok 84 # skip Unable to live-test Exasol engine: DBD::ODBC 1.59 required to manage Exasol at t/exasol.t line 362. # 1..84 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 - Key should be "firebird" ok 5 - Name should be "Firebird" ok 6 - Should have username from environment ok 7 - Should have password from environment ok 8 - dbname should be filled in ok 9 - registry dbname should be "sqitch.fdb" ok 10 - registry_destination should be the same as registry URI ok 11 - An object of class 'App::Sqitch::Engine::firebird' isa 'App::Sqitch::Engine::firebird' ok 12 - Set some variables ok 13 - Create a firebird with environment variables set ok 14 - Should have username from environment ok 15 - Should have password from environment ok 16 - Create another firebird ok 17 - client should be as configured ok 18 - URI should be as configured ok 19 - destination should default to URI without password ok 20 - registry_destination should be URI with configured registry and no password ok 21 - firebird command should be configured ok 22 - App::Sqitch::Engine::firebird->can('connection_string') ok 23 - Connection for db:firebird:foo.fdb ok 24 - Connection for db:firebird:foo.com/foo.fdb ok 25 - Connection for db:firebird:foo.com/foo.fdb:1234 ok 26 - Connection for db:firebird:/blah/hi.fdb ok 27 - Connection for db:firebird:foo.com//blah/hi.fdb ok 28 - Connection for db:firebird:foo.com//blah/hi.fdb:1234 ok 29 - Connection for db:firebird:C:/blah/hi.fdb ok 30 - Connection for db:firebird:foo.com/C:/blah/hi.fdb ok 31 - Connection for db:firebird:foo.com/C:/blah/hi.fdb:1234 ok 32 - Should get an exception for no db name ok 33 - No dbname exception ident should be "firebird" ok 34 - No dbname exception message should be correct ok 35 - App::Sqitch::Engine::firebird->can(...) ok 36 - ISC_PASSWORD should be "s3cr3t" ok 37 - Call _run ok 38 - Command should be passed to run() ok 39 - ISC_PASSWORD should be "s3cr3t" ok 40 - Call _spool ok 41 - Command should be passed to spool() ok 42 - ISC_PASSWORD should be "s3cr3t" ok 43 - Call _capture ok 44 - Command should be passed to capture() ok 45 - Create a firebird with sqitch with no pw ok 46 - ISC_PASSWORD should not exist ok 47 - Call _run again ok 48 - Command should be passed to run() again ok 49 - ISC_PASSWORD should not exist ok 50 - Call _spool again ok 51 - Command should be passed to spool() again ok 52 - ISC_PASSWORD should not exist ok 53 - Call _capture again ok 54 - Command should be passed to capture() again ok 55 - ISC_PASSWORD should not exist ok 56 - Run foo/bar.sql ok 57 - File should be passed to run() ok 58 - ISC_PASSWORD should not exist ok 59 - Spool a "file handle" ok 60 - Handle should be passed to spool() ok 61 - ISC_PASSWORD should not exist ok 62 - Verify foo/bar.sql ok 63 - Verify file should be passed to capture() ok 64 - ISC_PASSWORD should not exist ok 65 - Verify foo/bar.sql again ok 66 - Verify file should be passed to run() for high verbosity ok 67 - App::Sqitch::Engine::firebird->can('_ts2char_format') ok 68 - _ts2char_format should work ok 69 - App::Sqitch::Engine::firebird->can('_dt') ok 70 - 'Return value of _dt()' isa 'App::Sqitch::DateTime' ok 71 - DateTime year should be set ok 72 - DateTime month should be set ok 73 - DateTime day should be set ok 74 - DateTime hour should be set ok 75 - DateTime minute should be set ok 76 - DateTime second should be set ok 77 - DateTime TZ should be set ok 78 - App::Sqitch::Engine::firebird->can(...) # Subtest: live database 1..0 # SKIP Unable to live-test Firebird engine: Unable to locate Firebird ISQL; set "engine.firebird.client" via sqitch config ok 79 # skip Unable to live-test Firebird engine: Unable to locate Firebird ISQL; set "engine.firebird.client" via sqitch config 1..79 ok t/help.t ............ 1..20 ok 1 - Load a sqitch sqitch object ok 2 - 'Load help command' isa 'App::Sqitch::Command::help' ok 3 - 'Help command' isa 'App::Sqitch::Command' ok 4 - App::Sqitch::Command::help->can(...) ok 5 - Options should be correct ok 6 - Should parse options ok 7 - Options should not conflict with core options ok 8 - Execute help ok 9 - Should show sqitch app docs ok 10 - Execute "config" help ok 11 - Should show "config" command docs ok 12 - Execute "changes" help ok 13 - Should show "changes" command docs ok 14 - Execute "tutorial" help ok 15 - Should show "tutorial" command docs ok 16 - Should get an exception for "nonexistent" help ok 17 - Exception ident should be "help" ok 18 - Should get failure message for nonexistent command ok 19 - Exception exit val should be 1 ok 20 - no warnings ok t/init.t ............ 1..187 ok 1 - use App::Sqitch::Command::init; ok 2 - 'App::Sqitch::Command::init' isa 'App::Sqitch::Command' ok 3 - 'Init command' isa 'App::Sqitch::Command::init' ok 4 - 'Init commmand' isa 'App::Sqitch::Command' ok 5 - App::Sqitch::Command::init->can(...) ok 6 - App::Sqitch::Command::init does TargetConfigCommand ok 7 - Options should be correct ok 8 - Should parse options ok 9 - Options should not conflict with core options ok 10 - Default config should contain empty properties ok 11 - Should accept a URI in options ok 12 - Get full config ok 13 - 'uri propertiy' isa 'URI' ok 14 - Should have properties ok 15 - 'plan_file file attribute' isa 'Path::Class::File' ok 16 - 'top_dir directory attribute' isa 'Path::Class::Dir' ok 17 - 'reworked_dir directory attribute' isa 'Path::Class::Dir' ok 18 - 'deploy_dir directory attribute' isa 'Path::Class::Dir' ok 19 - 'reworked_deploy_dir directory attribute' isa 'Path::Class::Dir' ok 20 - 'revert_dir directory attribute' isa 'Path::Class::Dir' ok 21 - 'reworked_revert_dir directory attribute' isa 'Path::Class::Dir' ok 22 - 'verify_dir directory attribute' isa 'Path::Class::Dir' ok 23 - 'reworked_verify_dir directory attribute' isa 'Path::Class::Dir' ok 24 - Should fail on invalid directory name ok 25 - Invalid directory ident should be "init" ok 26 - The invalid directory messsage should be correct ok 27 - Should fail on invalid directory names ok 28 - Invalid directories ident should be "init" ok 29 - The invalid properties messsage should be correct ok 30 - 'default target' isa 'App::Sqitch::Target' ok 31 - App::Sqitch::Command::init->can('make_directories_for') ok 32 - dir init.mkdir does not exist ok 33 - dir init.mkdir/deploy does not exist ok 34 - dir init.mkdir/revert does not exist ok 35 - dir init.mkdir/verify does not exist ok 36 - dir init.mkdir/reworked/deploy does not exist ok 37 - dir init.mkdir/reworked/revert does not exist ok 38 - dir init.mkdir/reworked/verify does not exist ok 39 - Make the directories ok 40 - dir init.mkdir/deploy exists ok 41 - dir init.mkdir/revert exists ok 42 - dir init.mkdir/verify exists ok 43 - dir init.mkdir/reworked/deploy exists ok 44 - dir init.mkdir/reworked/revert exists ok 45 - dir init.mkdir/reworked/verify exists ok 46 - Each should have been sent to info ok 47 - Make the directories again ok 48 - Nothing should have been sent to info ok 49 - Make the directories once more ok 50 - revert dir exists again ok 51 - Should have noted creation of revert dir ok 52 - Should fail on permission issue ok 53 - Permission error should have ident "init" ok 54 - The permission error should be formatted properly ok 55 - App::Sqitch::Command::init->can('write_config') ok 56 - Another init object ok 57 - nonexistent.local does not exist ok 58 - Write the config ok 59 - nonexistent.local exists ok 60 - The configuration file should have no variables ok 61 - The creation should be sent to info ok 62 - All in core section should be commented-out ok 63 - Another init object ok 64 - Write the config ok 65 - nonexistent.local exists ok 66 - The configuration should have been written with the one setting ok 67 - The creation should be sent to info ok 68 - Other settings should be commented-out ok 69 - Write the config again ok 70 - The configuration should be unchanged ok 71 - Nothing should have been sent to info ok 72 - Make an init object with user config ok 73 - nonexistent.local does not exist ok 74 - Write the config with a user conf ok 75 - nonexistent.local exists ok 76 - The configuration should just have core.top_dir ok 77 - The creation should be sent to info again ok 78 - Other settings should be commented-out ok 79 - Make an init object with system config ok 80 - Get target ok 81 - nonexistent.local does not exist ok 82 - Write the config with a system conf ok 83 - nonexistent.local exists ok 84 - The configuration should have local and system config ok 85 - The creation should be sent to info again ok 86 - Other settings should be commented-out ok 87 - Create new init with sqitch non-default attributes ok 88 - Write the config with core attrs ok 89 - The creation should be sent to info once more ok 90 - The configuration should have been written with core and engine values ok 91 - Create new init with sqitch with default engine attributes ok 92 - Write the config with engine attrs ok 93 - The creation should be sent to info again again ok 94 - The configuration should have been written with only the engine var ok 95 - Engine section should be present but commented-out ok 96 - Make an init with sqlite and user config ok 97 - nonexistent.local does not exist ok 98 - Write the config with sqlite config ok 99 - The creation should be sent to info once more ok 100 - New config should have been written with sqlite values ok 101 - Configured client should be included in a comment ok 102 - Configured target should be included in a comment ok 103 - Configured registry should be included in a comment ok 104 - Create new init with sqitch with more non-default engine attributes ok 105 - Write the config with more engine attrs ok 106 - The creation should be sent to info one more time ok 107 - The configuration should have been written with client values ok 108 - registry should be included in a comment ok 109 - Create new init with sqitch with default engine attributes ok 110 - Write the config with engine attrs ok 111 - The creation should be sent to info again again again ok 112 - The configuration should have been written with only the engine var ok 113 - Engine section should be present but commented-out ok 114 - Make an init with pg and user config ok 115 - nonexistent.local does not exist ok 116 - Write the config with pg config ok 117 - The pg config creation should be sent to info ok 118 - The configuration should have been written with pg options ok 119 - Configured registry should be in a comment ok 120 - Configured target should be in a comment ok 121 - App::Sqitch::Command::init->can('write_plan') ok 122 - Plan file should not yet exist ok 123 - Write the plan file ok 124 - The plan creation should be sent to info ok 125 - Plan file should now exist ok 126 - The contents should be correct ok 127 - Write the plan file again ok 128 - Plan file should still exist ok 129 - The contents should be identical ok 130 - Should get an error initialing a different project ok 131 - Initialization error ident should be "init" ok 132 - Initialzation error message should be correct ok 133 - Should get an error initialzing a non-plan file ok 134 - Non-plan file error ident should be "init" ok 135 - Non-plan file error message should be correct ok 136 - The file should not be overwritten ok 137 - Create new init with sqitch with project and URI ok 138 - Write the plan file again ok 139 - The plan creation should be sent to info againq ok 140 - Plan file should again exist ok 141 - The plan should include the project and uri pragmas ok 142 - App::Sqitch::Command::init->can('_validate_project') ok 143 - No project should yield usage ok 144 - No args should be passed to usage ok 145 - Should get error for invalid project name "^foo" ok 146 - Bad project "^foo" ident should be "init" ok 147 - Bad project "^foo" error message should be correct ok 148 - Should get error for invalid project name "foo^" ok 149 - Bad project "foo^" ident should be "init" ok 150 - Bad project "foo^" error message should be correct ok 151 - Should get error for invalid project name "foo^6" ok 152 - Bad project "foo^6" ident should be "init" ok 153 - Bad project "foo^6" error message should be correct ok 154 - Should get error for invalid project name "foo^666" ok 155 - Bad project "foo^666" ident should be "init" ok 156 - Bad project "foo^666" error message should be correct ok 157 - Should get error for invalid project name "%hi" ok 158 - Bad project "%hi" ident should be "init" ok 159 - Bad project "%hi" error message should be correct ok 160 - Should get error for invalid project name "hi!" ok 161 - Bad project "hi!" ident should be "init" ok 162 - Bad project "hi!" error message should be correct ok 163 - Should get error for invalid project name "foo@bar" ok 164 - Bad project "foo@bar" ident should be "init" ok 165 - Bad project "foo@bar" error message should be correct ok 166 - Should get error for invalid project name "foo:bar" ok 167 - Bad project "foo:bar" ident should be "init" ok 168 - Bad project "foo:bar" error message should be correct ok 169 - Should get error for invalid project name "+foo" ok 170 - Bad project "+foo" ident should be "init" ok 171 - Bad project "+foo" error message should be correct ok 172 - Should get error for invalid project name "-foo" ok 173 - Bad project "-foo" ident should be "init" ok 174 - Bad project "-foo" error message should be correct ok 175 - Should get error for invalid project name "@foo" ok 176 - Bad project "@foo" ident should be "init" ok 177 - Bad project "@foo" error message should be correct ok 178 - Execute! ok 179 - dir plan.dir exists ok 180 - dir plan.dir/deploy exists ok 181 - dir plan.dir/revert exists ok 182 - dir plan.dir/verify exists ok 183 - nonexistent.local exists ok 184 - plan.dir/sqitch.plan exists ok 185 - Should have status messages ok 186 - The plan should have the --project name ok 187 - 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 "2019-06-06 02:21:25 -0700" ok 41 - Format "%{date:rfc}c" should output "Thu, 06 Jun 2019 02:21:25 -0700" ok 42 - Format "%{d:long}c" should output "June 6, 2019 at 2:21:25 AM PDT" ok 43 - Format "%{d:cldr:HH'h' mm'm'}c" should output "02h 21m" ok 44 - Format "%{d:strftime:%a at %H:%M:%S}c" should output "Thu at 02:21:25" 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 "2019-06-05 02:21:25 -0700" ok 51 - Format "%{date:rfc}p" should output "Wed, 05 Jun 2019 02:21:25 -0700" ok 52 - Format "%{d:long}p" should output "June 5, 2019 at 2:21:25 AM PDT" ok 53 - Format "%{d:cldr:HH'h' mm'm'}p" should output "02h 21m" ok 54 - Format "%{d:strftime:%a at %H:%M:%S}p" should output "Wed at 02:21:25" 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 2019-06-06T09:21:25Z[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 yellow ok 139 - Format "%{red}C" should output red ok 140 - Format "%{blue}C" should output blue ok 141 - Format "%{cyan}C" should output cyan ok 142 - Format "%{magenta}C" should output magenta ok 143 - Format "%{:event}C" on "deploy" should output green ok 144 - Format "%{:event}C" on "revert" should output blue ok 145 - Format "%{:event}C" on "fail" should output red 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..253 ok 1 - require App::Sqitch::Command::log; ok 2 - Load a sqitch object ok 3 - 'log command' isa 'App::Sqitch::Command::log' ok 4 - App::Sqitch::Command::log->can(...) ok 5 - App::Sqitch::Command::log does ConnectingCommand ok 6 - Options should be correct ok 7 - Default target should be undef ok 8 - 'new status with target' isa 'App::Sqitch::Command::log' ok 9 - Should have target "foo" ok 10 - 'Formatter' isa 'App::Sqitch::ItemFormatter' ok 11 - Should get empty hash for no config or options ok 12 - Should get error for invalid date format in config ok 13 - Invalid date format error ident should be "datetime" ok 14 - Invalid date format error message should be correct ok 15 - Should get error for invalid date format in optsions ok 16 - Invalid date format error ident should be "log" ok 17 - Invalid date format error message should be correct ok 18 - Should get error for invalid format in config ok 19 - Invalid format error ident should be "log" ok 20 - Invalid format error message should be correct ok 21 - Should get error for invalid format in optsions ok 22 - Invalid format error ident should be "log" ok 23 - Invalid format error message should be correct ok 24 - Configuration should respect --no-color, setting "never" ok 25 - --oneline should set format ok 26 - --oneline should set abbrev to 6 ok 27 - --oneline should not override --format ok 28 - --oneline should not overrride --abbrev ok 29 - Configuration should respect --no-color even when configure is set 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 - Configuration should respect color option ok 35 - Configuration should respect color config ok 36 - Configuration should respect color option ok 37 - Configuration should respect color config ok 38 - Instantiate with format "raw" ok 39 - Format "raw" should output correctly ok 40 - Format "raw" should output correctly without tags ok 41 - Instantiate with format "full" ok 42 - Format "full" should output correctly ok 43 - Instantiate with format "full" and date format "rfc" ok 44 - Format "full" and date format "rfc" should output correctly ok 45 - Instantiate with format "full" and date format "long" ok 46 - Format "full" and date format "long" should output correctly ok 47 - Instantiate with format "full" and date format "medium" ok 48 - Format "full" and date format "medium" should output correctly ok 49 - Format "full" should output correctly without tags ok 50 - Instantiate with format "long" ok 51 - Format "long" should output correctly ok 52 - Format "long" should output correctly without tags ok 53 - Instantiate with format "medium" ok 54 - Format "medium" should output correctly ok 55 - Instantiate with format "medium" and date format "rfc" ok 56 - Format "medium" and date format "rfc" should output correctly ok 57 - Instantiate with format "medium" and date format "long" ok 58 - Format "medium" and date format "long" should output correctly ok 59 - Instantiate with format "medium" and date format "medium" ok 60 - Format "medium" and date format "medium" should output correctly ok 61 - Instantiate with format "short" ok 62 - Format "short" should output correctly ok 63 - Instantiate with format "oneline" ok 64 - Format "oneline" should output correctly ok 65 - Format "%e" should output "deploy" ok 66 - Format "%e" should output "revert" ok 67 - Format "%e" 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 "%l" should output "deploy" ok 72 - Format "%l" should output "revert" ok 73 - Format "%l" should output "fail" ok 74 - Format "%{event}_" should output "Event: " ok 75 - Format "%{change}_" should output "Change: " ok 76 - Format "%{committer}_" should output "Committer:" ok 77 - Format "%{planner}_" should output "Planner: " ok 78 - Format "%{by}_" should output "By: " ok 79 - Format "%{date}_" should output "Date: " ok 80 - Format "%{committed}_" should output "Committed:" ok 81 - Format "%{planned}_" should output "Planned: " ok 82 - Format "%{name}_" should output "Name: " ok 83 - Format "%{email}_" should output "Email: " ok 84 - Format "%{requires}_" should output "Requires: " ok 85 - Format "%{conflicts}_" should output "Conflicts:" ok 86 - Format "%H" should output "123456789" ok 87 - Format "%h" should output "123456789" ok 88 - Format "%{5}h" should output "12345" ok 89 - Format "%{7}h" should output "1234567" ok 90 - Format "%n" should output "foo" ok 91 - Format "%n" should output "bar" ok 92 - Format "%o" should output "foo" ok 93 - Format "%o" should output "bar" ok 94 - Format "%c" should output "larry " ok 95 - Format "%{n}c" should output "damian" ok 96 - Format "%{name}c" should output "chip" ok 97 - Format "%{e}c" should output "larry@example.com" ok 98 - Format "%{email}c" should output "damian@example.com" ok 99 - Format "%{date}c" should output "2019-06-06 02:21:27 -0700" ok 100 - Format "%{date:rfc}c" should output "Thu, 06 Jun 2019 02:21:27 -0700" ok 101 - Format "%{d:long}c" should output "June 6, 2019 at 2:21:27 AM PDT" ok 102 - Format "%{d:cldr:HH'h' mm'm'}c" should output "02h 21m" ok 103 - Format "%{d:strftime:%a at %H:%M:%S}c" should output "Thu at 02:21:27" ok 104 - Format "%p" should output "larry " ok 105 - Format "%{n}p" should output "damian" ok 106 - Format "%{name}p" should output "chip" ok 107 - Format "%{e}p" should output "larry@example.com" ok 108 - Format "%{email}p" should output "damian@example.com" ok 109 - Format "%{date}p" should output "2019-06-05 02:21:27 -0700" ok 110 - Format "%{date:rfc}p" should output "Wed, 05 Jun 2019 02:21:27 -0700" ok 111 - Format "%{d:long}p" should output "June 5, 2019 at 2:21:27 AM PDT" ok 112 - Format "%{d:cldr:HH'h' mm'm'}p" should output "02h 21m" ok 113 - Format "%{d:strftime:%a at %H:%M:%S}p" should output "Wed at 02:21:27" ok 114 - Format "%t" should output "" ok 115 - Format "%t" should output " @foo" ok 116 - Format "%t" should output " @foo, @bar" ok 117 - Format "%{|}t" should output "" ok 118 - Format "%{|}t" should output " @foo" ok 119 - Format "%{|}t" should output " @foo|@bar" ok 120 - Format "%T" should output "" ok 121 - Format "%T" should output " (@foo)" ok 122 - Format "%T" should output " (@foo, @bar)" ok 123 - Format "%{|}T" should output "" ok 124 - Format "%{|}T" should output " (@foo)" ok 125 - Format "%{|}T" should output " (@foo|@bar)" ok 126 - Format "%r" should output "" ok 127 - Format "%r" should output " foo" ok 128 - Format "%r" should output " foo, bar" ok 129 - Format "%{|}r" should output "" ok 130 - Format "%{|}r" should output " foo" ok 131 - Format "%{|}r" should output " foo|bar" ok 132 - Format "%R" should output "" ok 133 - Format "%R" should output "Requires: foo[newline]" ok 134 - Format "%R" should output "Requires: foo, bar[newline]" ok 135 - Format "%{|}R" should output "" ok 136 - Format "%{|}R" should output "Requires: foo[newline]" ok 137 - Format "%{|}R" should output "Requires: foo|bar[newline]" ok 138 - Format "%x" should output "" ok 139 - Format "%x" should output " foo" ok 140 - Format "%x" should output " foo, bax" ok 141 - Format "%{|}x" should output "" ok 142 - Format "%{|}x" should output " foo" ok 143 - Format "%{|}x" should output " foo|bax" ok 144 - Format "%X" should output "" ok 145 - Format "%X" should output "Conflicts: foo[newline]" ok 146 - Format "%X" should output "Conflicts: foo, bar[newline]" ok 147 - Format "%{|}X" should output "" ok 148 - Format "%{|}X" should output "Conflicts: foo[newline]" ok 149 - Format "%{|}X" should output "Conflicts: foo|bar[newline]" ok 150 - Format "%{yellow}C" should output "" ok 151 - Format "%{:event}C" should output "" ok 152 - Format "%v" should output "[newline]" ok 153 - Format "%%" should output "%" ok 154 - Format "%s" should output "hi there" ok 155 - Format "%s" should output "hi there" ok 156 - Format "%s" should output "subject line" ok 157 - Format "%{ }s" should output " hi there" ok 158 - Format "%{xx}s" should output "xxhi there" ok 159 - Format "%b" should output "" ok 160 - Format "%b" should output "yo" ok 161 - Format "%b" should output "first graph[newline][newline]second graph[newline][newline]" ok 162 - Format "%{ }b" should output "" ok 163 - Format "%{xxx }b" should output "xxx yo" ok 164 - Format "%{x}b" should output "xfirst graph[newline]x[newline]xsecond graph[newline]x[newline]" ok 165 - Format "%{ }b" should output " yo" ok 166 - Format "%B" should output "hi there" ok 167 - Format "%B" should output "hi there[newline]yo" ok 168 - Format "%B" should output "subject line[newline][newline]first graph[newline][newline]second graph[newline][newline]" ok 169 - Format "%{ }B" should output " hi there" ok 170 - Format "%{xxx }B" should output "xxx hi there[newline]xxx yo" ok 171 - Format "%{x}B" should output "xsubject line[newline]x[newline]xfirst graph[newline]x[newline]xsecond graph[newline]x[newline]" ok 172 - Format "%{ }B" should output " hi there [newline] yo" ok 173 - Format "%{change}a" should output "change lolz[newline]" ok 174 - Format "%{change_id}a" should output "change_id 000011112222333444[newline]" ok 175 - Format "%{event}a" should output "event deploy[newline]" ok 176 - Format "%{tags}a" should output "tags @beta, @gamma[newline]" ok 177 - Format "%{requires}a" should output "requires foo, bar[newline]" ok 178 - Format "%{conflicts}a" should output "" ok 179 - Format "%{committer_name}a" should output "committer_name larry[newline]" ok 180 - Format "%{committed_at}a" should output "committed_at 2019-06-06T09:21:27Z[newline]" ok 181 - Should get exception for format "%_" ok 182 - %_ error ident should be "format" ok 183 - %_ error message should be correct ok 184 - Should get exception for unknown label in format "%_" ok 185 - Invalid %_ label error ident should be "format" ok 186 - Invalid %_ label error message should be correct ok 187 - Instantiate with abbrev => 4 ok 188 - %h should respect abbrev ok 189 - %H should not respect abbrev ok 190 - Instantiate with date_format => "rfc" ok 191 - %{date}c should respect the date_format attribute ok 192 - %{iso}c should override the date_format attribute ok 193 - Should get exception for unknown attribute passed to %a ok 194 - %a error ident should be "format" ok 195 - %a error message should be correct ok 196 - Format "%{yellow}C" should output yellow ok 197 - Format "%{red}C" should output red ok 198 - Format "%{blue}C" should output blue ok 199 - Format "%{cyan}C" should output cyan ok 200 - Format "%{magenta}C" should output magenta ok 201 - Format "%{:event}C" on "deploy" should output green ok 202 - Format "%{:event}C" on "revert" should output blue ok 203 - Format "%{:event}C" on "fail" should output red ok 204 - Instantiate with format "full" again ok 205 - Format "full" should output correctly with color ok 206 - Instantiate with format "long" again ok 207 - Format "long" should output correctly with color ok 208 - Instantiate with format "medium" again ok 209 - Format "medium" should output correctly with color ok 210 - Instantiate with format "short" again ok 211 - Format "short" should output correctly with color ok 212 - Instantiate with format "oneline" again ok 213 - Format "oneline" should output correctly with color ok 214 - Should get an error for an invalid color ok 215 - Invalid color error ident should be "format" ok 216 - Invalid color error message should be correct ok 217 - Should get exception for unititialied db ok 218 - Uninit db error ident should be "log" ok 219 - Uninit db exit val should be 1 ok 220 - Uninit db error message should be correct ok 221 - Should have passed undef to Target ok 222 - Should get error for empty event table ok 223 - no events error ident should be "log" ok 224 - no events exit val should be 1 ok 225 - no events error message should be correct ok 226 - Search should have been limited to one row ok 227 - Should have passed undef to Target again ok 228 - Execute log ok 229 - Should have passed undef to Target once more ok 230 - The proper args should have been passed to search_events ok 231 - The change should have been paged ok 232 - Execute with target arg ok 233 - Target name should have been passed to Target ok 234 - The proper args should have been passed to search_events ok 235 - The change should have been paged ok 236 - Execute with plan file arg ok 237 - Default engine target should have been passed to Target ok 238 - The proper args should have been passed to search_events ok 239 - The change should have been paged ok 240 - 'log with attributes' isa 'App::Sqitch::Command::log' ok 241 - Execute log with attributes ok 242 - Should have passed target name to Target ok 243 - All params should have been passed to search_events ok 244 - Both changes should have been paged with no headers ok 245 - Execute log with attributes ok 246 - Should have passed enginetarget to Target ok 247 - Should have got warning for two targets ok 248 - 'log with bad format' isa 'App::Sqitch::Command::log' ok 249 - Should get an exception for a bad format code ok 250 - bad format code format error ident should be "format" ok 251 - bad format code format error message should be correct ok 252 - Should have passed target name to Target ok 253 - no warnings ok t/mooseless.t ....... ok 1 - No moose in App::Sqitch ok 2 - No moose in App::Sqitch::Command ok 3 - No moose in App::Sqitch::ItemFormatter ok 4 - No moose in App::Sqitch::DateTime ok 5 - No moose in App::Sqitch::Config ok 6 - No moose in App::Sqitch::Types ok 7 - No moose in App::Sqitch::Target ok 8 - No moose in App::Sqitch::X ok 9 - No moose in App::Sqitch::Plan ok 10 - No moose in App::Sqitch::Engine ok 11 - No moose in App::Sqitch::Role::ContextCommand ok 12 - No moose in App::Sqitch::Role::RevertDeployCommand ok 13 - No moose in App::Sqitch::Role::TargetConfigCommand ok 14 - No moose in App::Sqitch::Role::ConnectingCommand ok 15 - No moose in App::Sqitch::Role::DBIEngine ok 16 - No moose in App::Sqitch::Plan::LineList ok 17 - No moose in App::Sqitch::Plan::Depend ok 18 - No moose in App::Sqitch::Plan::Tag ok 19 - No moose in App::Sqitch::Plan::Pragma ok 20 - No moose in App::Sqitch::Plan::ChangeList ok 21 - No moose in App::Sqitch::Plan::Blank ok 22 - No moose in App::Sqitch::Plan::Line ok 23 - No moose in App::Sqitch::Plan::Change ok 24 - No moose in App::Sqitch::Engine::vertica ok 25 - No moose in App::Sqitch::Engine::snowflake ok 26 - No moose in App::Sqitch::Engine::firebird ok 27 - No moose in App::Sqitch::Engine::exasol ok 28 - No moose in App::Sqitch::Engine::mysql ok 29 - No moose in App::Sqitch::Engine::pg ok 30 - No moose in App::Sqitch::Engine::oracle ok 31 - No moose in App::Sqitch::Engine::sqlite ok 32 - No moose in App::Sqitch::Command::show ok 33 - No moose in App::Sqitch::Command::config ok 34 - No moose in App::Sqitch::Command::status ok 35 - No moose in App::Sqitch::Command::tag ok 36 - No moose in App::Sqitch::Command::deploy ok 37 - No moose in App::Sqitch::Command::rebase ok 38 - No moose in App::Sqitch::Command::verify ok 39 - No moose in App::Sqitch::Command::log ok 40 - No moose in App::Sqitch::Command::upgrade ok 41 - No moose in App::Sqitch::Command::checkout ok 42 - No moose in App::Sqitch::Command::bundle ok 43 - No moose in App::Sqitch::Command::target ok 44 - No moose in App::Sqitch::Command::engine ok 45 - No moose in App::Sqitch::Command::revert ok 46 - No moose in App::Sqitch::Command::rework ok 47 - No moose in App::Sqitch::Command::help ok 48 - No moose in App::Sqitch::Command::plan ok 49 - No moose in App::Sqitch::Command::add ok 50 - No moose in App::Sqitch::Command::init 1..50 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 - Key should be "mysql" ok 5 - Name should be "MySQL" ok 6 - client should default to mysql ok 7 - registry default should be "sqitch" ok 8 - registry_uri should be correct ok 9 - uri should be "db:mysql:" ok 10 - registry_destination should be the same as registry_uri ok 11 - mysql command should be user and std opts-only ok 12 - Should have emitted a warning for no database name ok 13 - An object of class 'App::Sqitch::Engine::mysql' isa 'App::Sqitch::Engine::mysql' ok 14 - Create engine with MYSQL_PWD set ok 15 - Password should be set from environment ok 16 - URI should reflect MYSQL_HOST ok 17 - URI should reflect MYSQL_TCP_PORT ok 18 - Create another mysql ok 19 - client should be as configured ok 20 - URI should be as configured ok 21 - target name should be the URI ok 22 - destination should be the URI ok 23 - registry should be as configured ok 24 - Sqitch DB URI should be the same as uri but with DB name "meta" ok 25 - registry_destination should be the sqitch DB URL ok 26 - mysql command should be configured ok 27 - Create a mysql with query params ok 28 - mysql command should be configured with query vals ok 29 - Create a mysql with disabled query params ok 30 - mysql command should not have disabled param options ok 31 - App::Sqitch::Engine::mysql->can(...) ok 32 - Create a mysql with sqitch with options ok 33 - MYSQL_PWD should be "s3cr3t" ok 34 - Call _run ok 35 - Command should be passed to run() ok 36 - MYSQL_PWD should be "s3cr3t" ok 37 - Call _spool ok 38 - Command should be passed to spool() ok 39 - MYSQL_PWD should be "s3cr3t" ok 40 - Call _spool with variables ok 41 - Get variables file handle ok 42 - Command should be passed to spool() after variables handle ok 43 - Variables should have been escaped and set ok 44 - MYSQL_PWD should be "s3cr3t" ok 45 - Call _capture ok 46 - Command should be passed to capture() ok 47 - Create a mysql with sqitch with no pw ok 48 - MYSQL_PWD should not exist ok 49 - Call _run again ok 50 - Command should be passed to run() again ok 51 - MYSQL_PWD should not exist ok 52 - Call _spool again ok 53 - Command should be passed to spool() again ok 54 - MYSQL_PWD should not exist ok 55 - Call _capture again ok 56 - Command should be passed to capture() again ok 57 - MYSQL_PWD should not exist ok 58 - Run foo/bar.sql ok 59 - File should be passed to run() ok 60 - MYSQL_PWD should not exist ok 61 - Spool a "file handle" ok 62 - Handle should be passed to spool() ok 63 - MYSQL_PWD should not exist ok 64 - Verify foo/bar.sql ok 65 - Verify file should be passed to capture() ok 66 - MYSQL_PWD should not exist ok 67 - Verify foo/bar.sql again ok 68 - Verifile file should be passed to run() for high verbosity ok 69 - MYSQL_PWD should not exist ok 70 - Run foo/bar.sql with vars ok 71 - Variabls and file should be passed to run() ok 72 - MYSQL_PWD should not exist ok 73 - Spool a "file handle" ok 74 - Get variables file handle ok 75 - File handle should be passed to spool() after variables handle ok 76 - Variables should have been escaped and set ok 77 - MYSQL_PWD should not exist ok 78 - Verbosely verify foo/bar.sql with vars ok 79 - Variables and verify file should be passed to run() ok 80 - MYSQL_PWD should not exist ok 81 - Verify foo/bar.sql with vars ok 82 - Verify file should be passed to capture() ok 83 - App::Sqitch::Engine::mysql->can('_ts2char_format') ok 84 - _ts2char_format should work ok 85 - App::Sqitch::Engine::mysql->can('_dt') ok 86 - 'Return value of _dt()' isa 'App::Sqitch::DateTime' ok 87 - DateTime year should be set ok 88 - DateTime month should be set ok 89 - DateTime day should be set ok 90 - DateTime hour should be set ok 91 - DateTime minute should be set ok 92 - DateTime second should be set ok 93 - DateTime TZ should be set ok 94 - Should have _listagg_format ok 95 - Should have _regex_op ok 96 - Should have _simple_from ok 97 - Should have _limit_default ok 98 - Should have _ts_default with fractional seconds ok 99 - Should have _ts_default without fractional seconds on 5.1 ok 100 - Should have _ts_default without fractional seconds on mariadb ok 101 - Should have no table error ok 102 - Should have no column error ok 103 - Should now have table error ok 104 - Still should have no column error ok 105 - Should again have table error ok 106 - Still should have no column error ok 107 - Should again have no table error ok 108 - Should now have no column error ok 109 - Should get limit and offset ok 110 - Should get limit and offset when offset only ok 111 - Should get only limit with 0 offset ok 112 - Should get only limit with noa offset ok 113 - Should get no limit or offset for 0s ok 114 - Should get no limit or offset for no args ok 115 - Should use REGEXP for regex expr ok 116 - 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 local MySQL server through socket '/tmp/mysql.sock' (2) at t/mysql.t line 450. ok 117 # skip Unable to live-test MySQL engine: DBI connect('database=information_schema','root',...) failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) at t/mysql.t line 450. # 1..117 ok t/options.t ......... ok 1 - use App::Sqitch; ok 2 - Options should be correct ok 3 - App::Sqitch->can('_find_cmd') ok 4 - Should find no command for no args ok 5 - Should have passed "sqitchcommands" to _pod2usage ok 6 - Should have vented nothing ok 7 - Should find no command for invalid command ok 8 - Should have passed "sqitchcommands" to _pod2usage ok 9 - Should have vented an invalid command message ok 10 - Should find no command with option --foo ok 11 - Should have passed "sqitchcommands" to _pod2usage ok 12 - Should not have reported --foo as invalid command ok 13 - Should find no command with option --client=psql ok 14 - Should have passed "sqitchcommands" to _pod2usage ok 15 - Should not have reported --client=psql as invalid command ok 16 - Should find no command with option -R ok 17 - Should have passed "sqitchcommands" to _pod2usage ok 18 - Should not have reported -R as invalid command ok 19 - Should find no command with option -X=yup ok 20 - Should have passed "sqitchcommands" to _pod2usage ok 21 - Should not have reported -X=yup as invalid command ok 22 - Should find no command after -- ok 23 - Should have passed "sqitchcommands" to _pod2usage ok 24 - Should have vented nothing ok 25 - Should find class for "bundle" ok 26 - Should not have called _pod2usage ok 27 - Should have vented nothing ok 28 - Should have removed "bundle" from args ok 29 - Should find class for "bundle" again ok 30 - Should not have called _pod2usage ok 31 - Should have vented nothing ok 32 - Should have left subsequent valid command after "bundle" in args ok 33 - Should find class for "config" ok 34 - Should not have called _pod2usage ok 35 - Should have vented nothing ok 36 - Should have removed "config" from args ok 37 - Should find class for "config" again ok 38 - Should not have called _pod2usage ok 39 - Should have vented nothing ok 40 - Should have left subsequent valid command after "config" in args ok 41 - Should find class for "help" ok 42 - Should not have called _pod2usage ok 43 - Should have vented nothing ok 44 - Should have removed "help" from args ok 45 - Should find class for "help" again ok 46 - Should not have called _pod2usage ok 47 - Should have vented nothing ok 48 - Should have left subsequent valid command after "help" in args ok 49 - Should find class for "plan" ok 50 - Should not have called _pod2usage ok 51 - Should have vented nothing ok 52 - Should have removed "plan" from args ok 53 - Should find class for "plan" again ok 54 - Should not have called _pod2usage ok 55 - Should have vented nothing ok 56 - Should have left subsequent valid command after "plan" in args ok 57 - Should find class for "show" ok 58 - Should not have called _pod2usage ok 59 - Should have vented nothing ok 60 - Should have removed "show" from args ok 61 - Should find class for "show" again ok 62 - Should not have called _pod2usage ok 63 - Should have vented nothing ok 64 - Should have left subsequent valid command after "show" in args ok 65 - Should find class for "tag" ok 66 - Should not have called _pod2usage ok 67 - Should have vented nothing ok 68 - Should have removed "tag" from args ok 69 - Should find class for "tag" again ok 70 - Should not have called _pod2usage ok 71 - Should have vented nothing ok 72 - Should have left subsequent valid command after "tag" in args ok 73 - App::Sqitch->can('_parse_core_opts') ok 74 - Should have default config for no options ok 75 - Ask for help ok 76 - Should have been helped ok 77 - Ask for man ok 78 - Should have been manned ok 79 - Should parse lots of options ok 80 - --quiet should trump verbosity. ok 81 - Short options should work ok 82 - Run _pod2usage ok 83 - Proper args should have been passed to Pod::Usage ok 84 - Parse --chdir ok 85 - Should have changed to foo/bar ok 86 - Should have preserved no opts ok 87 - Parse --cd ok 88 - Should have changed to go/dir ok 89 - Should have preserved no opts ok 90 - Parse -C ok 91 - Should have changed to hi cramus ok 92 - Should have preserved no opts ok 93 - Should get error when chdir fails ok 94 - Error ident should be "fs" ok 95 - Error message should be correct 1..95 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 - Key should be "oracle" ok 5 - Name should be "Oracle" ok 6 - client should default to sqlplus ok 7 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle' ok 8 - client should use $ORACLE_HOME ok 9 - registry default should be empty ok 10 - Default URI should be "db:oracle" ok 11 - Target name should be the uri stringified ok 12 - Destination should fall back on environment variables ok 13 - Registry target should be the same as target ok 14 - sqlplus command should connect to /nolog ok 15 - _script should work ok 16 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle' ok 17 - _script should assemble connection string ok 18 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle' ok 19 - _script should assemble connection string with host ok 20 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle' ok 21 - Set some variables ok 22 - _script should assemble connection string with host, port, and vars ok 23 - Database-only URI should produce proper DSN ok 24 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle' ok 25 - _script should assemble connection string with just dbname ok 26 - Database and double-slash URI should produce proper DSN ok 27 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle' ok 28 - _script should assemble connection string with double-slash and dbname ok 29 - Target name should not read $TWO_TASK ok 30 - Destination should read $TWO_TASK ok 31 - Registry destination should be the same as destination ok 32 - Target name should not read $ORACLE_SID ok 33 - Destination should read $ORACLE_SID ok 34 - Registry destination should be the same as destination ok 35 - Target should be the default ok 36 - Destination should prefer $TWO_TASK to username ok 37 - Registry destination should be the same as destination ok 38 - Create another ora ok 39 - client should be as configured ok 40 - DB URI should be as configured ok 41 - Target name should be the passwordless URI stringified ok 42 - Destination should be the URI without the password ok 43 - registry_destination should replace be the same URI ok 44 - registry should be as configured ok 45 - sqlplus command should be configured ok 46 - Create yet another ora ok 47 - client should be as configured ok 48 - registry should be as configured ok 49 - sqlplus command should be configured ok 50 - App::Sqitch::Engine::oracle->can(...) ok 51 - Call _run ok 52 - SQLPlus command should be passed to spool() ok 53 - The script should be spooled ok 54 - Call _capture ok 55 - Command and script should be passed to run3() ok 56 - _capture should actually capture ok 57 - _capture should die when sqlplus dies ok 58 - STDERR should be emitted by _capture ok 59 - App::Sqitch::Engine::oracle->can('_file_for_script') ok 60 - File without special characters should be used directly ok 61 - Double quotes should be SQL-escaped ok 62 - Get temp dir ok 63 - 'Temp dir' isa 'Path::Class::Dir' ok 64 - File with special char should be aliased ok 65 - File with special char and quotes should be aliased ok 66 - Run foo/bar.sql ok 67 - File should be passed to run() ok 68 - Run foo/"bar".sql ok 69 - Double quotes in file passed to run() should be escaped ok 70 - Spool a "file handle" ok 71 - sqlplus command should be passed to spool() ok 72 - 'Array ove handles should be passed to spool' isa 'ARRAY' ok 73 - First file handle should be script ok 74 - Second should be the passed handle ok 75 - Verify foo/bar.sql ok 76 - Verify file should be passed to capture() ok 77 - Verify foo/bar.sql again ok 78 - Verifile file should be passed to run() for high verbosity ok 79 - App::Sqitch::Engine::oracle->can('_ts2char_format') ok 80 - _ts2char_format should work ok 81 - App::Sqitch::Engine::oracle->can('_dt') ok 82 - 'Return value of _dt()' isa 'App::Sqitch::DateTime' ok 83 - DateTime year should be set ok 84 - DateTime month should be set ok 85 - DateTime day should be set ok 86 - DateTime hour should be set ok 87 - DateTime minute should be set ok 88 - DateTime second should be set ok 89 - DateTime TZ should be set ok 90 - Should have _char2ts ok 91 - Should have _listagg_format ok 92 - Should have _regex_op ok 93 - Should have _simple_from ok 94 - Should have _limit_default ok 95 - Should have _ts_default ok 96 - Should have _can_limit false ok 97 - Should get single expression from _multi_values ok 98 - Should get double expression from _multi_values ok 99 - Should get quadrupal expression from _multi_values ok 100 - Should have no table error ok 101 - Should have no column error ok 102 - Should now have table error ok 103 - Still should have no column error ok 104 - Should again have no table error ok 105 - Should now have no column error ok 106 - _log_tags_param should format tags ok 107 - _log_requires_param should format prereqs ok 108 - _log_conflicts_param should format prereqs ok 109 - App::Sqitch::Engine::oracle->can(...) # Subtest: live database 1..0 # SKIP Unable to live-test Oracle engine: DBD::Oracle 1.23 required to manage Oracle at t/oracle.t line 561. ok 110 # skip Unable to live-test Oracle engine: DBD::Oracle 1.23 required to manage Oracle at t/oracle.t line 561. # 1..110 ok Can't load '/data/fly2400/cpanfly-5.24/var/megalib/auto/Config/Config.so' for module Config: /data/fly2400/cpanfly-5.24/var/megalib/auto/Config/Config.so: undefined symbol: Perl_xs_boot_epilog at /data/fly2400/cpanfly-5.24/var/megalib/XSLoader.pm line 96. at /data/fly2400/cpanfly-5.24/var/megalib/Config.pm line 63. Compilation failed in require at /usr/lib/perl/5.14/lib.pm line 6. BEGIN failed--compilation aborted at /usr/lib/perl/5.14/lib.pm line 6. Compilation failed in require at /usr/bin/psql line 22. BEGIN failed--compilation aborted at /usr/bin/psql line 22. 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 - Key should be "pg" ok 5 - Name should be "PostgreSQL" ok 6 - client should default to psqle ok 7 - registry default should be "sqitch" ok 8 - DB URI should be "db:pg:" ok 9 - Destination should fall back on environment variables ok 10 - Registry destination should be the same as destination ok 11 - psql command should be conninfo, and std opts-only ok 12 - An object of class 'App::Sqitch::Engine::pg' isa 'App::Sqitch::Engine::pg' ok 13 - Set some variables ok 14 - Variables should be passed to psql via --set ok 15 - Target should not read $PGDATABASE ok 16 - Registry target should be the same as destination ok 17 - Target should not read $PGUSER ok 18 - Registry target should be the same as destination ok 19 - Target should not read $PGPASSWORD ok 20 - Registry target should be the same as destination ok 21 - Target should not fall back on sysuser ok 22 - Registry target should be the same as destination ok 23 - Target should be the default ok 24 - Registry target should be the same as destination ok 25 - Create another pg ok 26 - client should be as configured ok 27 - uri should be as configured ok 28 - registry should be as configured ok 29 - psql command should be configured from URI config ok 30 - App::Sqitch::Engine::pg->can(...) ok 31 - PGPASSWORD should be "s3cr3t" ok 32 - Call _run ok 33 - Command should be passed to run() ok 34 - PGPASSWORD should be "s3cr3t" ok 35 - Call _spool ok 36 - Command should be passed to spool() ok 37 - PGPASSWORD should be "s3cr3t" ok 38 - Call _capture ok 39 - Command should be passed to capture() ok 40 - Create a pg with sqitch with no pw ok 41 - PGPASSWORD should not exist ok 42 - Call _run again ok 43 - Command should be passed to run() again ok 44 - PGPASSWORD should not exist ok 45 - Call _spool again ok 46 - Command should be passed to spool() again ok 47 - PGPASSWORD should not exist ok 48 - Call _capture again ok 49 - Command should be passed to capture() again ok 50 - PGPASSWORD should not exist ok 51 - Run foo/bar.sql ok 52 - File should be passed to run() ok 53 - PGPASSWORD should not exist ok 54 - Spool a "file handle" ok 55 - Handle should be passed to spool() ok 56 - PGPASSWORD should not exist ok 57 - Verify foo/bar.sql ok 58 - Verify file should be passed to capture() ok 59 - PGPASSWORD should not exist ok 60 - Verify foo/bar.sql again ok 61 - Verifile file should be passed to run() for high verbosity ok 62 - App::Sqitch::Engine::pg->can('_ts2char_format') ok 63 - _ts2char_format should work ok 64 - App::Sqitch::Engine::pg->can('_dt') ok 65 - 'Return value of _dt()' isa 'App::Sqitch::DateTime' ok 66 - DateTime year should be set ok 67 - DateTime month should be set ok 68 - DateTime day should be set ok 69 - DateTime hour should be set ok 70 - DateTime minute should be set ok 71 - DateTime second should be set ok 72 - DateTime TZ should be set ok 73 - Should find major version 11 in 11beta3 ok 74 - Should find major version 11 in 11.3 ok 75 - Should find major version 10 in 10 ok 76 - Should find major version 9 in 9.6.3 ok 77 - Should find major version 8 in 8.4.2 ok 78 - Should find major version 9 in 9.0.19 ok 79 - App::Sqitch::Engine::pg->can(...) # Subtest: live database 1..0 # SKIP Unable to live-test PostgreSQL engine: "psql" unexpectedly returned exit value 2 ok 80 # skip Unable to live-test PostgreSQL engine: "psql" unexpectedly returned exit value 2 # 1..80 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 @HEAD changes nonce 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 SHA1 change name ok 202 - The SHA1 error ident should be "parse" ok 203 - And the SHA1 error message should be correct ok 204 - Should have sorted changes nonce ok 205 - Should die on plan with tag but no preceding change ok 206 - The missing change error ident should be "parse" ok 207 - And the missing change error message should be correct ok 208 - Should have sorted changes nonce ok 209 - Should die on plan with dupe tag ok 210 - The dupe tag error ident should be "parse" ok 211 - And the missing change error message should be correct ok 212 - Should have sorted changes twice ok 213 - Should die on plan with dupe change ok 214 - The dupe change error ident should be "parse" ok 215 - And the dupe change error message should be correct ok 216 - Should have sorted changes once ok 217 - Should die on invalid dependency ok 218 - The invalid dependency error ident should be "parse" ok 219 - And the invalid dependency error message should be correct ok 220 - Should have sorted changes nonce ok 221 - Should die on dupe dependency ok 222 - The dupe dependency error ident should be "parse" ok 223 - And the dupe dependency error message should be correct ok 224 - Should have sorted changes nonce ok 225 - Should die on change with no timestamp ok 226 - The missing timestamp error ident should be "parse" ok 227 - And the missing timestamp error message should be correct ok 228 - Should have sorted changes nonce ok 229 - Should die on change with no planner ok 230 - The missing parsener error ident should be "parse" ok 231 - And the missing planner error message should be correct ok 232 - Should have sorted changes nonce ok 233 - Should die on change with no timestamp or planner ok 234 - The missing timestamp or parsener error ident should be "parse" ok 235 - And the missing timestamp or planner error message should be correct ok 236 - Should have sorted changes nonce ok 237 - Should parse plan with pragmas" ok 238 - Should have sorted changes once ok 239 - Should have captured all of the pragmas ok 240 - Should have "multi.plan" lines and changes ok 241 - Should parse plan with deploy and revert operators ok 242 - Should have sorted changes twice ok 243 - Should have captured the deploy-and-revert pragmas ok 244 - Should have "deploy-and-revert.plan" lines and changes ok 245 - Should get exception for nonexistent plan file ok 246 - Nonexistent plan file ident should be "plan" ok 247 - Nonexistent plan file message should be correct ok 248 - 'Plan with sqitch with plan file with dependencies' isa 'App::Sqitch::Plan' ok 249 - File should be coopied from Sqitch ok 250 - Load plan with dependencies file ok 251 - The changes should include the dependencies ok 252 - Should have sorted changes twice ok 253 - 'Plan with sqitch with plan file with project deps' isa 'App::Sqitch::Plan' ok 254 - File should be coopied from Sqitch ok 255 - Load plan with project deps file ok 256 - The changes should include the cross-project deps ok 257 - Should have sorted changes twice ok 258 - 'Plan with sqitch with plan with tag dependencies' isa 'App::Sqitch::Plan' ok 259 - File should be coopied from Sqitch ok 260 - Should get an exception for tag with dependencies ok 261 - The tag dependencies error ident should be "plan" ok 262 - And the tag dependencies error message should be correct ok 263 - 'Plan with sqitch with plan file' isa 'App::Sqitch::Plan' ok 264 - File should be coopied from Sqitch ok 265 - Lines should be parsed from file ok 266 - Changes should be parsed from file ok 267 - Should get all tags from tags() ok 268 - Should have sorted changes twice ok 269 - Load should parse plan from file ok 270 - Should have captured the multi pragmas ok 271 - And the parsed file should have lines and changes ok 272 - Should have sorted changes twice ok 273 - App::Sqitch::Plan->can(...) ok 274 - Position should start at -1 ok 275 - Current should be undef ok 276 - Get next change ok 277 - 'First change' isa 'App::Sqitch::Plan::Change' ok 278 - It should be the first change ok 279 - Position should be at 0 ok 280 - Count should be 4 ok 281 - Current should be current ok 282 - Should get first change from change_at(0) ok 283 - Peek to next change ok 284 - 'Peeked change' isa 'App::Sqitch::Plan::Change' ok 285 - Peeked change should be second change ok 286 - last() should return last change ok 287 - Current should still be current ok 288 - Peek should still be next ok 289 - Next should be the second change ok 290 - Position should be at 1 ok 291 - Should get second change from change_at(1) ok 292 - Peek should return an object ok 293 - 'Third change' isa 'App::Sqitch::Plan::Change' ok 294 - It should be the foo tag ok 295 - Current should be the second change ok 296 - Should get third change next ok 297 - Position should be at 2 ok 298 - Current should be third change ok 299 - Should get third change from change_at(1) ok 300 - Get fourth change ok 301 - 'Fourth change' isa 'App::Sqitch::Plan::Change' ok 302 - Fourth change should be "hey-there" ok 303 - Position should be at 3 ok 304 - Peek should return undef ok 305 - Next should return undef ok 306 - Position should be at 7 ok 307 - Next should still return undef ok 308 - Position should still be at 7 ok 309 - Reset the plan ok 310 - Position should be back at -1 ok 311 - Current should still be undef ok 312 - Next should return the first change again ok 313 - Position should be at 0 again ok 314 - Current should be first change ok 315 - Index of change should be 0 ok 316 - Plan should contain change ok 317 - Should be able to get change 0 by name ok 318 - Should be able to find change 0 by name ok 319 - Should be able to get change 0 by ID ok 320 - Should be able to find change 0 by ID ok 321 - Index of @bar should be 3 ok 322 - Plan should contain @bar ok 323 - Should be able to get hey-there via @bar ok 324 - Should be able to get hey-there via @bar ID ok 325 - Should be able to find hey-there via @bar ok 326 - Should be able to find hey-there via @bar ID ok 327 - Seek to the "@bar" change ok 328 - Position should be at 3 again ok 329 - Current should be fourth again ok 330 - Index of you should be 1 ok 331 - Plan should contain "you" ok 332 - Should be able to get change 1 by name ok 333 - Should be able to find change 1 by name ok 334 - Seek to the "you" change ok 335 - Position should be at 1 again ok 336 - Current should be second again ok 337 - Index of baz should be undef ok 338 - Plan should not contain "baz" ok 339 - Index of @baz should be 3 ok 340 - Plan should contain @baz ok 341 - Seek to the "baz" change ok 342 - Position should be at 3 again ok 343 - Current should be fourth again ok 344 - Should still get first change from change_at(0) ok 345 - Should still get second change from change_at(1) ok 346 - Should still get third change from change_at(1) ok 347 - Should die seeking invalid change ok 348 - Invalid seek change error ident should be "plan" ok 349 - And the failure message should be correct ok 350 - All should return all changes ok 351 - Reset the plan again ok 352 - Change hey should be passed to do sub ok 353 - Change hey should be the topic in do sub ok 354 - Change you should be passed to do sub ok 355 - Change you should be the topic in do sub ok 356 - Change this/rocks should be passed to do sub ok 357 - Change this/rocks should be the topic in do sub ok 358 - Change hey-there should be passed to do sub ok 359 - Change hey-there should be the topic in do sub ok 360 - 'search_changes() should return a code ref' isa 'CODE' ok 361 - All the changes should be returned in the proper order ok 362 - Direction "DESC" should work ok 363 - Should get error for invalid direction ok 364 - Invalid direction error ident should be "DEV" ok 365 - Invalid direction error message should be correct ok 366 - Direction "asc" should work ok 367 - Search by change name should work ok 368 - Search by change name should work as a regex ok 369 - Search by change name should with a character class ok 370 - Search by planner should work ok 371 - Search by planner should work as a regex ok 372 - Search by operation "deploy" should work ok 373 - Search by operation "rever" should return nothing ok 374 - Search by operation "DEPLOY" should now return two changes ok 375 - Search by operation "REVERT" should return the other two ok 376 - Should get an error for unknown operation ok 377 - Unknown operation error ident should be "DEV" ok 378 - Unknown operation error message should be correct ok 379 - Search with offset 2 should work ok 380 - Search with offset 2, limit 1 should work ok 381 - Search with offset 3 and dierction "desc" should work ok 382 - Search with offset 2, limit 1, dierction "desc" should work ok 383 - App::Sqitch::Plan->can('write_to') ok 384 - plan.out does not exist ok 385 - Write out the file ok 386 - plan.out exists ok 387 - The contents should look right ok 388 - Write out the file from "this/rocks" ok 389 - Plan should have been written from "this/rocks" through tags at end ok 390 - Write the file up to "you" ok 391 - Plan should have been written through "you" and its tags ok 392 - Write from "@foo" to "this/rocks" ok 393 - Plan should have been written from "@foo" to "this/rocks" ok 394 - Write from "hey" to "@foo" ok 395 - Plan should have been written from "hey" through "@foo" ok 396 - App::Sqitch::Plan->can('_is_valid') ok 397 - Should find "^foo" invalid ok 398 - Invalid name "^foo" error ident should be "plan" ok 399 - And the "^foo" error message should be correct ok 400 - Should find "foo^" invalid ok 401 - Invalid name "foo^" error ident should be "plan" ok 402 - And the "foo^" error message should be correct ok 403 - Should find "foo^6" invalid ok 404 - Invalid name "foo^6" error ident should be "plan" ok 405 - And the "foo^6" error message should be correct ok 406 - Should find "foo^666" invalid ok 407 - Invalid name "foo^666" error ident should be "plan" ok 408 - And the "foo^666" error message should be correct ok 409 - Should find "%hi" invalid ok 410 - Invalid name "%hi" error ident should be "plan" ok 411 - And the "%hi" error message should be correct ok 412 - Should find "hi!" invalid ok 413 - Invalid name "hi!" error ident should be "plan" ok 414 - And the "hi!" error message should be correct ok 415 - Should find "foo@bar" invalid ok 416 - Invalid name "foo@bar" error ident should be "plan" ok 417 - And the "foo@bar" error message should be correct ok 418 - Should find "foo:bar" invalid ok 419 - Invalid name "foo:bar" error ident should be "plan" ok 420 - And the "foo:bar" error message should be correct ok 421 - Should find "+foo" invalid ok 422 - Invalid name "+foo" error ident should be "plan" ok 423 - And the "+foo" error message should be correct ok 424 - Should find "-foo" invalid ok 425 - Invalid name "-foo" error ident should be "plan" ok 426 - And the "-foo" error message should be correct ok 427 - Should find "@foo" invalid ok 428 - Invalid name "@foo" error ident should be "plan" ok 429 - And the "@foo" error message should be correct ok 430 - Name "foo" should be valid ok 431 - Name "12" should be valid ok 432 - Name "t" should be valid ok 433 - Name "6" should be valid ok 434 - Name "阱阪阬" should be valid ok 435 - Name "foo/bar" should be valid ok 436 - Name "beta1" should be valid ok 437 - Name "v1.2-1" should be valid ok 438 - Name "v1.2+1" should be valid ok 439 - Name "v1.2_1" should be valid ok 440 - Add tag "w00t" ok 441 - Should have 4 changes ok 442 - Should find "@w00t" in plan ok 443 - Should find "@w00t" at index 3 ok 444 - Last change should be "hey-there" ok 445 - The w00t tag should be on the last change ok 446 - An object of class 'App::Sqitch::Plan::Tag' isa 'App::Sqitch::Plan::Tag' ok 447 - The returned tag should be @w00t ok 448 - The @w00t change should be the last change ok 449 - Write out the file again ok 450 - The contents should include the "w00t" tag ok 451 - Add tag "@alpha" ok 452 - Should find "@alpha" in plan ok 453 - Should find "@alpha" at index 3 ok 454 - The returned tag should be @alpha ok 455 - The @alpha change should be the last change ok 456 - Tag change "you" ok 457 - Should still have 4 changes ok 458 - Should find "@blarney" in plan ok 459 - Should find "@blarney" at index 1 ok 460 - The blarney tag should be on the second change ok 461 - An object of class 'App::Sqitch::Plan::Tag' isa 'App::Sqitch::Plan::Tag' ok 462 - The returned tag should be @blarney ok 463 - The @blarney change should be the second change ok 464 - Should get error trying to add duplicate tag ok 465 - Duplicate tag error ident should be "plan" ok 466 - And the error message should report it as a dupe ok 467 - Should get error for invalid tag "^foo" ok 468 - Invalid name "^foo" error ident should be "plan" ok 469 - And the "^foo" error message should be correct ok 470 - Should get error for invalid tag "foo^" ok 471 - Invalid name "foo^" error ident should be "plan" ok 472 - And the "foo^" error message should be correct ok 473 - Should get error for invalid tag "foo^6" ok 474 - Invalid name "foo^6" error ident should be "plan" ok 475 - And the "foo^6" error message should be correct ok 476 - Should get error for invalid tag "foo^666" ok 477 - Invalid name "foo^666" error ident should be "plan" ok 478 - And the "foo^666" error message should be correct ok 479 - Should get error for invalid tag "%hi" ok 480 - Invalid name "%hi" error ident should be "plan" ok 481 - And the "%hi" error message should be correct ok 482 - Should get error for invalid tag "hi!" ok 483 - Invalid name "hi!" error ident should be "plan" ok 484 - And the "hi!" error message should be correct ok 485 - Should get error for invalid tag "foo@bar" ok 486 - Invalid name "foo@bar" error ident should be "plan" ok 487 - And the "foo@bar" error message should be correct ok 488 - Should get error for invalid tag "foo:bar" ok 489 - Invalid name "foo:bar" error ident should be "plan" ok 490 - And the "foo:bar" error message should be correct ok 491 - Should get error for invalid tag "+foo" ok 492 - Invalid name "+foo" error ident should be "plan" ok 493 - And the "+foo" error message should be correct ok 494 - Should get error for invalid tag "-foo" ok 495 - Invalid name "-foo" error ident should be "plan" ok 496 - And the "-foo" error message should be correct ok 497 - Should get error for invalid tag "foo\#bar" ok 498 - Invalid name "foo\#bar" error ident should be "plan" ok 499 - And the "foo\#bar" error message should be correct ok 500 - Should get error for reserved tag "HEAD" ok 501 - Reserved tag "HEAD" error ident should be "plan" ok 502 - And the reserved tag "HEAD" message should be correct ok 503 - Should get error for reserved tag "ROOT" ok 504 - Reserved tag "ROOT" error ident should be "plan" ok 505 - And the reserved tag "ROOT" message should be correct ok 506 - Should get error for a SHA1 tag ok 507 - SHA1 tag error ident should be "plan" ok 508 - And the reserved name error should be output ok 509 - Add change "booyah" ok 510 - Should have 5 changes ok 511 - Should find "booyah" in plan ok 512 - Should find "booyah" at index 4 ok 513 - Last change should be "booyah" ok 514 - An object of class 'App::Sqitch::Plan::Change' isa 'App::Sqitch::Plan::Change' ok 515 - Should have plain stringification of "booya" ok 516 - Write out the file again ok 517 - The contents should include the "booyah" change ok 518 - Add change "blow" ok 519 - Should have 6 changes ok 520 - Should find "blow" in plan ok 521 - Should find "blow" at index 5 ok 522 - Last change should be "blow" ok 523 - Should have nice stringification of "blow [booyah]" ok 524 - The new change should have been appended to the lines, too ok 525 - Add change "jive" with dupe dependency ok 526 - Should have 7 changes ok 527 - Should find "jive" in plan ok 528 - Should find "jive" at index 6 ok 529 - jive change should be "jive" ok 530 - Should have dependency "blow" ok 531 - Should have nice stringification of "jive [blow]" ok 532 - The new change should have been appended to the lines, too ok 533 - Add change "moo" with dupe dependencies ok 534 - Should have 8 changes ok 535 - Should find "moo" in plan ok 536 - Should find "moo" at index 7 ok 537 - moo change should be "moo" ok 538 - Should require "ext:whu" ok 539 - Should conflict with "blow" and "ext:whu" ok 540 - Should have nice stringification of "moo [ext:foo !blow !ext:whu]" ok 541 - The new change should have been appended to the lines, too ok 542 - Should get error trying to add duplicate change ok 543 - Duplicate change error ident should be "plan" ok 544 - And the error message should suggest "rework" ok 545 - Should get error for invalid change "^foo" ok 546 - Invalid name "^foo" error ident should be "plan" ok 547 - And the "^foo" error message should be correct ok 548 - Should get error for invalid change "foo^" ok 549 - Invalid name "foo^" error ident should be "plan" ok 550 - And the "foo^" error message should be correct ok 551 - Should get error for invalid change "foo^6" ok 552 - Invalid name "foo^6" error ident should be "plan" ok 553 - And the "foo^6" error message should be correct ok 554 - Should get error for invalid change "foo^666" ok 555 - Invalid name "foo^666" error ident should be "plan" ok 556 - And the "foo^666" error message should be correct ok 557 - Should get error for invalid change "%hi" ok 558 - Invalid name "%hi" error ident should be "plan" ok 559 - And the "%hi" error message should be correct ok 560 - Should get error for invalid change "hi!" ok 561 - Invalid name "hi!" error ident should be "plan" ok 562 - And the "hi!" error message should be correct ok 563 - Should get error for invalid change "foo@bar" ok 564 - Invalid name "foo@bar" error ident should be "plan" ok 565 - And the "foo@bar" error message should be correct ok 566 - Should get error for invalid change "foo:bar" ok 567 - Invalid name "foo:bar" error ident should be "plan" ok 568 - And the "foo:bar" error message should be correct ok 569 - Should get error for invalid change "+foo" ok 570 - Invalid name "+foo" error ident should be "plan" ok 571 - And the "+foo" error message should be correct ok 572 - Should get error for invalid change "-foo" ok 573 - Invalid name "-foo" error ident should be "plan" ok 574 - And the "-foo" error message should be correct ok 575 - Should get error for invalid change "@foo" ok 576 - Invalid name "@foo" error ident should be "plan" ok 577 - And the "@foo" error message should be correct ok 578 - Should get error for reserved name "HEAD" ok 579 - Reserved name "HEAD" error ident should be "plan" ok 580 - And the reserved name "HEAD" message should be correct ok 581 - Should get error for reserved name "ROOT" ok 582 - Reserved name "ROOT" error ident should be "plan" ok 583 - And the reserved name "ROOT" message should be correct ok 584 - Should get failure for failed dependency ok 585 - Dependency error ident should be "plan" ok 586 - The dependency error should be correct ok 587 - Should get failure for invalid dependency ok 588 - Invalid dependency error ident should be "plan" ok 589 - The invalid dependency error should be correct ok 590 - Should get failure for invalid conflict ok 591 - Invalid conflict error ident should be "plan" ok 592 - The invalid conflict error should be correct ok 593 - Should get failure for failed tag dependency ok 594 - Tag dependency error ident should be "plan" ok 595 - The tag dependency error should be correct ok 596 - Should get error for a SHA1 change ok 597 - SHA1 tag error ident should be "plan" ok 598 - And the reserved name error should be output ok 599 - App::Sqitch::Plan->can('rework') ok 600 - Rework change "you" ok 601 - An object of class 'App::Sqitch::Plan::Change' isa 'App::Sqitch::Plan::Change' ok 602 - Reworked change should be "you" ok 603 - Get original "you" change ok 604 - It should also be named "you" ok 605 - And it should have the one rework tag ok 606 - The original file should now be named you@bar.sql ok 607 - It should require the previous "you" change ok 608 - The new "you" should have been appended to the lines, too ok 609 - Should find "you@HEAD" in plan ok 610 - It should be at position 8 ok 611 - The plan count should be 9 ok 612 - Tag @beta1 ok 613 - Rework change "you" again ok 614 - An object of class 'App::Sqitch::Plan::Change' isa 'App::Sqitch::Plan::Change' ok 615 - New reworked change should be "you" ok 616 - Get original "you" change again ok 617 - It should still be named "you" ok 618 - And it should have the one rework tag ok 619 - Get you@beta1 ok 620 - The second "you" should be named that ok 621 - And the second change should have the rework_tag "@beta1" ok 622 - But the new reworked change should have no rework tags ok 623 - It should require the previous "you" change ok 624 - The new reworking should have been appended to the lines ok 625 - Should find "you@HEAD" in plan ok 626 - It should be at position 9 ok 627 - The plan count should be 10 ok 628 - rework should die on nonexistent change ok 629 - Nonexistent change error ident should be "plan" ok 630 - And the error should suggest "sqitch add" ok 631 - rework_stpe should die on lack of intervening tag ok 632 - Missing tag error ident should be "plan" ok 633 - And the error should suggest "sqitch tag" ok 634 - rework should die on failed dependency ok 635 - Rework dependency error ident should be "plan" ok 636 - The rework dependency error should be correct ok 637 - Should get failure for invalid dependency ok 638 - Invalid dependency error ident should be "plan" ok 639 - The invalid dependency error should be correct ok 640 - Should get failure for invalid conflict ok 641 - Invalid conflict error ident should be "plan" ok 642 - The invalid conflict error should be correct ok 643 - 'Plan shoud work plan with dupe change across tags' isa 'App::Sqitch::Plan' ok 644 - File should be coopied from Sqitch ok 645 - Project name should be set ok 646 - Lines with dupe change should be read from file ok 647 - Noes with dupe change should be read from file ok 648 - Should have sorted changes three times ok 649 - Should find "whatever" in plan ok 650 - Should get an error trying to find dupe key. ok 651 - Dupe key error ident should be "plan" ok 652 - Dupe key error message should be correct ok 653 - Should have output listing tag-qualified changes ok 654 - Should get 3 for whatever@HEAD ok 655 - Should get 0 for whatever@bar ok 656 - Should get an error seeking dupe key. ok 657 - Dupe key error ident should be "plan" ok 658 - Dupe key error message should be correct ok 659 - Should have output listing tag-qualified changes ok 660 - Should find whatever@HEAD at index 3 ok 661 - Should find whatever@HEAD at index 0 ok 662 - Should find first instance of whatever at index 0 ok 663 - Should find first instance of whatever after @bar at index 5 ok 664 - Seek whatever@HEAD ok 665 - Position should be 3 ok 666 - Seek whatever@bar ok 667 - Position should be 0 ok 668 - Last tagged change should be "hi" ok 669 - App::Sqitch::Plan->can('open_script') ok 670 - Open bar.sql ok 671 - It should be the right file ok 672 - Open baz.sql ok 673 - It should be empty ok 674 - open_script() should die on nonexistent file ok 675 - Nonexistent file error ident should be "io" ok 676 - Nonexistent file error message should be correct ok 677 - App::Sqitch::Plan->can('check_changes') ok 678 - Should get original order when no dependencies ok 679 - Should get original order when no prepreqs ok 680 - Should get original order when that requires this ok 681 - Should get original order when other requires that ok 682 - Should get error for out-of-order dependency ok 683 - Unordered dependency error ident should be "parse" ok 684 - And the unordered dependency error message should be correct ok 685 - Should get error for multiple dependency errors ok 686 - Multiple dependency error ident should be "parse" ok 687 - And the multiple dependency error message should be correct ok 688 - Should get original order when requiring a tag ok 689 - Should get original order when requiring a step as-of a tag ok 690 - Should get failure for a step after a tag ok 691 - Step after tag error ident should be "parse" ok 692 - And we the unknown change as-of a tag message should be correct ok 693 - Should get failure for a cycle ok 694 - Cycle error ident should be "parse" ok 695 - The cycle error message should be correct ok 696 - Should get failure for a two-hop cycle ok 697 - Two-hope cycle error ident should be "parse" ok 698 - The two-hop cycle error message should be correct ok 699 - Should get original order with earlier dependency ok 700 - Should get error with misordered and seen dependencies ok 701 - Misorderd and seen error ident should be "parse" ok 702 - And the misordered and seen error message should be correct ok 703 - Should die on unknown dependency ok 704 - Unknown dependency error ident should be "parse" ok 705 - And the error should point to the offending change ok 706 - Should die on unknown tag dependency ok 707 - Unknown tag dependency error ident should be "parse" ok 708 - And the error should point to the offending change ok 709 - Should get original order with external dependency ok 710 - Should die on self dependency ok 711 - Self dependency error ident should be "parse" ok 712 - And the self dependency error should be correct ok 713 - Should get original order with cascading dependencies ok 714 - Should get original order with multiple cascading dependencies ok 715 - App::Sqitch::Plan->can('_check_dependencies') ok 716 - Depend "hi" should be in project "dupe_change_diff_tag" ok 717 - Dependency on "hi" should succeed ok 718 - Depend "greets" should be in project "dupe_change_diff_tag" ok 719 - Dependency on "greets" should succeed ok 720 - Depend "whatever" should be in project "dupe_change_diff_tag" ok 721 - Dependency on "whatever" should succeed ok 722 - Depend "@foo" should be in project "dupe_change_diff_tag" ok 723 - Dependency on "@foo" should succeed ok 724 - Depend "whatever@foo" should be in project "dupe_change_diff_tag" ok 725 - Dependency on "whatever@foo" should succeed ok 726 - Depend "ext:larry" should be in project "ext" ok 727 - Dependency on "ext:larry" should succeed ok 728 - Depend "ext:greets" should be in project "ext" ok 729 - Dependency on "ext:greets" should succeed ok 730 - Should get error trying to depend on "wanker" ok 731 - Dependency "req" error ident should be "plan" ok 732 - And should get unknown dependency message for "wanker" ok 733 - Should get error trying to depend on "@blah" ok 734 - Dependency "req" error ident should be "plan" ok 735 - And should get unknown dependency message for "@blah" ok 736 - Should get error trying to depend on "greets@foo" ok 737 - Dependency "req" error ident should be "plan" ok 738 - And should get unknown dependency message for "greets@foo" ok 739 - Should have undef URI when no pragma ok 740 - 'Plan with sqitch with plan file with dependencies' isa 'App::Sqitch::Plan' ok 741 - File should be coopied from Sqitch ok 742 - syntax_version should be set ok 743 - Project should be set ok 744 - Should have URI from pragma ok 745 - 'It' isa 'URI' ok 746 - Should die on plan with no project pragma ok 747 - Missing prorject error ident should be "parse" ok 748 - The missing project error message should be correct ok 749 - Should die on invalid project name "^foo" ok 750 - Ident for bad proj "^foo" should be "parse" ok 751 - Error message for bad project "^foo" should be correct ok 752 - Should die on invalid project name "foo^" ok 753 - Ident for bad proj "foo^" should be "parse" ok 754 - Error message for bad project "foo^" should be correct ok 755 - Should die on invalid project name "foo^6" ok 756 - Ident for bad proj "foo^6" should be "parse" ok 757 - Error message for bad project "foo^6" should be correct ok 758 - Should die on invalid project name "foo^666" ok 759 - Ident for bad proj "foo^666" should be "parse" ok 760 - Error message for bad project "foo^666" should be correct ok 761 - Should die on invalid project name "%hi" ok 762 - Ident for bad proj "%hi" should be "parse" ok 763 - Error message for bad project "%hi" should be correct ok 764 - Should die on invalid project name "hi!" ok 765 - Ident for bad proj "hi!" should be "parse" ok 766 - Error message for bad project "hi!" should be correct ok 767 - Should die on invalid project name "foo@bar" ok 768 - Ident for bad proj "foo@bar" should be "parse" ok 769 - Error message for bad project "foo@bar" should be correct ok 770 - Should die on invalid project name "foo:bar" ok 771 - Ident for bad proj "foo:bar" should be "parse" ok 772 - Error message for bad project "foo:bar" should be correct ok 773 - Should die on invalid project name "+foo" ok 774 - Ident for bad proj "+foo" should be "parse" ok 775 - Error message for bad project "+foo" should be correct ok 776 - Should die on invalid project name "-foo" ok 777 - Ident for bad proj "-foo" should be "parse" ok 778 - Error message for bad project "-foo" should be correct ok 779 - Should die on invalid project name "@foo" ok 780 - Ident for bad proj "@foo" should be "parse" ok 781 - Error message for bad project "@foo" should be correct 1..781 ok t/plan_cmd.t ........ 1..229 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 - Should parse options ok 7 - Options should not conflict with core options ok 8 - 'Formatter' isa 'App::Sqitch::ItemFormatter' ok 9 - Should get empty hash for no config or options ok 10 - Should get error for invalid date format in config ok 11 - Invalid date format error ident should be "datetime" ok 12 - Invalid date format error message should be correct ok 13 - Should get error for invalid date format in optsions ok 14 - Invalid date format error ident should be "plan" ok 15 - Invalid date format error message should be correct ok 16 - Should get error for invalid format in config ok 17 - Invalid format error ident should be "plan" ok 18 - Invalid format error message should be correct ok 19 - Should get error for invalid format in optsions ok 20 - Invalid format error ident should be "plan" ok 21 - Invalid format error message should be correct ok 22 - Configuration should respect --no-color, setting "never" ok 23 - --oneline should set format ok 24 - --oneline should set abbrev to 6 ok 25 - --oneline should not override --format ok 26 - --oneline should not overrride --abbrev ok 27 - Configuration should respect --no-color even when configure is set 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 - Configuration should respect color option ok 35 - Configuration should respect color config ok 36 - Instantiate with format "raw" ok 37 - Format "raw" should output correctly ok 38 - Format "raw" should output correctly without tags ok 39 - Instantiate with format "full" ok 40 - Format "full" should output correctly ok 41 - Instantiate with format "full" and date format "rfc" ok 42 - Format "full" and date format "rfc" should output correctly ok 43 - Instantiate with format "full" and date format "long" ok 44 - Format "full" and date format "long" should output correctly ok 45 - Instantiate with format "full" and date format "medium" ok 46 - Format "full" and date format "medium" should output correctly ok 47 - Format "full" should output correctly without tags ok 48 - Instantiate with format "long" ok 49 - Format "long" should output correctly ok 50 - Format "long" should output correctly without tags ok 51 - Instantiate with format "medium" ok 52 - Format "medium" should output correctly ok 53 - Instantiate with format "medium" and date format "rfc" ok 54 - Format "medium" and date format "rfc" should output correctly ok 55 - Instantiate with format "medium" and date format "long" ok 56 - Format "medium" and date format "long" should output correctly ok 57 - Instantiate with format "medium" and date format "medium" ok 58 - Format "medium" and date format "medium" should output correctly ok 59 - Instantiate with format "short" ok 60 - Format "short" should output correctly ok 61 - Instantiate with format "oneline" ok 62 - Format "oneline" should output correctly ok 63 - Format "oneline" should output correctly without tags 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 "%{planner}_" should output "Planner: " ok 76 - Format "%{by}_" should output "By: " ok 77 - Format "%{date}_" should output "Date: " ok 78 - Format "%{planned}_" should output "Planned: " ok 79 - Format "%{name}_" should output "Name: " ok 80 - Format "%{email}_" should output "Email: " ok 81 - Format "%{requires}_" should output "Requires: " ok 82 - Format "%{conflicts}_" should output "Conflicts:" ok 83 - Format "%H" should output "123456789" ok 84 - Format "%h" should output "123456789" ok 85 - Format "%{5}h" should output "12345" ok 86 - Format "%{7}h" should output "1234567" ok 87 - Format "%n" should output "foo" ok 88 - Format "%n" should output "bar" ok 89 - Format "%o" should output "foo" ok 90 - Format "%o" should output "bar" ok 91 - Format "%p" should output "larry " ok 92 - Format "%{n}p" should output "damian" ok 93 - Format "%{name}p" should output "chip" ok 94 - Format "%{e}p" should output "larry@example.com" ok 95 - Format "%{email}p" should output "damian@example.com" ok 96 - Format "%{date}p" should output "2019-06-05 02:21:35 -0700" ok 97 - Format "%{date:rfc}p" should output "Wed, 05 Jun 2019 02:21:35 -0700" ok 98 - Format "%{d:long}p" should output "June 5, 2019 at 2:21:35 AM PDT" ok 99 - Format "%{d:cldr:HH'h' mm'm'}p" should output "02h 21m" ok 100 - Format "%{d:strftime:%a at %H:%M:%S}p" should output "Wed at 02:21:35" ok 101 - Format "%t" should output "" ok 102 - Format "%t" should output " @foo" ok 103 - Format "%t" should output " @foo, @bar" ok 104 - Format "%{|}t" should output "" ok 105 - Format "%{|}t" should output " @foo" ok 106 - Format "%{|}t" should output " @foo|@bar" ok 107 - Format "%T" should output "" ok 108 - Format "%T" should output " (@foo)" ok 109 - Format "%T" should output " (@foo, @bar)" ok 110 - Format "%{|}T" should output "" ok 111 - Format "%{|}T" should output " (@foo)" ok 112 - Format "%{|}T" should output " (@foo|@bar)" ok 113 - Format "%r" should output "" ok 114 - Format "%r" should output " foo" ok 115 - Format "%r" should output " foo, bar" ok 116 - Format "%{|}r" should output "" ok 117 - Format "%{|}r" should output " foo" ok 118 - Format "%{|}r" should output " foo|bar" ok 119 - Format "%R" should output "" ok 120 - Format "%R" should output "Requires: foo[newline]" ok 121 - Format "%R" should output "Requires: foo, bar[newline]" ok 122 - Format "%{|}R" should output "" ok 123 - Format "%{|}R" should output "Requires: foo[newline]" ok 124 - Format "%{|}R" should output "Requires: foo|bar[newline]" ok 125 - Format "%x" should output "" ok 126 - Format "%x" should output " foo" ok 127 - Format "%x" should output " foo, bax" ok 128 - Format "%{|}x" should output "" ok 129 - Format "%{|}x" should output " foo" ok 130 - Format "%{|}x" should output " foo|bax" ok 131 - Format "%X" should output "" ok 132 - Format "%X" should output "Conflicts: foo[newline]" ok 133 - Format "%X" should output "Conflicts: foo, bar[newline]" ok 134 - Format "%{|}X" should output "" ok 135 - Format "%{|}X" should output "Conflicts: foo[newline]" ok 136 - Format "%{|}X" should output "Conflicts: foo|bar[newline]" ok 137 - Format "%{yellow}C" should output "" ok 138 - Format "%{:event}C" should output "" ok 139 - Format "%v" should output "[newline]" ok 140 - Format "%%" should output "%" ok 141 - Format "%s" should output "hi there" ok 142 - Format "%s" should output "hi there" ok 143 - Format "%s" should output "subject line" ok 144 - Format "%{ }s" should output " hi there" ok 145 - Format "%{xx}s" should output "xxhi there" ok 146 - Format "%b" should output "" ok 147 - Format "%b" should output "yo" ok 148 - Format "%b" should output "first graph[newline][newline]second graph[newline][newline]" ok 149 - Format "%{ }b" should output "" ok 150 - Format "%{xxx }b" should output "xxx yo" ok 151 - Format "%{x}b" should output "xfirst graph[newline]x[newline]xsecond graph[newline]x[newline]" ok 152 - Format "%{ }b" should output " yo" ok 153 - Format "%B" should output "hi there" ok 154 - Format "%B" should output "hi there[newline]yo" ok 155 - Format "%B" should output "subject line[newline][newline]first graph[newline][newline]second graph[newline][newline]" ok 156 - Format "%{ }B" should output " hi there" ok 157 - Format "%{xxx }B" should output "xxx hi there[newline]xxx yo" ok 158 - Format "%{x}B" should output "xsubject line[newline]x[newline]xfirst graph[newline]x[newline]xsecond graph[newline]x[newline]" ok 159 - Format "%{ }B" should output " hi there [newline] yo" ok 160 - Format "%{change}a" should output "change lolz[newline]" ok 161 - Format "%{change_id}a" should output "change_id 000011112222333444[newline]" ok 162 - Format "%{event}a" should output "event deploy[newline]" ok 163 - Format "%{tags}a" should output "tags @beta, @gamma[newline]" ok 164 - Format "%{requires}a" should output "requires foo, bar[newline]" ok 165 - Format "%{conflicts}a" should output "" ok 166 - Should get exception for format "%_" ok 167 - %_ error ident should be "format" ok 168 - %_ error message should be correct ok 169 - Should get exception for unknown label in format "%_" ok 170 - Invalid %_ label error ident should be "format" ok 171 - Invalid %_ label error message should be correct ok 172 - Instantiate with abbrev => 4 ok 173 - %h should respect abbrev ok 174 - %H should not respect abbrev ok 175 - Instantiate with date_format => "rfc" ok 176 - %{date}p should respect the date_format attribute ok 177 - %{iso}p should override the date_format attribute ok 178 - Should get exception for unknown attribute passed to %a ok 179 - %a error ident should be "format" ok 180 - %a error message should be correct ok 181 - Format "%{yellow}C" should output yellow ok 182 - Format "%{red}C" should output red ok 183 - Format "%{blue}C" should output blue ok 184 - Format "%{cyan}C" should output cyan ok 185 - Format "%{magenta}C" should output magenta ok 186 - Format "%{:event}C" on "deploy" should output green ok 187 - Format "%{:event}C" on "revert" should output blue ok 188 - Format "%{:event}C" on "fail" should output red ok 189 - Instantiate with format "full" again ok 190 - Format "full" should output correctly with color ok 191 - Instantiate with format "long" again ok 192 - Format "long" should output correctly with color ok 193 - Instantiate with format "medium" again ok 194 - Format "medium" should output correctly with color ok 195 - Instantiate with format "short" again ok 196 - Format "short" should output correctly with color ok 197 - Instantiate with format "oneline" again ok 198 - Format "oneline" should output correctly with color ok 199 - Should get an error for an invalid color ok 200 - Invalid color error ident should be "format" ok 201 - Invalid color error message should be correct ok 202 - Should get error for no changes ok 203 - no changes error ident should be "plan" ok 204 - no changes exit val should be 1 ok 205 - no changes error message should be correct ok 206 - Execute plan ok 207 - The proper args should have been passed to search_events ok 208 - The event should have been paged ok 209 - 'plan with attributes' isa 'App::Sqitch::Command::plan' ok 210 - Execute plan with attributes ok 211 - All params should have been passed to search_events ok 212 - Both events should have been paged without headers ok 213 - 'plan with bad format' isa 'App::Sqitch::Command::plan' ok 214 - Should get an exception for a bad format code ok 215 - bad format code format error ident should be "format" ok 216 - bad format code format error message should be correct ok 217 - Create plan command with unknown target option ok 218 - Should get error for unknown target ok 219 - Unknown target error ident should be "plan" ok 220 - Unknown target changes exit val should be 2 ok 221 - Unknown target error message should be correct ok 222 - Should have passed target for parsing ok 223 - Create plan command with target option ok 224 - Execute with engine arg ok 225 - Should have passed engine for parsing ok 226 - Create plan command with target option ok 227 - Execute with multiple targets ok 228 - Should have got warning for two targets ok 229 - 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 - App::Sqitch::Command::rebase does RevertDeployCommand ok 5 - App::Sqitch::Command::rebase does ConnectingCommand ok 6 - App::Sqitch::Command::rebase does ContextCommand ok 7 - Options should be correct ok 8 - Should parse options ok 9 - Options should not conflict with core options ok 10 - Load a sqitch sqitch object ok 11 - Should have empty default configuration with no config or opts ok 12 - Should have set option ok 13 - Should have mode, deploy_variables, verify, no_prompt, and log_only ok 14 - Should have set_revert option and no_prompt false ok 15 - set_deploy and set_revert should overrid set ok 16 - set_deploy and set_revert should merge with set ok 17 - set_revert should merge with set_deploy ok 18 - Should have deploy configuration ok 19 - Should have merged variables ok 20 - Should have no warnings ok 21 - Should have no_prompt true ok 22 - Should have false no_prompt, verify, and true prompt_accept from rebase config ok 23 - Should have true no_prompt, verify, and false prompt_accept from rebase from deploy ok 24 - Should have no_prompt, prompt_accept false and mode all again ok 25 - Should have no_prompt false and prompt_accept true for revert config ok 26 - Should have no_prompt true with -y ok 27 - 'new status with target' isa 'App::Sqitch::Command::rebase' ok 28 - Should have target "foo" ok 29 - An object of class 'App::Sqitch::Command::rebase' isa 'App::Sqitch::Command::rebase' ok 30 - Should have undef target ok 31 - onto_change should be undef ok 32 - upto_change should be undef ok 33 - Should collect no variables for deploy ok 34 - Should collect no variables for revert ok 35 - Should collect core deploy vars for deploy ok 36 - Should collect core revert vars for revert ok 37 - Should override core vars with deploy vars for deploy ok 38 - Should override core vars with deploy vars for revert ok 39 - Deploy vars should be unaffected by revert vars ok 40 - Should override deploy vars with revert vars for revert ok 41 - Should override deploy vars with engine vars for deploy ok 42 - Should override rebase vars with engine vars for revert ok 43 - Should override engine vars with deploy vars for deploy ok 44 - Should override engine vars with target vars for revert ok 45 - Should override target vars with --set vars for deploy ok 46 - Should override target vars with --set variables for revert ok 47 - Should override --set vars with --set-deploy variables for deploy ok 48 - Should not override --set vars with --set-deploy variables for revert ok 49 - Should not override --set vars with --set-revert variables for deploy ok 50 - Should override --set vars with --set-revert variables for revert ok 51 - Execute to "@alpha" ok 52 - undef, and "all" should be passed to the engine deploy ok 53 - No vars should have been passed through to the engine ok 54 - "@alpha" should be passed to the engine revert ok 55 - Engine should prompt ok 56 - Engine should no be log only ok 57 - Should have no warnings ok 58 - Execute with target ok 59 - undef, and "all" should be passed to the engine deploy ok 60 - undef should be passed to the engine revert ok 61 - No vars should have been passed through to the engine ok 62 - Engine should prompt ok 63 - Engine should no be log only ok 64 - The target name should be as passed ok 65 - Should have no warnings ok 66 - Execute with onto and target ok 67 - undef, and "all" should be passed to the engine deploy ok 68 - "widgets" should be passed to the engine revert ok 69 - No vars should have been passed through to the engine ok 70 - Engine should prompt ok 71 - Engine should no be log only ok 72 - The target name should be as passed ok 73 - Should have no warnings ok 74 - Execute with three args ok 75 - "widgets", and "all" should be passed to the engine deploy ok 76 - "roles" should be passed to the engine revert ok 77 - No vars should have been passed through to the engine ok 78 - Engine should prompt ok 79 - Engine should no be log only ok 80 - The target name should be as passed ok 81 - Should have no warnings ok 82 - Execute ok 83 - undef and "all" should be passed to the engine deploy ok 84 - undef and = should be passed to the engine revert ok 85 - No vars should have been passed through to the engine ok 86 - Should have no warnings ok 87 - 'Object with to and variables' isa 'App::Sqitch::Command::rebase' ok 88 - Execute again ok 89 - Target name should be from option ok 90 - Engine should be no_prompt ok 91 - Engine should be log_only ok 92 - Engine should verify ok 93 - "bar", "tag", and 1 should be passed to the engine deploy ok 94 - "foo" and 1 should be passed to the engine revert ok 95 - Variables should have been passed to the engine twice ok 96 - The revert vars should have been passed first ok 97 - The deploy vars should have been next ok 98 - Should have no warnings ok 99 - Execute with three args ok 100 - Target name should be from option ok 101 - Engine should be no_prompt ok 102 - Engine should be log_only ok 103 - Engine should verify ok 104 - "bar", "tag", and 1 should be passed to the engine deploy ok 105 - "foo" and 1 should be passed to the engine revert ok 106 - Variables should have been passed to the engine twice ok 107 - The revert vars should have been passed first ok 108 - The deploy vars should have been next ok 109 - Should have two warnings ok 110 - Should get an exception for unknown arg ok 111 - Unknow arg ident should be "rebase" ok 112 - Should get an exeption for two unknown arg ok 113 - Should get an exception for unknown args ok 114 - Unknow args ident should be "rebase" ok 115 - Should get an exeption for two unknown args ok 116 - Execute once more ok 117 - "bar", "tag", and 1 should be passed to the engine deploy ok 118 - Variables should have been passed to the engine twice ok 119 - The revert vars should have been passed first ok 120 - The deploy vars should have been next ok 121 - Should have emitted info for non-fatal revert exception ok 122 - Should rethrow confirm exception ok 123 - Should rethrow fatal exception ok 124 - Should rethrow unknown exception 1..124 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 - App::Sqitch::Command::revert does ContextCommand ok 5 - App::Sqitch::Command::revert does ConnectingCommand ok 6 - Options should be correct ok 7 - Should parse options ok 8 - Options should not conflict with core options ok 9 - Should have empty default configuration with no config or opts ok 10 - Should have set option ok 11 - Should have no_prompt false, prompt_accept true 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 - Should collect no variables ok 23 - Should collect core vars ok 24 - Should override core vars with deploy vars ok 25 - Should override deploy vars with revert vars ok 26 - Should override revert vars with engine vars ok 27 - Should override engine vars with target vars ok 28 - Should override target vars with --set variables ok 29 - Execute to "@alpha" ok 30 - Engine should be no_prompt ok 31 - Engine should not be log_only ok 32 - "@alpha" should be passed to the engine ok 33 - Should have no warnings ok 34 - Execute ok 35 - undef should be passed to the engine ok 36 - No vars should have been passed through to the engine ok 37 - Should still have no warnings ok 38 - Execute to target ok 39 - Engine should be no_prompt ok 40 - Engine should not be log_only ok 41 - undef" should be passed to the engine ok 42 - Target name should be as passed ok 43 - Should have no warnings ok 44 - Execute with change and target ok 45 - Engine should be no_prompt ok 46 - Engine should not be log_only ok 47 - "widgets" should be passed to the engine ok 48 - Target name should be as passed ok 49 - Should have no warnings ok 50 - Execute with target and change ok 51 - Engine should be no_prompt ok 52 - Engine should not be log_only ok 53 - "widgets" should be passed to the engine ok 54 - Target name should be as passed ok 55 - Should have no warnings ok 56 - 'Object with to and variables' isa 'App::Sqitch::Command::revert' ok 57 - Execute again 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 no warnings ok 64 - Execute with options and args ok 65 - Engine should not be no_prompt ok 66 - Engine should be log_only ok 67 - "foo" and 1 should be passed to the engine ok 68 - Vars should have been passed through to the engine ok 69 - Target name should be from option ok 70 - Should have two warnings ok 71 - Should get an exception for unknown arg ok 72 - Unknow arg ident should be "revert" ok 73 - Should get an exeption for two unknown arg ok 74 - Should get an exception for unknown args ok 75 - Unknow args ident should be "revert" ok 76 - Should get an exeption for two unknown args 1..76 ok t/rework.t .......... 1..234 ok 1 - Load a sqitch object ok 2 - 'rework command' isa 'App::Sqitch::Command::rework' ok 3 - App::Sqitch::Command::rework->can(...) ok 4 - App::Sqitch::Command::rework does ContextCommand ok 5 - Options should be set up ok 6 - Should parse options ok 7 - Options should not conflict with core options ok 8 - Should have default configuration with no config or opts ok 9 - Should have get requires, conflicts, and note options ok 10 - Grabs nothing from config ok 11 - Load Sqitch project ok 12 - 'rework command' isa 'App::Sqitch::Command::rework' ok 13 - Coerces rework.open_editor from config string boolean ok 14 - Requires should be an arrayref ok 15 - Conflicts should be an arrayref ok 16 - Note should be an arrayref ok 17 - Should get an example for nonexistent change ok 18 - Nonexistent change error ident should be "plan" ok 19 - Fail message should say the step does not exist ok 20 - Create another add with template_directory ok 21 - test-rework/deploy/foo.sql does not exist ok 22 - test-rework/revert/foo.sql does not exist ok 23 - test-rework/verify/foo.sql does not exist ok 24 - Execute with the --change option ok 25 - test-rework/deploy/foo.sql exists ok 26 - test-rework/revert/foo.sql exists ok 27 - test-rework/verify/foo.sql exists ok 28 - Get the "foo" change ok 29 - Should get an example for duplicate change ok 30 - Duplicate change error ident should be "plan" ok 31 - Fail message should say a tag is needed ok 32 - Tag it ok 33 - test-rework/deploy/foo@alpha.sql does not exist ok 34 - test-rework/revert/foo@alpha.sql does not exist ok 35 - test-rework/verify/foo@alpha.sql does not exist ok 36 - Rework "foo" ok 37 - test-rework/deploy/foo.sql exists ok 38 - test-rework/revert/foo.sql exists ok 39 - test-rework/verify/foo.sql exists ok 40 - test-rework/deploy/foo@alpha.sql exists ok 41 - test-rework/revert/foo@alpha.sql exists ok 42 - test-rework/verify/foo@alpha.sql exists ok 43 - test-rework/deploy/foo@alpha.sql and test-rework/deploy/foo.sql contents are the same ok 44 - test-rework/verify/foo@alpha.sql and test-rework/verify/foo.sql contents are the same ok 45 - test-rework/revert/foo.sql and test-rework/deploy/foo.sql contents are the same ok 46 - New revert should revert ok 47 - It should have prompted for a note ok 48 - Reload the plan file ok 49 - Get the steps ok 50 - Should have two steps ok 51 - First step should be "foo" ok 52 - Second step should also be "foo" ok 53 - Reworked step should require the previous step ok 54 - And the info message should suggest editing the old files ok 55 - Debug should show file copying ok 56 - Create another add with template_directory ok 57 - test-rework/deploy/bar.sql does not exist ok 58 - test-rework/revert/bar.sql does not exist ok 59 - test-rework/verify/bar.sql does not exist ok 60 - test-rework/deploy/bar.sql exists ok 61 - test-rework/revert/bar.sql does not exist ok 62 - test-rework/verify/bar.sql does not exist ok 63 - Tag it with @beta ok 64 - 'rework command with requirements and conflicts' isa 'App::Sqitch::Command::rework' ok 65 - test-rework/deploy/bar@beta.sql does not exist ok 66 - test-rework/revert/bar@beta.sql does not exist ok 67 - test-rework/verify/bar@beta.sql does not exist ok 68 - Rework "bar" ok 69 - test-rework/deploy/bar.sql exists ok 70 - test-rework/revert/bar.sql does not exist ok 71 - test-rework/verify/bar.sql does not exist ok 72 - test-rework/deploy/bar@beta.sql exists ok 73 - test-rework/revert/bar@beta.sql does not exist ok 74 - test-rework/verify/bar@beta.sql does not exist ok 75 - It should have prompted for a note ok 76 - Reload the plan file again ok 77 - Get the steps ok 78 - Should have four steps ok 79 - First step should be "foo" ok 80 - Second step should also be "foo" ok 81 - First step should be "bar" ok 82 - Second step should also be "bar" ok 83 - Requires should have been passed to reworked change ok 84 - Conflicts should have been passed to reworked change ok 85 - Note should have been passed as comment ok 86 - And the info message should show only the one file to modify ok 87 - Should have debug oputput for missing files ok 88 - Create another add with open_editor ok 89 - Tag it ok 90 - test-rework/deploy/bar@gamma.sql does not exist ok 91 - test-rework/revert/bar@gamma.sql does not exist ok 92 - test-rework/verify/bar@gamma.sql does not exist ok 93 - Rework "bar" ok 94 - test-rework/deploy/bar.sql exists ok 95 - test-rework/deploy/bar@gamma.sql exists ok 96 - test-rework/revert/bar@gamma.sql does not exist ok 97 - test-rework/verify/bar@gamma.sql does not exist ok 98 - It should have prompted to edit sql files ok 99 - And the info message should suggest editing the old files ok 100 - Create another rework with custom multiplan config ok 101 - Should have three targets ok 102 - Rework change "widgets" in all plans ok 103 - Get widgets@HEAD from the pg plan ok 104 - Get widgets@foo from the pg plan ok 105 - The two pg widgets should be different changes ok 106 - Get widgets@HEAD from the sqlite plan ok 107 - Get widgets@foo from the sqlite plan ok 108 - The two sqlite widgets should be different changes ok 109 - Get widgets@HEAD from the mysql plan ok 110 - Get widgets@foo from the mysql plan ok 111 - The two mysql widgets should be different changes ok 112 - pg/deploy/widgets.sql exists ok 113 - pg/revert/widgets.sql exists ok 114 - pg/verify/widgets.sql exists ok 115 - pg/deploy/widgets@foo.sql exists ok 116 - pg/revert/widgets@foo.sql exists ok 117 - pg/verify/widgets@foo.sql exists ok 118 - pg/deploy/widgets.sql and pg/deploy/widgets@foo.sql contents are the same ok 119 - pg/verify/widgets.sql and pg/verify/widgets@foo.sql contents are the same ok 120 - pg/revert/widgets.sql and pg/deploy/widgets@foo.sql contents are the same ok 121 - sqlite/deploy/widgets.sql exists ok 122 - sqlite/revert/widgets.sql exists ok 123 - sqlite/verify/widgets.sql exists ok 124 - sqlite/deploy/widgets@foo.sql exists ok 125 - sqlite/revert/widgets@foo.sql exists ok 126 - sqlite/verify/widgets@foo.sql exists ok 127 - sqlite/deploy/widgets.sql and sqlite/deploy/widgets@foo.sql contents are the same ok 128 - sqlite/verify/widgets.sql and sqlite/verify/widgets@foo.sql contents are the same ok 129 - sqlite/revert/widgets.sql and sqlite/deploy/widgets@foo.sql contents are the same ok 130 - mysql/deploy/widgets.sql exists ok 131 - mysql/revert/widgets.sql exists ok 132 - mysql/verify/widgets.sql exists ok 133 - mysql/deploy/widgets@foo.sql exists ok 134 - mysql/revert/widgets@foo.sql exists ok 135 - mysql/verify/widgets@foo.sql exists ok 136 - mysql/deploy/widgets.sql and mysql/deploy/widgets@foo.sql contents are the same ok 137 - mysql/verify/widgets.sql and mysql/verify/widgets@foo.sql contents are the same ok 138 - mysql/revert/widgets.sql and mysql/deploy/widgets@foo.sql contents are the same ok 139 - Should have listed the files in the note prompt ok 140 - And the info message should show the two files to modify ok 141 - Should have debug oputput for all copied files ok 142 - Should get an error for --all and a target arg ok 143 - Mixed arguments error ident should be "rework" ok 144 - Mixed arguments error message should be correct ok 145 - Create yet another rework with custom multiplan config ok 146 - Rework change "gadgets" in the sqlite plan ok 147 - Should still have three targets ok 148 - Get gadgets@HEAD from the pg plan ok 149 - Get gadgets@foo from the pg plan ok 150 - The two pg gadgets should be the same change ok 151 - Get gadgets@HEAD from the mysql plan ok 152 - Get gadgets@foo from the mysql plan ok 153 - The two mysql gadgets should be the same change ok 154 - Get gadgets@HEAD from the sqlite plan ok 155 - Get gadgets@foo from the sqlite plan ok 156 - The two sqlite gadgets should be different changes 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 - pg/deploy/gadgets.sql exists ok 170 - pg/revert/gadgets.sql exists ok 171 - pg/verify/gadgets.sql exists ok 172 - Should have listed SQLite scripts in the note prompt ok 173 - Create another rework with custom multiplan config ok 174 - Should have two targets ok 175 - Targets should use the same plan file ok 176 - Rework change "widgets" in all plans ok 177 - Get widgets@HEAD from the plan ok 178 - Get widgets@foo from the plan ok 179 - The two widgets should be different changes ok 180 - sqlite/deploy/widgets.sql exists ok 181 - sqlite/revert/widgets.sql exists ok 182 - sqlite/verify/widgets.sql exists ok 183 - sqlite/deploy/widgets@foo.sql exists ok 184 - sqlite/revert/widgets@foo.sql exists ok 185 - sqlite/verify/widgets@foo.sql exists ok 186 - sqlite/deploy/widgets.sql and sqlite/deploy/widgets@foo.sql contents are the same ok 187 - sqlite/verify/widgets.sql and sqlite/verify/widgets@foo.sql contents are the same ok 188 - sqlite/revert/widgets.sql and sqlite/deploy/widgets@foo.sql contents are the same ok 189 - pg/deploy/widgets.sql exists ok 190 - pg/revert/widgets.sql exists ok 191 - pg/verify/widgets.sql exists ok 192 - pg/deploy/widgets@foo.sql exists ok 193 - pg/revert/widgets@foo.sql exists ok 194 - pg/verify/widgets@foo.sql exists ok 195 - pg/deploy/widgets.sql and pg/deploy/widgets@foo.sql contents are the same ok 196 - pg/verify/widgets.sql and pg/verify/widgets@foo.sql contents are the same ok 197 - pg/revert/widgets.sql and pg/deploy/widgets@foo.sql contents are the same ok 198 - Should have listed all the files to edit in the note prompt ok 199 - And the info message should show the two files to modify ok 200 - Should have debug oputput for all copied files ok 201 - Create another rework with custom multiplan config ok 202 - Should have two targets ok 203 - Rework change "widgets" in all plans ok 204 - Get widgets@HEAD from the pg plan ok 205 - Get widgets@foo from the pg plan ok 206 - The two pg widgets should be different changes ok 207 - Get widgets@HEAD from the sqlite plan ok 208 - Get widgets@bar from the sqlite plan ok 209 - The two sqlite widgets should be different changes ok 210 - Should have listed all the files to edit in the note prompt ok 211 - And the info message should show the two files to modify ok 212 - Should have debug oputput for all copied files ok 213 - Create another rework with custom multiplan config ok 214 - Should have two targets ok 215 - Rework change "widgets" in all plans ok 216 - Get widgets@HEAD from the pg plan ok 217 - Get widgets@foo from the pg plan ok 218 - The two pg widgets should be different changes ok 219 - Get widgets@HEAD from the sqlite plan ok 220 - Get widgets@foo from the sqlite plan ok 221 - The two sqlite widgets should be different changes ok 222 - deploy/widgets.sql exists ok 223 - revert/widgets.sql exists ok 224 - verify/widgets.sql exists ok 225 - deploy/widgets@foo.sql exists ok 226 - revert/widgets@foo.sql exists ok 227 - verify/widgets@foo.sql exists ok 228 - deploy/widgets.sql and deploy/widgets@foo.sql contents are the same ok 229 - verify/widgets.sql and verify/widgets@foo.sql contents are the same ok 230 - revert/widgets.sql and deploy/widgets@foo.sql contents are the same ok 231 - Should have listed the files to edit in the note prompt ok 232 - And the info message should show the two files to modify ok 233 - Should have debug oputput for all copied files ok 234 - 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 - App::Sqitch::Command::show does ContextCommand ok 5 - Options should be correct ok 6 - Should parse options ok 7 - Options should not conflict with core options ok 8 - An object of class 'App::Sqitch::Command::show' isa 'App::Sqitch::Command::show' ok 9 - exists_only should be false by default ok 10 - Construct with exists_only ok 11 - exists_only should be set ok 12 - Should get empty hash for no config or options ok 13 - Should get exists_only => 1 for exist in options ok 14 - Get a change ok 15 - Find change by id ok 16 - The change info should have been emitted ok 17 - Find change by name ok 18 - The change info should have been emitted again ok 19 - Should get an error for an unknown change ok 20 - Unknown change error ident should be "show" ok 21 - Should get proper error for unknown change ok 22 - Should return false for uknown change and exists_only ok 23 - Nothing should have been emitted ok 24 - Find change by tag id ok 25 - The change info should have been emitted ok 26 - Find change by tag ok 27 - The change info should have been emitted ok 28 - Run exists with ID ok 29 - There should be no output ok 30 - Find tag by id ok 31 - The tag info should have been emitted ok 32 - Find tag by id with exists_only ok 33 - Nothing should have been emitted ok 34 - Find tag by name ok 35 - The tag info should have been emitted ok 36 - Find tag by formatted name ok 37 - The tag info should have been emitted ok 38 - Should get error for non-existent tag ok 39 - Unknown tag error ident should be "show" ok 40 - Should get proper error for unknown tag ok 41 - Should return false for non-existent tag and exists_only ok 42 - Nothing should have been emitted ok 43 - Should get error for non-existent tag ID ok 44 - Unknown tag ID error ident should be "show" ok 45 - Should get proper error for unknown tag ID ok 46 - Show a deploy file ok 47 - The deploy file should have been emitted ok 48 - Show a deploy file with exists_only ok 49 - Nothing should have been emitted ok 50 - Show a revert file ok 51 - The revert file should have been emitted ok 52 - Should get error for nonexistent varify file ok 53 - Nonexistent file error ident should be "show" ok 54 - Should get proper error for nonexistent file ok 55 - Should return false for nonexistent file ok 56 - Nothing should have been emitted ok 57 - Should get error for uknown type ok 58 - Unknown type error ident should be "show" ok 59 - Should get proper error for unknown type ok 60 - Get a change ok 61 - An object of class 'App::Sqitch::Command::show' isa 'App::Sqitch::Command::show' ok 62 - Target should be set ok 63 - Find change by id ok 64 - The change info should have been emitted ok 65 - Should get usage for missing params ok 66 - Nothing should have been passed to usage 1..66 ok t/snowflake.t ....... ok 1 - require App::Sqitch::Engine::snowflake; ok 2 - config_vars should return three vars ok 3 - An object of class 'App::Sqitch::Engine::snowflake' isa 'App::Sqitch::Engine::snowflake' ok 4 - Username should be sysuser ok 5 - Password should be undef ok 6 - Key should be "snowflake" ok 7 - Name should be "Snowflake" ok 8 - Driver should be DBD::ODBC ok 9 - Default client should be snowsql ok 10 - client should default to snowsql ok 11 - Registry default should be "sqitch" ok 12 - DB URI should be filled in ok 13 - Destination should be URI string ok 14 - Registry destination should be the same as destination ok 15 - Should build URI from environment ok 16 - Should read username from environment ok 17 - Should read password from environment ok 18 - Should read account from host ok 19 - Should read warehouse from environment ok 20 - Should build URI host from account and region environment vars ok 21 - Should read account from environment ok 22 - Target password should be from SQITCH_PASSWORD ok 23 - Should prefer password from SQITCH_PASSWORD ok 24 - An object of class 'App::Sqitch::Engine::snowflake' isa 'App::Sqitch::Engine::snowflake' ok 25 - Destination should be target name ok 26 - Registry destination should be the same as destination ok 27 - snowsql command should be std opts-only ok 28 - An object of class 'App::Sqitch::Engine::snowflake' isa 'App::Sqitch::Engine::snowflake' ok 29 - Set some variables ok 30 - Variables should be passed to snowsql via --set ok 31 - Target name should not read $SNOWSQL_DATABASE ok 32 - Registry target should be the same as destination ok 33 - Target name should not read $SNOWSQL_USER ok 34 - Registry target should be the same as destination ok 35 - Target name should not fall back on sysuser ok 36 - Registry target should be the same as destination ok 37 - Target name should be the default ok 38 - Registry target should be the same as destination ok 39 - Should have read config from file ok 40 - Should have read config from file ok 41 - Should have read config from file ok 42 - Should read username fron snowsql config file ok 43 - Should read password fron snowsql config file ok 44 - Should read accountname fron snowsql config file ok 45 - Should read dbname from snowsql config file ok 46 - Should read warehousename fron snowsql config file ok 47 - Should read rolename fron snowsql config file ok 48 - Should derive host name from config file accounte name ok 49 - Create another snowflake ok 50 - Should extract account from URI ok 51 - Should extract username from URI ok 52 - Should extract password from URI ok 53 - Should extract warehouse from URI ok 54 - Should extract role from URI ok 55 - registry should be as configured ok 56 - URI should be as configured with full domain name ok 57 - Destination should omit password ok 58 - client should be as configured ok 59 - snowsql command should be configured from URI config ok 60 - Should have _listagg_format ok 61 - Should have _ts_default ok 62 - Should have _regex_op ok 63 - Should have _simple_from ok 64 - Should have _limit_default ok 65 - Should have no table error ok 66 - Should have no column error ok 67 - Should now have table error ok 68 - Still should have no column error ok 69 - Should again have no table error ok 70 - Should now have no column error ok 71 - Should get limit and offset ok 72 - Should get limit and offset when offset only ok 73 - Should get only limit with 0 offset ok 74 - Should get only limit with noa offset ok 75 - Should get no limit or offset for 0s ok 76 - Should get no limit or offset for no args ok 77 - Should use regexp_substr IS NOT NULL for regex expr ok 78 - App::Sqitch::Engine::snowflake->can(...) ok 79 - Create a snowflake with sqitch with options ok 80 - SNOWSQL_PWD should be "s3cr3t" ok 81 - Call _run ok 82 - Command should be passed to capture() ok 83 - SNOWSQL_PWD should be "s3cr3t" ok 84 - Call _spool ok 85 - Command should be passed to spool() ok 86 - SNOWSQL_PWD should be "s3cr3t" ok 87 - Call _capture ok 88 - Command should be passed to capture() ok 89 - SNOWSQL_PWD should be "s3cr3t" ok 90 - Call _probe ok 91 - Command should be passed to probe() ok 92 - Create a snowflake with sqitch with no pw ok 93 - SNOWSQL_PWD should not exist ok 94 - Call _run again ok 95 - Command should be passed to capture() again ok 96 - SNOWSQL_PWD should not exist ok 97 - Call _spool again ok 98 - Command should be passed to spool() again ok 99 - SNOWSQL_PWD should not exist ok 100 - Call _capture again ok 101 - Command should be passed to capture() again ok 102 - SNOWSQL_PWD should not exist ok 103 - Call _probe again ok 104 - Command should be passed to probe() again ok 105 - SNOWSQL_PWD should not exist ok 106 - Run foo/bar.sql ok 107 - File should be passed to capture() ok 108 - SNOWSQL_PWD should not exist ok 109 - Spool a "file handle" ok 110 - Handle should be passed to spool() ok 111 - SNOWSQL_PWD should not exist ok 112 - Verify foo/bar.sql again ok 113 - Verifile file should be passed to run() for high verbosity ok 114 - App::Sqitch::Engine::snowflake->can('_ts2char_format') ok 115 - _ts2char_format should work ok 116 - App::Sqitch::Engine::snowflake->can('_dt') ok 117 - 'Return value of _dt()' isa 'App::Sqitch::DateTime' ok 118 - DateTime year should be set ok 119 - DateTime month should be set ok 120 - DateTime day should be set ok 121 - DateTime hour should be set ok 122 - DateTime minute should be set ok 123 - DateTime second should be set ok 124 - DateTime TZ should be set ok 125 - Construct a datetime object ok 126 - Should get ISO output from _char2ts ok 127 - App::Sqitch::Engine::snowflake->can(...) # Subtest: live database 1..0 # SKIP Unable to live-test Snowflake engine: DBD::ODBC 1.59 required to manage Snowflake at t/snowflake.t line 542. ok 128 # skip Unable to live-test Snowflake engine: DBD::ODBC 1.59 required to manage Snowflake at t/snowflake.t line 542. # 1..128 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 - Key should be "sqlite" ok 5 - Name should be "SQLite" ok 6 - client should default to sqlite3 ok 7 - dbname should be filled in ok 8 - Target attribute should be specified target ok 9 - Destination should be uri stringified ok 10 - Registry target should be registry_uri stringified ok 11 - sqlite3 command should have the proper opts ok 12 - Create another sqlite ok 13 - client should fall back on config ok 14 - dbname should fall back on config ok 15 - Target should be as specified ok 16 - Destination should be configured target name ok 17 - registry_uri should fall back on config ok 18 - Registry target should be configured registry_uri stringified ok 19 - Create another sqlite ok 20 - dbname should fall back on config with no extension ok 21 - Target should be as specified ok 22 - Destination should be configured target name ok 23 - registry_uri should fall back on config wth extension ok 24 - Registry target should be configured registry_uri stringified ok 25 - Create another sqlite ok 26 - dbname should fall back on config with no extension ok 27 - Target should be as specified ok 28 - Destination should be configured target name ok 29 - registry_uri should fall back on config wth extension ok 30 - Registry target should be configured registry_uri stringified ok 31 - Create another sqlite ok 32 - dbname should fall back on config with no extension ok 33 - Target should be as specified ok 34 - Destination should be configured target name ok 35 - registry_uri should fall back on config wth extension ok 36 - Registry target should be configured registry_uri stringified ok 37 - Instantiate with a temporary database file ok 38 - App::Sqitch::Engine::sqlite->can('_read') ok 39 - _read() should work ok 40 - _read() should SQL-quote the file name ok 41 - _read() should SQL-quote quotes, too ok 42 - App::Sqitch::Engine::sqlite->can(...) ok 43 - Call _run ok 44 - Command should be passed to run() ok 45 - Call _spool ok 46 - Command should be passed to spool() ok 47 - Call _capture ok 48 - Command should be passed to capture() ok 49 - Run foo/bar.sql ok 50 - File should be passed to run() ok 51 - Spool a "file handle" ok 52 - Handle should be passed to spool() ok 53 - Verify foo/bar.sql ok 54 - Verify file should be passed to capture() ok 55 - Verify foo/bar.sql again ok 56 - Verifile file should be passed to run() for high verbosity ok 57 - App::Sqitch::Engine::sqlite->can('_ts2char_format') ok 58 - _ts2char should work ok 59 - App::Sqitch::Engine::sqlite->can('_dt') ok 60 - 'Return value of _dt()' isa 'App::Sqitch::DateTime' ok 61 - DateTime year should be set ok 62 - DateTime month should be set ok 63 - DateTime day should be set ok 64 - DateTime hour should be set ok 65 - DateTime minute should be set ok 66 - DateTime second should be set ok 67 - DateTime TZ should be set ok 68 - Create command for v3.3.9 ok 69 - Should be okay with sqlite v3.3.9 ok 70 - Create command for v3.3.10 ok 71 - Should be okay with sqlite v3.3.10 ok 72 - Create command for v3.3.200 ok 73 - Should be okay with sqlite v3.3.200 ok 74 - Create command for v3.4.0 ok 75 - Should be okay with sqlite v3.4.0 ok 76 - Create command for v3.4.8 ok 77 - Should be okay with sqlite v3.4.8 ok 78 - Create command for v3.7.11 ok 79 - Should be okay with sqlite v3.7.11 ok 80 - Create command for v3.8.12 ok 81 - Should be okay with sqlite v3.8.12 ok 82 - Create command for v3.10.0 ok 83 - Should be okay with sqlite v3.10.0 ok 84 - Create command for v4.1.30 ok 85 - Should be okay with sqlite v4.1.30 ok 86 - Create command for v3.3.8 ok 87 - Should not be okay with v3.3.8 ok 88 - Should get ident "sqlite" for v3.3.8 ok 89 - Should get proper error message for v3.3.8 ok 90 - Create command for v3.3.0 ok 91 - Should not be okay with v3.3.0 ok 92 - Should get ident "sqlite" for v3.3.0 ok 93 - Should get proper error message for v3.3.0 ok 94 - Create command for v3.2.8 ok 95 - Should not be okay with v3.2.8 ok 96 - Should get ident "sqlite" for v3.2.8 ok 97 - Should get proper error message for v3.2.8 ok 98 - Create command for v3.0.1 ok 99 - Should not be okay with v3.0.1 ok 100 - Should get ident "sqlite" for v3.0.1 ok 101 - Should get proper error message for v3.0.1 ok 102 - Create command for v3.0.0 ok 103 - Should not be okay with v3.0.0 ok 104 - Should get ident "sqlite" for v3.0.0 ok 105 - Should get proper error message for v3.0.0 ok 106 - Create command for v2.8.1 ok 107 - Should not be okay with v2.8.1 ok 108 - Should get ident "sqlite" for v2.8.1 ok 109 - Should get proper error message for v2.8.1 ok 110 - Create command for v2.20.0 ok 111 - Should not be okay with v2.20.0 ok 112 - Should get ident "sqlite" for v2.20.0 ok 113 - Should get proper error message for v2.20.0 ok 114 - Create command for v1.0.0 ok 115 - Should not be okay with v1.0.0 ok 116 - Should get ident "sqlite" for v1.0.0 ok 117 - Should get proper error message for v1.0.0 ok 118 - Create command for v3.7.12 with newline ok 119 - Should be okay with sqlite version v3.7.12 with newline ok 120 - App::Sqitch::Engine::sqlite->can(...) # Subtest: live database 1..0 # SKIP Unable to live-test SQLite engine: "sqlite3" failed to start: "No such file or directory" ok 121 # skip Unable to live-test SQLite engine: "sqlite3" failed to start: "No such file or directory" # 1..121 ok t/status.t .......... 1..124 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 - App::Sqitch::Command::status does ContextCommand ok 6 - App::Sqitch::Command::status does ConnectingCommand ok 7 - Options should be correct ok 8 - Should parse options ok 9 - Options should not conflict with core options ok 10 - Should have error for uninitialized database ok 11 - Uninitialized database error ident should be "status" ok 12 - Uninitialized database error message should be correct ok 13 - 'new status command' isa 'App::Sqitch::Command::status' ok 14 - Should have project "foo" ok 15 - Load a sqitch object with SQLite ok 16 - Create another status command ok 17 - Should get an error for uninitialized db ok 18 - Uninitialized db error ident should be "status" ok 19 - Uninitialized db error message should be correct ok 20 - Should get an error for no registered projects ok 21 - No projects error ident should be "status" ok 22 - No projects error message should be correct ok 23 - Should get an error for too many projects ok 24 - Too many projects error ident should be "status" ok 25 - Too many projects error message should be correct ok 26 - Should find single project ok 27 ok 28 - 'another status command' isa 'App::Sqitch::Command::status' ok 29 - Should have plan project ok 30 - Default target should be undef ok 31 - 'new status with target' isa 'App::Sqitch::Command::status' ok 32 - Should have target "foo" ok 33 - Should get empty hash for no config or options ok 34 - Should get error for invalid date format in config ok 35 - Invalid date format error ident should be "datetime" ok 36 - Invalid date format error message should be correct ok 37 - Should get bool values set from config ok 38 - Should get error for invalid date format in optsions ok 39 - Invalid date format error ident should be "status" ok 40 - Invalid date format error message should be correct ok 41 - Emit the state ok 42 - The state should have been emitted ok 43 - Emit the state with a tag ok 44 - The state should have been emitted with a tag ok 45 - Emit the state with multiple tags ok 46 - The state should have been emitted with multiple tags ok 47 - Create status command with an engine ok 48 - Try to emit changes ok 49 - Should have emitted no changes ok 50 - Create change-showing status command ok 51 - Emit changes again ok 52 - Project "foo" should have been passed to current_changes ok 53 - Should have emitted one change ok 54 - Emit changes thrice ok 55 - Project "foo" again should have been passed to current_changes ok 56 - Should have emitted three changes ok 57 - Try to emit tags ok 58 - No tags should have been emitted ok 59 - Create tag-showing status command ok 60 - Try to emit tags again ok 61 - Project "bar" should be passed to current_tags() ok 62 - Should have emitted a header for no tags ok 63 - Emit tags ok 64 - Project "bar" should again be passed to current_tags() ok 65 - Should have emitted one tag ok 66 - Emit tags again ok 67 - Project "bar" should once more be passed to current_tags() ok 68 - Should have emitted all three tags ok 69 - Create status command with actual plan command ok 70 - Emit status ok 71 - Should have a blank comment line ok 72 - Should emit up-to-date output ok 73 - Emit status again ok 74 - Should have a blank comment line ok 75 - Should emit list of undeployed changes ok 76 - Emit status thrice ok 77 - Should have a blank comment line ok 78 - Should emit list of undeployed changes ok 79 - Die on invalid ID ok 80 - Invalid ID error ident should be "status" ok 81 - The invalid ID error message should be correct ok 82 - Should have a blank comment line ok 83 - Should have a message about inability to find the change ok 84 - Recreate status command ok 85 - Execute ok 86 - The state should have been emitted ok 87 - Should emit list of undeployed changes ok 88 - No target name should have been passed to Target ok 89 - Execute with target arg ok 90 - The state should have been emitted ok 91 - Should emit list of undeployed changes ok 92 - Name "db:sqlite:" should have been passed to Target ok 93 - Create status command with a target option ok 94 - Execute with target attribute 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 - Execute with target attribute and arg ok 99 - The state should have been emitted ok 100 - Should emit list of undeployed changes ok 101 - Name "db:sqlite:" should have been passed to Target ok 102 - Should have got warning for two targets ok 103 - Create status command with no target option ok 104 - Execute with plan file ok 105 - The state should have been emitted ok 106 - Should emit list of undeployed changes ok 107 - Name "db:sqlite:" should have been passed to Target ok 108 - Should have no warnings ok 109 - Create status command with specified project ok 110 - Execute for specified project ok 111 - The specified project state should have been emitted ok 112 - Should emit unknown status message for specified project ok 113 - Create status command with external project ok 114 - Execute for external project ok 115 - The external project state should have been emitted ok 116 - Should emit unknown status message for external project ok 117 - Die on no state ok 118 - No state error ident should be "status" ok 119 - No state error message should be correct ok 120 - The "On database" comment should have been emitted ok 121 - Should get an error for uninitialized db ok 122 - Uninitialized db error ident should be "status" ok 123 - Uninitialized db error message should be correct ok 124 - no warnings ok t/tag.t ............. 1..22 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 - Create tag with more stuff ok 13 - It should as_string correctly ok 14 - Change should be correct ok 15 - Planner name and email should format properly ok 16 - Change should be for previous change ok 17 - Tag info should include the change ok 18 - Tag ID should be correct ok 19 - Create tag with UTF-8 name ok 20 - The name should be decoded text in info ok 21 - Tag ID should be hahsed from encoded UTF-8 ok 22 - no warnings ok t/tag_cmd.t ......... 1..86 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 - App::Sqitch::Command::tag does ContextCommand ok 6 - Should have note option ok 7 - Should parse options ok 8 - Options should not conflict with core options ok 9 - Should get empty hash for no config or options ok 10 - Should not have fetched boolean tag.all config ok 11 - Should get populated hash for no all options ok 12 - Should not have fetched boolean tag.all config ok 13 - Add change "foo" ok 14 - 'new tag command' isa 'App::Sqitch::Command::tag' ok 15 - Tag @alpha ok 16 - Reload plan ok 17 - Should have tagged "foo" ok 18 - New tag should have been written ok 19 - New tag should have empty note ok 20 - Should have requested a note ok 21 - The info message should be correct ok 22 - Execute with no arg ok 23 - The one tag should have been listed ok 24 - Should have requested a note ok 25 - Add tag @beta ok 26 - Execute with no arg again ok 27 - Both tags should have been listed ok 28 - Should have requested a note ok 29 - 'tag command with note' isa 'App::Sqitch::Command::tag' ok 30 - Tag @gamma ok 31 - Gamma tag should be on change "foo" ok 32 - Gamma tag should have note ok 33 - Reload plan ok 34 - Gamma tag should have been written ok 35 - Written tag should have note ok 36 - Should have requested a note ok 37 - The gamma note should be correct ok 38 - 'tag command with note' isa 'App::Sqitch::Command::tag' ok 39 - Add change "bar" ok 40 - Add change "baz" ok 41 - Tag change "bar" with @delta ok 42 - Reload plan ok 43 - Should have tagged "bar" ok 44 - Reload plan ok 45 - New tag should have been written ok 46 - New tag should have the proper note ok 47 - Should have requested a note ok 48 - The info message should be correct ok 49 - 'tag command with change name' isa 'App::Sqitch::Command::tag' ok 50 - Tag change "bar" with @zeta ok 51 - Should have tagged "bar" with @zeta ok 52 - Reload plan ok 53 - Tag @zeta should have been written ok 54 - Tag @zeta should have the proper note ok 55 - Should have requested a note ok 56 - The zeta info message should be correct ok 57 - Load another sqitch sqitch object ok 58 - 'another tag command' isa 'App::Sqitch::Command::tag' ok 59 - Tag with @whacko ok 60 - Should have tagged "baz" with @whacko ok 61 - The whacko info message should be correct ok 62 - Should get an error for --all and a target arg ok 63 - Mixed arguments error ident should be "tag" ok 64 - Mixed arguments error message should be correct ok 65 - Load another sqitch sqitch object ok 66 - 'yet another tag command' isa 'App::Sqitch::Command::tag' ok 67 - Tag with @dubdub ok 68 - Should have two targets ok 69 - Should have tagged pg plan change "pg_change" with @dubdub ok 70 - Should have tagged sqlite plan change "sqlite_change" with @dubdub ok 71 - The dubdub info message should show both plans tagged ok 72 - Tag sqlite plan with @shoot ok 73 - Should still have two targets ok 74 - Should not have tagged pg plan change "sqlite_change" with @shoot ok 75 - Should have tagged sqlite plan change "sqlite_change" with @shoot ok 76 - The shoot info message should the sqlite plan getting tagged ok 77 - 'yet another tag command' isa 'App::Sqitch::Command::tag' ok 78 - Tag with @huwah ok 79 - Should still have two targets ok 80 - Should have tagged pg plan change "pg_change" with @huwah ok 81 - Should not have tagged sqlite plan change "sqlite_change" with @huwah ok 82 - The huwah info message should the pg plan getting tagged ok 83 - Should get an error for conflict with target name ok 84 - Conflicting target error ident should be "tag" ok 85 - Conflicting target error message should be correct ok 86 - 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 reworked_dir ok 18 - Should have default reworked_deploy_dir ok 19 - Should have default reworked_revert_dir ok 20 - Should have default reworked_verify_dir ok 21 - Should have default extension ok 22 - Should have default plan file ok 23 - 'Should get plan' isa 'App::Sqitch::Plan' ok 24 - Plan file should be copied from Target ok 25 - DSN should be from URI ok 26 - Username should be from URI ok 27 - Password should be from URI ok 28 - Variables should be empty ok 29 - An object of class 'App::Sqitch::Target' isa 'App::Sqitch::Target' ok 30 - Username should be from environment variable ok 31 - Password should be from environment variable ok 32 - Should get error for missing params ok 33 - 'Target with name and URI' isa 'App::Sqitch::Target' ok 34 - Name should be "foo" ok 35 - Target should be alias for name ok 36 - URI should be set as passed ok 37 - Sqitch should be as passed ok 38 - Engine key should be "pg" ok 39 - 'Engine' isa 'App::Sqitch::Engine::pg' ok 40 - DSN should be from URI ok 41 - Username should be from URI ok 42 - Password should be from environment ok 43 - Variables should be set ok 44 - 'Target with URI' isa 'App::Sqitch::Target' ok 45 - Name should be URI without password ok 46 - Target should be alias for name ok 47 - Engine key should be "pg" ok 48 - 'Engine' isa 'App::Sqitch::Engine::pg' ok 49 - DSN should be from URI ok 50 - Username should be from URI ok 51 - Password should be from URI ok 52 - 'Target from environment' isa 'App::Sqitch::Target' ok 53 - Name should be set ok 54 - URI should be set ok 55 - Engine key should be "pg" ok 56 - 'Engine' isa 'App::Sqitch::Engine::pg' ok 57 - 'Default target' isa 'App::Sqitch::Target' ok 58 - Name should be "db:sqlite:" ok 59 - URI should be "db:sqlite:" ok 60 - Should have tried to get engine target ok 61 - 'Default target' isa 'App::Sqitch::Target' ok 62 - Name should be "db:mysql:" ok 63 - URI should be "db:mysql" ok 64 - Should have tried to get core.target, core.engine and then the target ok 65 - 'Target with URI in name' isa 'App::Sqitch::Target' ok 66 - Name should be "db:pg:" ok 67 - URI should be "db:pg" ok 68 - Should have fetched no config ok 69 - Should have error for no engine in URI ok 70 - Should have target ident ok 71 - Should have message about no engine-less URI ok 72 - Should have error for no engine or target ok 73 - Should have target ident ok 74 - Should have message about no configuration ok 75 - Should again have error for no engine or target ok 76 - Should have target ident again ok 77 - Should have message about no specified engine ok 78 - 'Engineless target' isa 'App::Sqitch::Target' ok 79 - Name should be "db:" ok 80 - URI should be "db:" ok 81 - Should not have tried to get engine target ok 82 - Sqitch should be as passed ok 83 - Engine key should be undef ok 84 - Should get exception for no engine ok 85 - Should have engine ident ok 86 - Should have message about no engine ok 87 - Should have default top_dir ok 88 - Should have default deploy_dir ok 89 - Should have default revert_dir ok 90 - Should have default verify_dir ok 91 - Should have default reworked_dir ok 92 - Should have default reworked_deploy_dir ok 93 - Should have default reworked_revert_dir ok 94 - Should have default reworked_verify_dir ok 95 - Should have default extension ok 96 - Should have default plan file ok 97 - 'Should get plan' isa 'App::Sqitch::Plan' ok 98 - Plan file should be copied from Target ok 99 - DSN should be empty ok 100 - Username should be undef ok 101 - Password should be undef ok 102 - 'Engine URI target' isa 'App::Sqitch::Target' ok 103 - Name should be "db:pg://a@foo/scat" ok 104 - URI should be "db:pg://a:b@foo/scat" ok 105 - Nothing should have been fetched from config ok 106 - 'Engine URI core.target' isa 'App::Sqitch::Target' ok 107 - Name should be "db:pg://s@ack/shi" ok 108 - URI should be "db:pg://s:b@ack/shi" ok 109 - Should have fetched core.target from config ok 110 - 'Engine name core.target' isa 'App::Sqitch::Target' ok 111 - Name should be "shout" ok 112 - URI should be "db:pg:w:e@we/bar" ok 113 - Should have fetched target.shout.uri from config ok 114 - Should have exception for unknown named target ok 115 - Unknown target error ident should be "target" ok 116 - Unknown target error message should be correct ok 117 - Should have requested target URI from config ok 118 - Should have requested target.foo section ok 119 - Should have exception for URL-less named target ok 120 - URL-less target error ident should be "target" ok 121 - URL-less target error message should be correct ok 122 - Should have requested target URI from config ok 123 - Should have requested target.foo section ok 124 - 'Named target' isa 'App::Sqitch::Target' ok 125 - Name should be "foo" ok 126 - URI should be "db:pg:foo" ok 127 - Should have requested target URI from config ok 128 - Should not have requested deprecated pg section ok 129 - 'Engine named target' isa 'App::Sqitch::Target' ok 130 - Name should be "foo" ok 131 - URI should be "db:sqlite:foo" ok 132 - Should have requested engine target and target URI from config ok 133 - Should have requested no section ok 134 - 'Environment-named target' isa 'App::Sqitch::Target' ok 135 - Name should be "bar" ok 136 - URI should be "db:sqlite:bar" ok 137 - Should have requested target URI from config ok 138 - Should have requested no sections ok 139 - 'URI-munged target' isa 'App::Sqitch::Target' ok 140 - Should have requested no section ok 141 - Name should be passwordless stringified URI ok 142 - URI should be tweaked by URI params ok 143 - 'Foo target' isa 'App::Sqitch::Target' ok 144 - Should have requested target URI ok 145 - Should have fetched no section ok 146 - Name should be as passed ok 147 - URI should be tweaked by URI params ok 148 - 'URI target' isa 'App::Sqitch::Target' ok 149 - Should have requested no config ok 150 - Should have fetched no section ok 151 - Name should tweaked by URI params ok 152 - URI should be tweaked by URI params ok 153 - Registry should be "myreg" ok 154 - Client should be "pgsql" ok 155 - Plan file should be "my.plan" ok 156 - 'Plan file' isa 'Path::Class::File' ok 157 - 'Plan' isa 'App::Sqitch::Plan' ok 158 - Plan should use target plan file ok 159 - Top dir should be "top" ok 160 - 'Top dir' isa 'Path::Class::Dir' ok 161 - Deploy dir should be "dep" ok 162 - 'Deploy dir' isa 'Path::Class::Dir' ok 163 - Revert dir should be "rev" ok 164 - 'Revert dir' isa 'Path::Class::Dir' ok 165 - Verify dir should be "ver" ok 166 - 'Verify dir' isa 'Path::Class::Dir' ok 167 - Reworked dir should be "wrk" ok 168 - 'Reworked dir' isa 'Path::Class::Dir' ok 169 - Reworked deploy dir should be "rdep" ok 170 - 'Reworked deploy dir' isa 'Path::Class::Dir' ok 171 - Reworked revert dir should be "rrev" ok 172 - 'Reworked revert dir' isa 'Path::Class::Dir' ok 173 - Reworked verify dir should be "rver" ok 174 - 'Reworked verify dir' isa 'Path::Class::Dir' ok 175 - Extension should be "ddl" ok 176 - Should have no variables ok 177 - Registry should be "yoreg" ok 178 - Client should be "mycli" ok 179 - Plan file should be "pg.plan" ok 180 - 'Plan file' isa 'Path::Class::File' ok 181 - 'Plan' isa 'App::Sqitch::Plan' ok 182 - Plan should use target plan file ok 183 - Top dir should be "pg" ok 184 - 'Top dir' isa 'Path::Class::Dir' ok 185 - Deploy dir should be "pgdep" ok 186 - 'Deploy dir' isa 'Path::Class::Dir' ok 187 - Revert dir should be "pgrev" ok 188 - 'Revert dir' isa 'Path::Class::Dir' ok 189 - Verify dir should be "pgver" ok 190 - 'Verify dir' isa 'Path::Class::Dir' ok 191 - Reworked dir should be "pg/r" ok 192 - 'Reworked dir' isa 'Path::Class::Dir' ok 193 - Reworked deploy dir should be "pgrdep" ok 194 - 'Reworked deploy dir' isa 'Path::Class::Dir' ok 195 - Reworked revert dir should be "pgrrev" ok 196 - 'Reworked revert dir' isa 'Path::Class::Dir' ok 197 - Reworked verify dir should be "pgrver" ok 198 - 'Reworked verify dir' isa 'Path::Class::Dir' ok 199 - Extension should be "pgddl" ok 200 - Variables should be read from engine.variables ok 201 - Registry should be "fooreg" ok 202 - Client should be "foocli" ok 203 - Plan file should be "foo.plan" ok 204 - 'Plan file' isa 'Path::Class::File' ok 205 - 'Plan' isa 'App::Sqitch::Plan' ok 206 - Plan should use target plan file ok 207 - Top dir should be "foo" ok 208 - 'Top dir' isa 'Path::Class::Dir' ok 209 - Deploy dir should be "foodep" ok 210 - 'Deploy dir' isa 'Path::Class::Dir' ok 211 - Revert dir should be "foorev" ok 212 - 'Revert dir' isa 'Path::Class::Dir' ok 213 - Verify dir should be "foover" ok 214 - 'Verify dir' isa 'Path::Class::Dir' ok 215 - Reworked dir should be "foo/r" ok 216 - 'Reworked dir' isa 'Path::Class::Dir' ok 217 - Reworked deploy dir should be "foodepr" ok 218 - 'Reworked deploy dir' isa 'Path::Class::Dir' ok 219 - Reworked revert dir should be "foorevr" ok 220 - 'Reworked revert dir' isa 'Path::Class::Dir' ok 221 - Reworked verify dir should be "fooverr" ok 222 - 'Reworked verify dir' isa 'Path::Class::Dir' ok 223 - Extension should be "fooddl" ok 224 - Variables should be read from engine., and target.variables ok 225 - Load all targets ok 226 - Should have one target ok 227 - It should be the generic core engine target ok 228 - Load all targets with core target config ok 229 - Should again have one target ok 230 - It should be the named target ok 231 - It should have no variables ok 232 - Load all targets with core engine and target config ok 233 - Should still have one target ok 234 - It should again be the named target ok 235 - It should have no variables ok 236 - Load all user conf targets ok 237 - Should have four user targets ok 238 - Should have all the engine targets ok 239 - MySQL target should have engine variables ok 240 - Load all target conf targets ok 241 - Should have three targets ok 242 - Core engine should be default target ok 243 - Should have the core target plus the named targets ok 244 - Load all local conf targets ok 245 - Should have two local targets ok 246 - Core engine should be lead to default target ok 247 - Should have the core target plus the named targets ok 248 - Load all engine conf targets ok 249 - Should have three engine conf targets ok 250 - Should have the engine and target targets ok 251 - Overload all engine conf targets ok 252 - Should again have three engine conf targets ok 253 - Should have set dbname on all target URIs ok 254 - Should have set the registry on all targets. 1..254 ok t/target_cmd.t ...... 1..243 ok 1 - Load a sqitch sqitch object ok 2 - 'Target command' isa 'App::Sqitch::Command::target' ok 3 - 'Target command' isa 'App::Sqitch::Command' ok 4 - App::Sqitch::Command::target->can(...) ok 5 - App::Sqitch::Command::target does TargetConfigCommand ok 6 - Options should be correct ok 7 - Should parse options ok 8 - Options should not conflict with core options ok 9 - Default properties should be empty ok 10 - configure() should ignore config file ok 11 - Get full config ok 12 - Should have properties ok 13 - 'plan_file file attribute' isa 'Path::Class::File' ok 14 - 'top_dir directory attribute' isa 'Path::Class::Dir' ok 15 - 'reworked_dir directory attribute' isa 'Path::Class::Dir' ok 16 - 'deploy_dir directory attribute' isa 'Path::Class::Dir' ok 17 - 'reworked_deploy_dir directory attribute' isa 'Path::Class::Dir' ok 18 - 'revert_dir directory attribute' isa 'Path::Class::Dir' ok 19 - 'reworked_revert_dir directory attribute' isa 'Path::Class::Dir' ok 20 - 'verify_dir directory attribute' isa 'Path::Class::Dir' ok 21 - 'reworked_verify_dir directory attribute' isa 'Path::Class::Dir' ok 22 - Should fail on invalid directory name ok 23 - Invalid directory ident should be "target" ok 24 - The invalid directory messsage should be correct ok 25 - Should fail on invalid directory names ok 26 - Invalid directories ident should be "target" ok 27 - The invalid properties messsage should be correct ok 28 - Run list() ok 29 - The list of targets should have been output ok 30 - 'Verbose engine' isa 'App::Sqitch::Command::target' ok 31 - Run verbose list() ok 32 - The list of targets and their URIs should have been output ok 33 - No name arg to add() should yield usage ok 34 - No args should be passed to usage ok 35 - No URI arg to add() should yield usage ok 36 - No args should be passed to usage ok 37 - Should get error for existing target ok 38 - Existing target error ident should be "target" ok 39 - Existing target error message should be correct ok 40 - dir deploy does not exist ok 41 - dir revert does not exist ok 42 - dir verify does not exist ok 43 - Add target "test" ok 44 - dir deploy exists ok 45 - dir revert exists ok 46 - dir verify exists ok 47 - Target "test" URI should have been set ok 48 - Target "test" should have no client set ok 49 - Target "test" should have no registry set ok 50 - Target "test" should have no top_dir set ok 51 - Target "test" should have no plan_file set ok 52 - Target "test" should have no deploy_dir set ok 53 - Target "test" should have no revert_dir set ok 54 - Target "test" should have no verify_dir set ok 55 - Target "test" should have no extension set ok 56 - Target "test" should have no variables set ok 57 - 'Target with registry' isa 'App::Sqitch::Command::target' ok 58 - Add target "withreg" ok 59 - Target "withreg" URI should have been set ok 60 - Target "withreg" registry should have been set ok 61 - Target "test" should have no client set ok 62 - Target "test" should have no top_dir set ok 63 - Target "test" should have no plan_file set ok 64 - Target "test" should have no deploy_dir set ok 65 - Target "test" should have no revert_dir set ok 66 - Target "test" should have no verify_dir set ok 67 - Target "test" should have no extension set ok 68 - Target "withreg" should have no variables set ok 69 - 'Target with client' isa 'App::Sqitch::Command::target' ok 70 - Add target "withcli" ok 71 - Target "withcli" URI should have been set ok 72 - Target "withcli" should have client set ok 73 - Target "withcli" should have no registry set ok 74 - Target "withcli" should have no top_dir set ok 75 - Target "withcli" should have no plan_file set ok 76 - Target "withcli" should have no deploy_dir set ok 77 - Target "withcli" should have no revert_dir set ok 78 - Target "withcli" should have no verify_dir set ok 79 - Target "withcli" should have no extension set ok 80 - Target "withcli" should have no variables set ok 81 - 'Target with client and registry' isa 'App::Sqitch::Command::target' ok 82 - Add target "withboth" ok 83 - Target "withboth" URI should have been set ok 84 - Target "withboth" registry should have been set ok 85 - Target "withboth" should have client set ok 86 - Target "withboth" should have no top_dir set ok 87 - Target "withboth" should have no plan_file set ok 88 - Target "withboth" should have no deploy_dir set ok 89 - Target "withboth" should have no revert_dir set ok 90 - Target "withboth" should have no verify_dir set ok 91 - Target "withboth" should have no extension set ok 92 - Target "withboth" should have variables set ok 93 - 'Target with all properties' isa 'App::Sqitch::Command::target' ok 94 - my.plan does not exist ok 95 - dir top/deploy does not exist ok 96 - dir top/revert does not exist ok 97 - dir top/verify does not exist ok 98 - dir r/d does not exist ok 99 - dir r/revert does not exist ok 100 - dir r/verify does not exist ok 101 - Add target "withall" ok 102 - dir top/deploy exists ok 103 - dir top/revert exists ok 104 - dir top/verify exists ok 105 - dir r/d exists ok 106 - dir r/revert exists ok 107 - dir r/verify exists ok 108 - my.plan exists ok 109 - Target "withall" should have uri set ok 110 - Target "withall" should have variables set ok 111 - Target "withall" should have plan_file set ok 112 - Target "withall" should have revert_dir set ok 113 - Target "withall" should have extension set ok 114 - Target "withall" should have reworked_deploy_dir set ok 115 - Target "withall" should have top_dir set ok 116 - Target "withall" should have reworked_dir set ok 117 - Target "withall" should have deploy_dir set ok 118 - Target "withall" should have verify_dir set ok 119 - Target "withall" should have registry set ok 120 - Target "withall" should have client set ok 121 - 'Target with no properties' isa 'App::Sqitch::Command::target' ok 122 - No name arg to alter() should yield usage ok 123 - No args should be passed to usage ok 124 - Should get error for missing target ok 125 - Missing target error ident should be "target" ok 126 - Missing target error message should be correct ok 127 - Should get error for missing target with URI ok 128 - Missing target with URI error ident should be "target" ok 129 - Missing target error message should include URI ok 130 - 'Target with more properties' isa 'App::Sqitch::Command::target' ok 131 - Alter target "withall" ok 132 - Target "withall" should have plan_file set ok 133 - Target "withall" should have merged variables set ok 134 - Target "withall" should have uri set ok 135 - Target "withall" should have reworked_dir set ok 136 - Target "withall" should have verify_dir set ok 137 - Target "withall" should have registry set ok 138 - Target "withall" should have client set ok 139 - Target "withall" should have deploy_dir set ok 140 - Target "withall" should have extension set ok 141 - Target "withall" should have revert_dir set ok 142 - Target "withall" should have top_dir set ok 143 - Target "withall" should have reworked_deploy_dir set ok 144 - 'Target with new top_dir property' isa 'App::Sqitch::Command::target' ok 145 - dir big does not exist ok 146 - dir big/deploy does not exist ok 147 - dir big/revert does not exist ok 148 - dir big/verify does not exist ok 149 - Alter target "withall" ok 150 - dir big exists ok 151 - dir big/deploy exists ok 152 - dir big/revert exists ok 153 - dir big/verify exists ok 154 - The withall top_dir should have been set ok 155 - No name args to rename() should yield usage ok 156 - No args should be passed to usage ok 157 - No second arg to rename() should yield usage ok 158 - No args should be passed to usage ok 159 - Should get error for nonexistent target ok 160 - Nonexistent target error ident should be "target" ok 161 - Nonexistent target error message should be correct ok 162 - Rename ok 163 - Target "àlafois" should now be present ok 164 - Target "àlafois" variables should now be present ok 165 - Target "withboth" should no longer be present ok 166 - Target "withboth" variables should be gone ok 167 - Target "àlafois" should have variables ok 168 - Should get error renaming a target with dependencies ok 169 - Dependency target error ident should be "target" ok 170 - Dependency target error message should be correct ok 171 - Rename "test" ok 172 - Target "funky" should now be present ok 173 - Target "test" should no longer be present ok 174 - Target "funcky" should have no variables ok 175 - No name args to remove() should yield usage ok 176 - No args should be passed to usage ok 177 - Should get error for nonexistent target ok 178 - Nonexistent target error ident should be "target" ok 179 - Nonexistent target error message should be correct ok 180 - Remove ok 181 - Target "àlafois" should now be gone ok 182 - Target "àlafois" variables should be gone, too ok 183 - Should get error removing a target with dependencies ok 184 - Dependency target error ident should be "target" ok 185 - Dependency target error message should be correct ok 186 - Remove "funky" ok 187 - Target "funky" should now be gone ok 188 - Run show() ok 189 - Show with no names should emit the list of targets ok 190 - Show dev ok 191 - The "dev" target should have been shown ok 192 - Show withcli ok 193 - The "with_cli" target should have been shown ok 194 - Show withreg ok 195 - The "withreg" target should have been shown ok 196 - Show withall ok 197 - The "withall" target should have been shown with variables ok 198 - Show three targets ok 199 - All three targets should have been shown ok 200 - 'Simple target' isa 'App::Sqitch::Command::target' ok 201 - Execute undef ok 202 - list() should have been called ok 203 - Execute undef with args ok 204 - list() should have been passed args ok 205 - Execute list ok 206 - list() should have been called ok 207 - Execute list with args ok 208 - list() should have been passed args ok 209 - Execute add ok 210 - add() should have been called ok 211 - Execute add with args ok 212 - add() should have been passed args ok 213 - Execute remove ok 214 - remove() should have been called ok 215 - Execute remove with args ok 216 - remove() should have been passed args ok 217 - Execute rm ok 218 - remove() should have been called ok 219 - Execute rm with args ok 220 - remove() should have been passed args ok 221 - Execute rename ok 222 - rename() should have been called ok 223 - Execute rename with args ok 224 - rename() should have been passed args ok 225 - Execute show ok 226 - show() should have been called ok 227 - Execute show with args ok 228 - show() should have been passed args ok 229 - Should get an exception for a nonexistent action ok 230 - Nonexistent action message should be passed to usage ok 231 - Invalid URI rock should throw an error ok 232 - Invalid URI rock error ident should be "target" ok 233 - Invalid URI rock error message should be correct ok 234 - Invalid URI https://www.google.com/ should throw an error ok 235 - Invalid URI https://www.google.com/ error ident should be "target" ok 236 - Invalid URI https://www.google.com/ error message should be correct ok 237 - Engineless URI should throw an error ok 238 - Engineless URI error ident should be "target" ok 239 - Engineless URI error message should be correct ok 240 - Unknown engine URI should throw an error ok 241 - Unknown engine URI error ident should be "target" ok 242 - Unknown engine URI error message should be correct ok 243 - no warnings ok t/upgrade.t ......... 1..25 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 - App::Sqitch::Command::upgrade does ConnectingCommand ok 6 - Options should be correct ok 7 - Should parse options ok 8 - Options should not conflict with core options ok 9 - Execute upgrade ok 10 - Upgrade should not have been called ok 11 - Should get output for up-to-date registry ok 12 - Execute upgrade with target ok 13 - Upgrade should again not have been called ok 14 - Should get output for up-to-date registry with target ok 15 - Execute upgrade with engine ok 16 - Upgrade should again not have been called ok 17 - Should get output for up-to-date registry with target ok 18 - 'upgrade command with target' isa 'App::Sqitch::Command::upgrade' ok 19 - Execute upgrade with target option ok 20 - Upgrade should still not have been called ok 21 - Should get output for up-to-date registry with target option ok 22 - Execute upgrade with out-of-date registry ok 23 - Upgrade should now have been called ok 24 - Should get output for the upgrade ok 25 - 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 - App::Sqitch::Command::verify does ContextCommand ok 5 - App::Sqitch::Command::verify does ConnectingCommand ok 6 - Options should be correct ok 7 - Should parse options ok 8 - Options should not conflict with core options ok 9 - Should have default configuration with no config or opts ok 10 - Should have changes and variables from options ok 11 - Should have no config if no options ok 12 - 'new status with target' isa 'App::Sqitch::Command::verify' ok 13 - Should have target "foo" ok 14 - An object of class 'App::Sqitch::Command::verify' isa 'App::Sqitch::Command::verify' ok 15 - Default target should be undef ok 16 - from_change should be undef ok 17 - to_change should be undef ok 18 - Should collect no variables ok 19 - Should collect core vars ok 20 - Should override core vars with deploy vars ok 21 - Should override deploy vars with verify vars ok 22 - Should override verify vars with engine vars ok 23 - Should override engine vars with target vars ok 24 - Should override target vars with --set variables ok 25 - Execute with nothing. ok 26 - Two undefs should be passed to the engine ok 27 - Should have no warnings ok 28 - Execute from "@alpha" ok 29 - "@alpha" and undef should be passed to the engine ok 30 - Should again have no warnings ok 31 - Execute from "@alpha" to "@beta" ok 32 - "@alpha" and "@beat" should be passed to the engine ok 33 - Should still have no warnings ok 34 - 'Object with from, to, and variables' isa 'App::Sqitch::Command::verify' ok 35 - Execute again ok 36 - "foo" and "bar" should be passed to the engine ok 37 - Vars should have been passed through to the engine ok 38 - Still should have no warnings ok 39 - Execute with command-line args ok 40 - "foo" and "bar" should be passed to the engine ok 41 - Vars should have been passed through to the engine ok 42 - Should have warning about which roles are used ok 43 - Execute with target arg ok 44 - The target should have been passed to the engine ok 45 - "foo" and "bar" should be passed to the engine ok 46 - Vars should have been passed through to the engine ok 47 - Should once again have no warnings ok 48 - 'Object with target' isa 'App::Sqitch::Command::verify' ok 49 - Execute with no args ok 50 - The target option should have been passed to the engine ok 51 - Undefs should be passed to the engine ok 52 - No vars should have been passed through to the engine ok 53 - Should once again have no warnings ok 54 - Execute with two targegs and two changes ok 55 - The target option should have been passed to the engine ok 56 - The two changes should be passed to the engine ok 57 - No vars should have been passed through to the engine ok 58 - Should have warning about too many targets ok 59 - Should get an exception for unknown arg ok 60 - Unknow arg ident should be "verify" ok 61 - Should get an exeption for two unknown arg ok 62 - Should get an exception for unknown args ok 63 - Unknow args ident should be "verify" ok 64 - Should get an exeption for two unknown args 1..64 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 - Key should be "vertica" ok 5 - Name should be "Vertica" ok 6 - client should default to vsql ok 7 - registry default should be "sqitch" ok 8 - DB URI should be "db:vertica:" ok 9 - Destination should fall back on environment variables ok 10 - Registry destination should be the same as destination ok 11 - vsql command should be username and std opts-only ok 12 - An object of class 'App::Sqitch::Engine::vertica' isa 'App::Sqitch::Engine::vertica' ok 13 - Set some variables ok 14 - Variables should be passed to vsql via --set ok 15 - Target name should not read $VSQL_DATABASE ok 16 - Registry target should be the same as destination ok 17 - Should have username when VSQL_DATABASE set ok 18 - Should have password when VSQL_DATABASE set ok 19 - Target name should not read $VSQL_USER ok 20 - Registry target should be the same as destination ok 21 - Should have username when VSQL_USER set ok 22 - Should have password when VSQL_USER set ok 23 - Target name should not read $VSQL_PASSWORD ok 24 - Registry target should be the same as destination ok 25 - Should have username when VSQL_PASSWORD set ok 26 - Should have password when VSQL_PASSWORD set ok 27 - Target name should not fall back on sysuser ok 28 - Registry target should be the same as destination ok 29 - Target name should be the default ok 30 - Registry target should be the same as destination ok 31 - Create another vertica ok 32 - client should be as configured ok 33 - uri should be as configured ok 34 - registry should be as configured ok 35 - vsql command should be configured from URI config ok 36 - App::Sqitch::Engine::vertica->can(...) ok 37 - VSQL_PASSWORD should be "s3cr3t" ok 38 - Call _run ok 39 - Command should be passed to run() ok 40 - VSQL_PASSWORD should be "s3cr3t" ok 41 - Call _spool ok 42 - Command should be passed to spool() ok 43 - VSQL_PASSWORD should be "s3cr3t" ok 44 - Call _capture ok 45 - Command should be passed to capture() ok 46 - Create a vertica with sqitch with no pw ok 47 - VSQL_PASSWORD should not exist ok 48 - Call _run again ok 49 - Command should be passed to run() again ok 50 - VSQL_PASSWORD should not exist ok 51 - Call _spool again ok 52 - Command should be passed to spool() again ok 53 - VSQL_PASSWORD should not exist ok 54 - Call _capture again ok 55 - Command should be passed to capture() again ok 56 - VSQL_PASSWORD should not exist ok 57 - Run foo/bar.sql ok 58 - File should be passed to run() ok 59 - VSQL_PASSWORD should not exist ok 60 - Spool a "file handle" ok 61 - Handle should be passed to spool() ok 62 - VSQL_PASSWORD should not exist ok 63 - Verify foo/bar.sql ok 64 - Verify file should be passed to capture() ok 65 - VSQL_PASSWORD should not exist ok 66 - Verify foo/bar.sql again ok 67 - Verifile file should be passed to run() for high verbosity ok 68 - App::Sqitch::Engine::vertica->can('_ts2char_format') ok 69 - _ts2char_format should work ok 70 - App::Sqitch::Engine::vertica->can('_dt') ok 71 - 'Return value of _dt()' isa 'App::Sqitch::DateTime' ok 72 - DateTime year should be set ok 73 - DateTime month should be set ok 74 - DateTime day should be set ok 75 - DateTime hour should be set ok 76 - DateTime minute should be set ok 77 - DateTime second should be set ok 78 - DateTime TZ should be set ok 79 - App::Sqitch::Engine::vertica->can(...) # Subtest: live database 1..0 # SKIP Unable to live-test Vertica engine: DBD::ODBC 1.59 required to manage Vertica at t/vertica.t line 302. ok 80 # skip Unable to live-test Vertica engine: DBD::ODBC 1.59 required to manage Vertica at t/vertica.t line 302. # 1..80 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 Test Summary Report ------------------- t/base.t (Wstat: 256 Tests: 189 Failed: 1) Failed test: 10 Non-zero exit status: 1 Files=47, Tests=6998, 48 wallclock secs ( 0.59 usr 0.28 sys + 39.82 cusr 5.91 csys = 46.60 CPU) Result: FAIL Failed 1/47 test programs. 1/6998 subtests failed. DWHEELER/App-Sqitch-v1.0.0.tar.gz ./Build test verbose=1 -- NOT OK //hint// to see the cpan-testers results for installing this module, try: reports DWHEELER/App-Sqitch-v1.0.0.tar.gz VmSize: 363300 kB Finished 2019-06-06T02:21:52