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