PATH=/opt/SUNWspro/bin:/usr/local/bin:/opt/csw/bin:/usr/ccs/bin:/usr/bin:/usr/sbin Start 2013-11-21T22:20:54 ActivePerl-1003 CPAN-2.00 Reading '/export/home/fly1003/var/cpan/Metadata' Database was generated on Fri, 22 Nov 2013 04:53:02 GMT Running make for D/DW/DWHEELER/App-Sqitch-0.983.tar.gz Checksum for /net/nas1/cpan/authors/id/D/DW/DWHEELER/App-Sqitch-0.983.tar.gz ok You have Archive::Tar 1.38_01, but 1.50 or later is recommended. Please upgrade. App-Sqitch-0.983/t App-Sqitch-0.983/t/x.t App-Sqitch-0.983/t/pg.t App-Sqitch-0.983 App-Sqitch-0.983/README App-Sqitch-0.983/Changes App-Sqitch-0.983/t/add.t App-Sqitch-0.983/t/log.t App-Sqitch-0.983/t/tag.t App-Sqitch-0.983/LICENSE App-Sqitch-0.983/t/base.t App-Sqitch-0.983/t/die.pl App-Sqitch-0.983/t/help.t App-Sqitch-0.983/t/init.t App-Sqitch-0.983/t/plan.t App-Sqitch-0.983/t/show.t App-Sqitch-0.983/t/sqitch App-Sqitch-0.983/META.yml App-Sqitch-0.983/MANIFEST App-Sqitch-0.983/Build.PL App-Sqitch-0.983/README.md App-Sqitch-0.983/t/blank.t App-Sqitch-0.983/t/echo.pl App-Sqitch-0.983/t/mysql.t App-Sqitch-0.983/t/read.pl App-Sqitch-0.983/META.json App-Sqitch-0.983/bin App-Sqitch-0.983/bin/sqitch App-Sqitch-0.983/t/bundle.t App-Sqitch-0.983/t/change.t App-Sqitch-0.983/t/config.t App-Sqitch-0.983/t/depend.t App-Sqitch-0.983/t/deploy.t App-Sqitch-0.983/t/engine.t App-Sqitch-0.983/t/oracle.t App-Sqitch-0.983/t/pragma.t App-Sqitch-0.983/t/rebase.t App-Sqitch-0.983/t/revert.t App-Sqitch-0.983/t/rework.t App-Sqitch-0.983/t/sqlite.t App-Sqitch-0.983/t/status.t App-Sqitch-0.983/t/verify.t App-Sqitch-0.983/t/command.t App-Sqitch-0.983/t/options.t App-Sqitch-0.983/t/tag_cmd.t App-Sqitch-0.983/t/user.conf App-Sqitch-0.983/t/checkout.t App-Sqitch-0.983/t/datetime.t App-Sqitch-0.983/t/linelist.t App-Sqitch-0.983/t/local.conf App-Sqitch-0.983/t/rework.conf App-Sqitch-0.983/t/sqitch.conf App-Sqitch-0.983/lib App-Sqitch-0.983/lib/sqitch.pod App-Sqitch-0.983/t/changelist.t App-Sqitch-0.983/dist App-Sqitch-0.983/dist/sqitch.spec App-Sqitch-0.983/t/plan_command.t App-Sqitch-0.983/xt/release App-Sqitch-0.983/xt/release/pod.t App-Sqitch-0.983/lib/App App-Sqitch-0.983/lib/App/Sqitch.pm App-Sqitch-0.983/t/add_change.conf App-Sqitch-0.983/t/configuration.t App-Sqitch-0.983/t/sql App-Sqitch-0.983/t/sql/sqitch.plan App-Sqitch-0.983/lib/sqitch-add.pod App-Sqitch-0.983/lib/sqitch-log.pod App-Sqitch-0.983/lib/sqitch-tag.pod App-Sqitch-0.983/t/item_formatter.t App-Sqitch-0.983/t/plans App-Sqitch-0.983/t/plans/multi.plan App-Sqitch-0.983/lib/sqitch-help.pod App-Sqitch-0.983/lib/sqitch-init.pod App-Sqitch-0.983/lib/sqitch-plan.pod App-Sqitch-0.983/lib/sqitch-show.pod App-Sqitch-0.983/lib/sqitchusage.pod App-Sqitch-0.983/lib/App/Sqitch App-Sqitch-0.983/lib/App/Sqitch/X.pm App-Sqitch-0.983/t/lib App-Sqitch-0.983/t/lib/MockOutput.pm App-Sqitch-0.983/t/engine App-Sqitch-0.983/t/engine/sqitch.plan App-Sqitch-0.983/t/plans/pragmas.plan App-Sqitch-0.983/t/plans/widgets.plan App-Sqitch-0.983/lib/sqitch-bundle.pod App-Sqitch-0.983/lib/sqitch-config.pod App-Sqitch-0.983/lib/sqitch-deploy.pod App-Sqitch-0.983/lib/sqitch-rebase.pod App-Sqitch-0.983/lib/sqitch-revert.pod App-Sqitch-0.983/lib/sqitch-rework.pod App-Sqitch-0.983/lib/sqitch-status.pod App-Sqitch-0.983/lib/sqitch-verify.pod App-Sqitch-0.983/lib/sqitchchanges.pod App-Sqitch-0.983/t/plans/dupe-tag.plan App-Sqitch-0.983/lib/sqitchcommands.pod App-Sqitch-0.983/lib/sqitchtutorial.pod App-Sqitch-0.983/lib/App/Sqitch/Plan.pm App-Sqitch-0.983/t/lib/DBIEngineTest.pm App-Sqitch-0.983/t/sql/deploy App-Sqitch-0.983/t/sql/deploy/roles.sql App-Sqitch-0.983/t/sql/deploy/users.sql App-Sqitch-0.983/t/sql/verify App-Sqitch-0.983/t/sql/verify/users.sql App-Sqitch-0.983/lib/sqitch-checkout.pod App-Sqitch-0.983/t/plans/bad-change.plan App-Sqitch-0.983/lib/sqitch-add-usage.pod App-Sqitch-0.983/lib/sqitch-log-usage.pod App-Sqitch-0.983/lib/sqitch-tag-usage.pod App-Sqitch-0.983/lib/App/Sqitch/Config.pm App-Sqitch-0.983/lib/App/Sqitch/Engine.pm App-Sqitch-0.983/t/plans/dupe-change.plan App-Sqitch-0.983/t/sql/deploy/widgets.sql App-Sqitch-0.983/lib/sqitch-help-usage.pod App-Sqitch-0.983/lib/sqitch-init-usage.pod App-Sqitch-0.983/lib/sqitch-plan-usage.pod App-Sqitch-0.983/lib/sqitch-show-usage.pod App-Sqitch-0.983/lib/App/Sqitch/Command.pm App-Sqitch-0.983/t/engine/deploy App-Sqitch-0.983/t/engine/deploy/users.sql App-Sqitch-0.983/t/engine/revert App-Sqitch-0.983/t/engine/revert/users.sql App-Sqitch-0.983/t/plans/changes-only.plan App-Sqitch-0.983/t/plans/dependencies.plan App-Sqitch-0.983/t/plans/project_deps.plan App-Sqitch-0.983/t/plans/reserved-tag.plan App-Sqitch-0.983/xt/release/pod-coverage.t App-Sqitch-0.983/xt/release/pod-spelling.t App-Sqitch-0.983/inc/Module/Build App-Sqitch-0.983/inc/Module/Build/Sqitch.pm App-Sqitch-0.983/lib/App/Sqitch/DateTime.pm App-Sqitch-0.983/lib/App/Sqitch/Plan App-Sqitch-0.983/lib/App/Sqitch/Plan/Tag.pm App-Sqitch-0.983/lib/sqitch-bundle-usage.pod App-Sqitch-0.983/lib/sqitch-config-usage.pod App-Sqitch-0.983/lib/sqitch-deploy-usage.pod App-Sqitch-0.983/lib/sqitch-rebase-usage.pod App-Sqitch-0.983/lib/sqitch-revert-usage.pod App-Sqitch-0.983/lib/sqitch-rework-usage.pod App-Sqitch-0.983/lib/sqitch-status-usage.pod App-Sqitch-0.983/lib/sqitch-verify-usage.pod App-Sqitch-0.983/lib/App/Sqitch/Engine App-Sqitch-0.983/lib/App/Sqitch/Engine/pg.pm App-Sqitch-0.983/lib/App/Sqitch/Plan/Line.pm App-Sqitch-0.983/t/engine/deploy/widgets.sql App-Sqitch-0.983/t/engine/revert/widgets.sql App-Sqitch-0.983/etc/templates/deploy App-Sqitch-0.983/etc/templates/deploy/pg.tmpl App-Sqitch-0.983/etc/templates/revert App-Sqitch-0.983/etc/templates/revert/pg.tmpl App-Sqitch-0.983/etc/templates/verify App-Sqitch-0.983/etc/templates/verify/pg.tmpl App-Sqitch-0.983/lib/sqitchtutorial-mysql.pod App-Sqitch-0.983/lib/App/Sqitch/Engine/pg.sql App-Sqitch-0.983/lib/App/Sqitch/Plan/Blank.pm App-Sqitch-0.983/lib/sqitch-checkout-usage.pod App-Sqitch-0.983/lib/sqitchtutorial-oracle.pod App-Sqitch-0.983/lib/sqitchtutorial-sqlite.pod App-Sqitch-0.983/lib/App/Sqitch/Command App-Sqitch-0.983/lib/App/Sqitch/Command/add.pm App-Sqitch-0.983/lib/App/Sqitch/Command/log.pm App-Sqitch-0.983/lib/App/Sqitch/Command/tag.pm App-Sqitch-0.983/lib/App/Sqitch/Plan/Change.pm App-Sqitch-0.983/lib/App/Sqitch/Plan/Depend.pm App-Sqitch-0.983/lib/App/Sqitch/Plan/Pragma.pm App-Sqitch-0.983/lib/App/Sqitch/Command/help.pm App-Sqitch-0.983/lib/App/Sqitch/Command/init.pm App-Sqitch-0.983/lib/App/Sqitch/Command/plan.pm App-Sqitch-0.983/lib/App/Sqitch/Command/show.pm App-Sqitch-0.983/lib/App/Sqitch/Engine/mysql.pm App-Sqitch-0.983/t/lib/App/Sqitch/Engine App-Sqitch-0.983/t/lib/App/Sqitch/Engine/bad.pm App-Sqitch-0.983/t/plans/deploy-and-revert.plan App-Sqitch-0.983/etc/templates/deploy/mysql.tmpl App-Sqitch-0.983/etc/templates/revert/mysql.tmpl App-Sqitch-0.983/etc/templates/verify/mysql.tmpl App-Sqitch-0.983/lib/App/Sqitch/ItemFormatter.pm App-Sqitch-0.983/lib/App/Sqitch/Engine/mysql.sql App-Sqitch-0.983/lib/App/Sqitch/Engine/oracle.pm App-Sqitch-0.983/lib/App/Sqitch/Engine/sqlite.pm App-Sqitch-0.983/lib/App/Sqitch/Plan/LineList.pm App-Sqitch-0.983/t/lib/App/Sqitch/Command App-Sqitch-0.983/t/lib/App/Sqitch/Command/bad.pm App-Sqitch-0.983/t/lib/App/Sqitch/Engine/good.pm App-Sqitch-0.983/etc/templates/deploy/oracle.tmpl App-Sqitch-0.983/etc/templates/deploy/sqlite.tmpl App-Sqitch-0.983/etc/templates/revert/oracle.tmpl App-Sqitch-0.983/etc/templates/revert/sqlite.tmpl App-Sqitch-0.983/etc/templates/verify/oracle.tmpl App-Sqitch-0.983/etc/templates/verify/sqlite.tmpl App-Sqitch-0.983/lib/App/Sqitch/Command/bundle.pm App-Sqitch-0.983/lib/App/Sqitch/Command/config.pm App-Sqitch-0.983/lib/App/Sqitch/Command/deploy.pm App-Sqitch-0.983/lib/App/Sqitch/Command/rebase.pm App-Sqitch-0.983/lib/App/Sqitch/Command/revert.pm App-Sqitch-0.983/lib/App/Sqitch/Command/rework.pm App-Sqitch-0.983/lib/App/Sqitch/Command/status.pm App-Sqitch-0.983/lib/App/Sqitch/Command/verify.pm App-Sqitch-0.983/lib/App/Sqitch/Engine/oracle.sql App-Sqitch-0.983/lib/App/Sqitch/Engine/sqlite.sql App-Sqitch-0.983/lib/App/Sqitch/Role App-Sqitch-0.983/lib/App/Sqitch/Role/DBIEngine.pm App-Sqitch-0.983/t/lib/App/Sqitch/Command/good.pm App-Sqitch-0.983/lib/App/Sqitch/Plan/ChangeList.pm App-Sqitch-0.983/t/engine/deploy/func App-Sqitch-0.983/t/engine/deploy/func/add_user.sql App-Sqitch-0.983/t/engine/revert/func App-Sqitch-0.983/t/engine/revert/func/add_user.sql App-Sqitch-0.983/t/plans/dupe-change-diff-tag.plan App-Sqitch-0.983/lib/App/Sqitch/Command/checkout.pm App-Sqitch-0.983/lib/App/Sqitch/Role/RevertDeployCommand.pm App-Sqitch-0.983/lib/LocaleData/de/LC_MESSAGES App-Sqitch-0.983/lib/LocaleData/de/LC_MESSAGES/App-Sqitch.mo App-Sqitch-0.983/lib/LocaleData/fr/LC_MESSAGES App-Sqitch-0.983/lib/LocaleData/fr/LC_MESSAGES/App-Sqitch.mo CPAN.pm: Building D/DW/DWHEELER/App-Sqitch-0.983.tar.gz >>> /export/home/fly1003/bin/perl Build.PL Checking prerequisites... requires: ! String::Formatter is not installed ERRORS/WARNINGS FOUND IN PREREQUISITES. You may wish to install the versions of the modules indicated above before proceeding with this installation Created MYMETA.yml and MYMETA.json Creating new 'Build' script for 'App-Sqitch' version '0.983' ---- Unsatisfied dependencies detected during ---- ---- DWHEELER/App-Sqitch-0.983.tar.gz ---- String::Formatter [requires] Running Build test Delayed until after prerequisites Running test for module 'String::Formatter' Running make for R/RJ/RJBS/String-Formatter-0.102084.tar.gz Checksum for /net/nas1/cpan/authors/id/R/RJ/RJBS/String-Formatter-0.102084.tar.gz ok String-Formatter-0.102084 String-Formatter-0.102084/README String-Formatter-0.102084/Changes String-Formatter-0.102084/LICENSE String-Formatter-0.102084/bench.pl String-Formatter-0.102084/dist.ini String-Formatter-0.102084/META.yml String-Formatter-0.102084/MANIFEST String-Formatter-0.102084/t String-Formatter-0.102084/t/basic.t String-Formatter-0.102084/META.json String-Formatter-0.102084/t/braces.t String-Formatter-0.102084/t/method.t String-Formatter-0.102084/t/params.t String-Formatter-0.102084/t/stringf.t String-Formatter-0.102084/Makefile.PL String-Formatter-0.102084/lib/String String-Formatter-0.102084/lib/String/Formatter.pm String-Formatter-0.102084/xt/release String-Formatter-0.102084/xt/release/pod-syntax.t String-Formatter-0.102084/t/000-report-versions-tiny.t String-Formatter-0.102084/lib/String/Formatter String-Formatter-0.102084/lib/String/Formatter/Cookbook.pm String-Formatter-0.102084/xt/release/changes_has_content.t CPAN.pm: Building R/RJ/RJBS/String-Formatter-0.102084.tar.gz >>> /export/home/fly1003/bin/perl Makefile.PL Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for String::Formatter Writing MYMETA.yml and MYMETA.json >>> make cp bench.pl blib/lib/String/bench.pl cp lib/String/Formatter.pm blib/lib/String/Formatter.pm cp lib/String/Formatter/Cookbook.pm blib/lib/String/Formatter/Cookbook.pm Manifying blib/man3/String::Formatter.3 Manifying blib/man3/String::Formatter::Cookbook.3 RJBS/String-Formatter-0.102084.tar.gz make -- OK Running make test >>> make test TEST_VERBOSE=1 PERL_DL_NONLAZY=1 /export/home/fly1003/bin/perl "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t # # # Generated by Dist::Zilla::Plugin::ReportVersions::Tiny v1.10 # perl: 5.010000 (wanted 5.006) on solaris from /export/home/fly1003/bin/perl # # ExtUtils::MakeMaker => 6.82 (want 6.30) # Params::Util => 1.07 (want any version) # Sub::Exporter => 0.987 (want any version) # Test::More => 1.001002 (want 0.96) # strict => 1.04 (want any version) # warnings => 1.06 (want any version) # # Thanks for using my code. I hope it works for you. # If not, please try and include this output in the bug report. # That will help me reproduce the issue and solve your problem. # t/000-report-versions-tiny.t .. ok 1 - we really didn't test anything, just reporting data 1..1 ok t/basic.t ..................... 1..12 ok 1 - formatting with no text after last code ok 2 - format with multiple newlines ok 3 - %% -> % ok 4 - formatting with text after last code ok 5 - formatting with no %codes ok 6 - unknown conversions are fatal ok 7 - truncate at max_chars ok 8 - left-pad to reach min_chars ok 9 - left-pad to reach min_chars (with dot) ok 10 - right-pad to reach min_chars (-10) ok 11 - non-identifier format characters ok 12 - keyed_replace GOOD. fire BAD ok t/braces.t .................... 1..1 ok 1 - we allow braces inside braces ok t/method.t .................... 1..2 ok 1 - method_replace GOOD. fire BAD ok 2 - topicalized method replace ok t/params.t .................... 1..2 ok 1 - named args via conversions ok 2 - positional args via conversions ok t/stringf.t ................... ok 1 - positional args via conversions ok 2 - named args via conversions ok 3 - named args via conversions (named_stringf import) ok 4 - named args via conversions (indexed_stringf import) 1..4 ok All tests successful. Files=6, Tests=22, 2 wallclock secs ( 0.15 usr 0.05 sys + 1.38 cusr 0.17 csys = 1.75 CPU) Result: PASS RJBS/String-Formatter-0.102084.tar.gz make test TEST_VERBOSE=1 -- OK PPD for String-Formatter-0.102084 already made Running Build for D/DW/DWHEELER/App-Sqitch-0.983.tar.gz Prepending /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/arch /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/lib to PERL5LIB for 'get' Has already been unwrapped into directory /export/home/fly1003/var/cpan/build/App-Sqitch-0.983-t4kb05 Prepending /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/arch /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/lib to PERL5LIB for 'make' CPAN.pm: Building D/DW/DWHEELER/App-Sqitch-0.983.tar.gz >>> ./Build Building App-Sqitch DWHEELER/App-Sqitch-0.983.tar.gz ./Build -- OK Prepending /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/arch /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/lib to PERL5LIB for 'test' Running Build test >>> ./Build test verbose=1 /export/home/fly1003/bin/perl -i.bak -pe s{my \$SYSTEM_DIR = undef}{my \$SYSTEM_DIR = q{/export/home/fly1003/ap1003/etc/sqitch}} blib/lib/App/Sqitch/Config.pm t/add.t ............. 1..135 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 - with_deploy should be true by default ok 26 - Should die on deploy_template ok 27 - Should be an "add" exception ok 28 - Should get deploy_template failure note ok 29 - with_revert should be true by default ok 30 - Should die on revert_template ok 31 - Should be an "add" exception ok 32 - Should get revert_template failure note ok 33 - with_verify should be true by default ok 34 - Should die on verify_template ok 35 - Should be an "add" exception ok 36 - Should get verify_template failure note ok 37 - Create add with template_directory ok 38 - Should find pg deploy in templates directory ok 39 - Should find pg revert in templates directory ok 40 - Should find pg verify in templates directory ok 41 - Create add with template_directory and name ok 42 - Should find sqlite deploy in templates directory ok 43 - Should find sqlite revert in templates directory ok 44 - Should find sqlite verify in templates directory ok 45 - _find should work with template_directory ok 46 - Create add with no template directory ok 47 - _find should work with user_dir from Config ok 48 - Should die trying to find template ok 49 - Should be an "add" exception ok 50 - Should get unfound verify template note ok 51 - _find should work with system_dir from Config ok 52 - _slurp() should load a reference to file contents ok 53 - test-add/sqitch_change_test.sql does not exist ok 54 - Create add command ok 55 - Write out a script ok 56 - test-add/sqitch_change_test.sql exists ok 57 - The template should have been evaluated ok 58 - Info should show $out created ok 59 - Create add cmd with requires and conflicts ok 60 - Write out a script with requires and conflicts ok 61 - Info should show $out created ok 62 - The template should have been evaluated with requires and conflicts ok 63 - test-add/sqitch_change_test.sql does not exist ok 64 - Create add command ok 65 - Write out a script ok 66 - test-add/sqitch_change_test.sql exists ok 67 - The template should have been evaluated ok 68 - Info should show $out created ok 69 - Create add cmd with requires and conflicts ok 70 - Write out a script with requires and conflicts ok 71 - Info should show $out created ok 72 - The template should have been evaluated with requires and conflicts ok 73 - Create add command ok 74 - Should get an exception on TT syntax error ok 75 - TT exception ident should be "add" ok 76 - TT exception message should include the original error message ok 77 - Create another add with template_directory ok 78 - Should not have "widgets_table" in plan ok 79 - dir test-add/deploy does not exist ok 80 - dir test-add/revert does not exist ok 81 - dir test-add/verify does not exist ok 82 - Add change "widgets_table" ok 83 - 'Added change' isa 'App::Sqitch::Plan::Change' ok 84 - Change name should be set ok 85 - It should have no requires ok 86 - It should have no conflicts ok 87 - It should have prompted for a note ok 88 - test-add/deploy/widgets_table.sql exists ok 89 - test-add/revert/widgets_table.sql exists ok 90 - test-add/verify/widgets_table.sql exists ok 91 - Deploy script should look right ok 92 - Revert script should look right ok 93 - Verify script should look right ok 94 - Info should have reported file creation ok 95 - 'Added change in reloaded plan' isa 'App::Sqitch::Plan::Change' ok 96 - Create another add with template_directory and no verify script ok 97 - test-add/deploy/foo_table.sql exists ok 98 - test-add/revert/foo_table.sql does not exist ok 99 - test-add/ferify/foo_table.sql does not exist ok 100 - Should not have "foo_table" in plan ok 101 - Add change "foo_table" ok 102 - test-add/deploy/foo_table.sql exists ok 103 - test-add/revert/foo_table.sql exists ok 104 - test-add/ferify/foo_table.sql does not exist ok 105 - '"foo_table" change' isa 'App::Sqitch::Plan::Change' ok 106 - It should have prompted for a note ok 107 - Change name should be set to "foo_table" ok 108 - It should have requires ok 109 - It should have conflicts ok 110 - It should have a comment ok 111 - Info should report skipping file and include dependencies ok 112 - Create another add with open_editor ok 113 - Should not have "open_editor" in plan ok 114 - Add change "open_editor" ok 115 - 'Added change' isa 'App::Sqitch::Plan::Change' ok 116 - Change name should be set ok 117 - It should have prompted to edit sql files ok 118 - test-add/deploy/open_editor.sql exists ok 119 - test-add/revert/open_editor.sql exists ok 120 - test-add/verify/open_editor.sql exists ok 121 - Deploy script should look right ok 122 - Revert script should look right ok 123 - Verify script should look right ok 124 - Info should have reported file creation ok 125 - App::Sqitch::Command::add->can(...) ok 126 - Create a App::Sqitch::Command::add object again ok 127 - Base _parse_opts should return an empty hash ok 128 - _parse_opts() hould use options spec ok 129 - _parse_opts() should parse options spec ok 130 - Args array should be cleared of options ok 131 - _parse_opts() should parse --set options ok 132 - Args array should be cleared of options ok 133 - _parse_opts() should parse --set options with repeting key ok 134 - Args array should be cleared of options ok 135 - no warnings ok t/base.t ............ 1..168 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 - Engine "sqlite" should be valid ok 30 - Engine "mysql" should be valid ok 31 - Engine "oracle" should be valid ok 32 - Should get error for user name containing "<" ok 33 - Invalid user name error ident should be "user" ok 34 - Invalid user name error message should be correct ok 35 - Should get error for user name starting with "[" ok 36 - Second Invalid user name error ident should be "user" ok 37 - Second Invalid user name error message should be correct ok 38 - Should get error for user email containing ">" ok 39 - Invalid user email error ident should be "user" ok 40 - Invalid user email error message should be correct ok 41 - Should get 0 from go() ok 42 - 'Command' isa 'App::Sqitch::Command::help' ok 43 - Extra args should be passed to execute ok 44 - An object of class 'App::Sqitch' isa 'App::Sqitch' ok 45 - Engine should be set by option ok 46 - ddl should be set by config ok 47 - Get the Sqitch config ok 48 - Should have local config overriding user ok 49 - Should fall back on user config ok 50 - Should have read user name from configuration ok 51 - Should have read user email from configuration ok 52 - Go should return 2 on Sqitch exception ok 53 - The error should have been vented ok 54 - The stack trace should have been sent to trace ok 55 - Go should return exitval on another exception ok 56 - Both the message and the trace should have been vented ok 57 - Nothing should have been traced ok 58 - Go should return 2 on a third Sqitch exception ok 59 - Should have one thing vented ok 60 - And it should include our message ok 61 - editor should use use parameter ok 62 - editor should use $EDITOR ok 63 - editor should prefer $SQITCH_EDITOR ok 64 - editor fall back on vi when not Windows ok 65 - editor fall back on notepad on Windows ok 66 - trace should work ok 67 - Should get no trace output for verbosity 2 ok 68 - trace_literal should work ok 69 - Should get no trace_literal output for verbosity 2 ok 70 - debug should work ok 71 - Should get no debug output for verbosity 1 ok 72 - debug_literal should work ok 73 - Should get no debug_literal output for verbosity 1 ok 74 - info should work ok 75 - Should get no info output for verbosity 0 ok 76 - info_literal should work ok 77 - Should get no info_literal output for verbosity 0 ok 78 - comment should work ok 79 - comment should work with verbosity 0 ok 80 - comment_literal should work ok 81 - comment_literal should work with verbosity 0 ok 82 - emit should work ok 83 - emit should work even with verbosity 0 ok 84 - emit_literal should work ok 85 - emit_literal should work even with verbosity 0 ok 86 - warn should work ok 87 - warn_literal should work ok 88 - vent should work ok 89 - vent_literal should work ok 90 - App::Sqitch->can('run') ok 91 - Should get success back from run echo ok 92 - The echo script should have run ok 93 - Nothing should have gone to STDERR ok 94 - run die should, well, die ok 95 - The die script should have its STDOUT ummolested ok 96 - The die script should have its STDERR unmolested ok 97 - App::Sqitch->can('shell') ok 98 - Should get success back from shell echo ok 99 - The echo script should have shell ok 100 - Nothing should have gone to STDERR ok 101 - shell die should, well, die ok 102 - The die script should have its STDOUT ummolested ok 103 - The die script should have its STDERR unmolested ok 104 - quote_shell should work ok 105 - App::Sqitch->can('capture') ok 106 - The echo script output should have been returned ok 107 - Should get an error if the command errors out ok 108 - The die script STDERR should have passed through ok 109 - App::Sqitch->can('probe') ok 110 - Should have just chomped first line of output ok 111 - App::Sqitch->can('spool') ok 112 - Spool to read.pl ok 113 - Data should have been sent to STDOUT by read.pl ok 114 - Spool to read.pl ok 115 - All data should have been sent to STDOUT by read.pl ok 116 - Should get error when die.pl dies ok 117 - Error ident should be "io" ok 118 - The error message should be one of the I/O messages ok 119 - The die script STDERR should have passed through ok 120 - Should get an error for a bad command ok 121 - Error ident should be "io" ok 122 - Error message should be about inability to exec ok 123 - Should get error for no prompt message ok 124 - No prompt ident should be "DEV" ok 125 - No prompt error message should be correct ok 126 - Prompt should return input ok 127 - Prompt should prompt ok 128 - Prompt with default should return input ok 129 - Prompt should prompt with default ok 130 - Prompt with undef default should return input ok 131 - Prompt should prompt with bracket for undef default ok 132 - Prompt should return default for undef input ok 133 - Prompt should show default when undef input ok 134 - Prompt should return input for empty input ok 135 - Prompt should show default when empty input ok 136 - Should get error when uattended and no default ok 137 - Unattended error ident should be "io" ok 138 - Unattended error message should be correct ok 139 - Prompt should return input ok 140 - Prompt should show default as selected when unattended ok 141 - Should get error for no ask_y_n message ok 142 - No ask_y_n ident should be "DEV" ok 143 - No ask_y_n error message should be correct ok 144 - Should get error for invalid ask_y_n default ok 145 - Invalid ask_y_n default ident should be "DEV" ok 146 - Invalid ask_y_n default error message should be correct ok 147 - ask_y_n should return true for "y" input ok 148 - ask_y_n() should prompt ok 149 - ask_y_n should return false for "no" input ok 150 - ask_y_n() should prompt for no ok 151 - ask_y_n should return false for "Nein" ok 152 - ask_y_n() should prompt for no ok 153 - ask_y_n should return true for "Yep" ok 154 - ask_y_n() should prompt for yes ok 155 - ask_y_n should return true default "y" ok 156 - ask_y_n() should prompt and show default "y" ok 157 - ask_y_n should return false default "n" ok 158 - ask_y_n() should prompt and show default "n" ok 159 - Should get error for bad answers ok 160 - Bad answers ident should be "IO" ok 161 - Bad answers message should be correct ok 162 - _readline should work ok 163 - _readline should return undef when unattended ok 164 - Localied string should be valid UTF-8 ok 165 - Localied string should be decoded ok 166 - Localied string should be valid UTF-8 ok 167 - Localied string should be decoded ok 168 - 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..298 ok 1 - require App::Sqitch::Plan::ChangeList; ok 2 - Count should be six ok 3 - Changes should be in order ok 4 - Items should be the same as changes ok 5 - Tags should return the one tag ok 6 - Should have foo at 0 ok 7 - Should have bar at 1 ok 8 - Should have yo1 at 2 ok 9 - Should have baz at 4 ok 10 - Should have yo2 at 5 ok 11 - Should not find "non" ok 12 - Should not find "@non" ok 13 - Should find foo at 0 ok 14 - Should find foo by ID at 0 ok 15 - Should find foo by old ID at 0 ok 16 - Should find bar at 1 ok 17 - Should find bar^ at 0 ok 18 - Should find bar~ at 2 ok 19 - Should find bar~~ at 3 ok 20 - Should not find bar~~~ ok 21 - Should find bar~2 at 3 ok 22 - Should find bar~3 at 4 ok 23 - Should find bar by ID at 1 ok 24 - Should find bar by old ID at 1 ok 25 - Should find @alpha at 2 ok 26 - Should find @alpha^ at 1 ok 27 - Should find @alpha^^ at 1 ok 28 - Should not find @alpha^^^ ok 29 - Should find @alpha by ID at 2 ok 30 - Should find @alpha by old ID at 2 ok 31 - Should find baz at 3 ok 32 - Should find baz by ID at 3 ok 33 - Should find baz by old ID at 3 ok 34 - Should not find baz^^^ ok 35 - Should not find baz^3 at 0 ok 36 - Should not find baz^4 ok 37 - Should find baz by ID^ at 2 ok 38 - Should find baz by old ID^ at 2 ok 39 - Should find @FIRST at 1 ok 40 - Should have no offset for @FIRST ok 41 - Should find undef for @FIRST^ ok 42 - Offset should not be set ok 43 - Should find @FIRST~ at 2 ok 44 - Should have offset 1 for @FIRST~ ok 45 - Should find @FIRST~~ at 3 ok 46 - Should have offset 2 for @FIRST~ ok 47 - Should not find @FIRST~~~ ok 48 - Offset should not be set ok 49 - Should find @FIRST~2 at 3 ok 50 - Should have offset 2 for @FIRST~2 ok 51 - Should find @FIRST~3 at 4 ok 52 - Should have offset 3 for @FIRST~3 ok 53 - Should find @FIRST at 1 ok 54 - Should have no offset for @FIRST ok 55 - Should find undef for @FIRST^ ok 56 - Offset should not be set ok 57 - Should find @FIRST~ at 2 ok 58 - Should have offset 1 for @FIRST~ ok 59 - Should find @FIRST~~ at 3 ok 60 - Should have offset 2 for @FIRST~ ok 61 - Should not find @FIRST~~~ ok 62 - Offset should not be set ok 63 - Should find @FIRST~2 at 3 ok 64 - Should have offset 2 for @FIRST~2 ok 65 - Should find @FIRST~3 at 4 ok 66 - Should have offset 3 for @FIRST~3 ok 67 - Should get bar for @FIRST ok 68 - Should have no offset for @FIRST ok 69 - Should get nothing for @FIRST^ ok 70 - Offset should not be set ok 71 - Should get yo1 for @FIRST~ ok 72 - Should have offset 1 for @FIRST~ ok 73 - Should find bar for @FIRST ok 74 - Should have no offset for @FIRST ok 75 - Should find nothing for @FIRST^ ok 76 - Offset should not be set ok 77 - Should find yo1 for @FIRST~ ok 78 - Should have offset 1 for @FIRST~ ok 79 - Should find @LAST at 2 ok 80 - Should have offset 0 for @LAST ok 81 - Should find @LAST^ at 1 ok 82 - Should have offset 1 for @LAST^ ok 83 - Should find @LAST^^ at 1 ok 84 - Should have offset 2 for @LAST^^ ok 85 - Should not find @LAST^^^ ok 86 - Offset should not be set ok 87 - Should find @LAST at 2 ok 88 - Should have offset 0 for @LAST ok 89 - Should find @LAST^ at 1 ok 90 - Should have offset 1 for @LAST^ ok 91 - Should find @LAST^^ at 1 ok 92 - Should have offset 2 for @LAST^^ ok 93 - Should not find @LAST^^^ ok 94 - Offset should not be set ok 95 - Should get yo1 for @LAST ok 96 - Should have offset 0 for @LAST ok 97 - should get bar for @LAST^ ok 98 - Should have offset 1 for @LAST^ ok 99 - should get nothing for @LAST~ ok 100 - Offset should not be set ok 101 - Should find yo1 for @LAST ok 102 - Should have offset 0 for @LAST ok 103 - should find bar for @LAST^ ok 104 - Should have offset 1 for @LAST^ ok 105 - should find nothing for @LAST~ ok 106 - Offset should not be set ok 107 - Should get multiple indexes error looking for index of "yo" ok 108 - Multiple indexes error ident should be "plan" ok 109 - Multiple indexes message should be correct ok 110 - Should unknown tag error for invalid tag ok 111 - Unknown tag error ident should be "plan" ok 112 - Unknown taf message should be correct ok 113 - Should get 2 for yo@alpha ok 114 - Should get 1 for yo@alpha^ ok 115 - Should get 4 for yo@HEAD ok 116 - Should get 3 for yo@HEAD^ ok 117 - Should get undef for yo@HEAD~ ok 118 - Should get undef for yo@HEAD~~ ok 119 - Should get 0 for foo@alpha ok 120 - Should get 0 for foo@HEAD ok 121 - Should get 0 for foo@ROOT ok 122 - Should get undef for baz@alpha ok 123 - Should get 3 for baz@HEAD ok 124 - Should get 4 for @HEAD ok 125 - Should get 0 for @ROOT ok 126 - Should get 3 for @HEAD^ ok 127 - Should get undef for @HEAD~ ok 128 - Should get 1 for @ROOT~ ok 129 - Should get undef for @ROOT^ ok 130 - Should get foo for "foo" ok 131 - Should get bar for "foo~" ok 132 - Should get foo by ID ok 133 - Should get foo by old ID ok 134 - Should get bar for "bar" ok 135 - Should get foo for "bar^" ok 136 - Should get yo1 for "bar~" ok 137 - Should get baz for "bar~~" ok 138 - Should get yo2 for "bar~3" ok 139 - Should get bar by ID ok 140 - Should get bar by old ID ok 141 - Should get "yo" by the @alpha tag ID ok 142 - Should get "yo" by the @alpha tag old ID ok 143 - Should get baz for "baz" ok 144 - Should get baz by ID ok 145 - Should get baz by old ID ok 146 - Should get baz for "@HEAD^" ok 147 - Should get yo1 for "@HEAD^^" ok 148 - Should get bar for "@HEAD^3" ok 149 - Should get foo for "@ROOT" ok 150 - Should get yo1 for yo@alpha ok 151 - Should get yo2 for yo@HEAD ok 152 - Should get foo for foo@alpha ok 153 - Should get foo for foo@HEAD ok 154 - Should get undef for baz@alpha ok 155 - Should get baz for baz@HEAD ok 156 - Should get yo2 for "yo@HEAD" ok 157 - Should get foo for "foo@ROOT" ok 158 - Should find yo1 with "yo" ok 159 - Should find yo1 with "yo@alpha" ok 160 - Should find yo2 with yo@HEAD ok 161 - Should find foo for "foo" ok 162 - Should find foo for "foo@alpha" ok 163 - Should find foo for "foo@HEAD" ok 164 - Should find bar with "yo^" ok 165 - Should find foo with "yo^^" ok 166 - Should find foo with "yo^2" ok 167 - Should find baz with "yo~" ok 168 - Should find yo2 with "yo~~" ok 169 - Should find yo2 with "yo~2" ok 170 - Should find bar with "yo@alpha^" ok 171 - Should find baz with "yo@alpha^" ok 172 - Should find baz with yo@HEAD^ ok 173 - Should find baz with @HEAD^ ok 174 - Should find bar with @ROOT~^ ok 175 - Should get multiple indexes error looking for index of "yo" ok 176 - Multiple indexes error ident should be "plan" ok 177 - Multiple indexes message should be correct ok 178 - Should unknown tag error for invalid tag ok 179 - Unknown tag error ident should be "plan" ok 180 - Unknown taf message should be correct ok 181 - Push hi ok 182 - Count should now be six ok 183 - Changes should be in order with $hi at the end ok 184 - Should find "hi" at index 5 ok 185 - Should find "hi" by ID at index 5 ok 186 - Should find "hi" by old ID at index 5 ok 187 - Index of @ROOT should still be 0 ok 188 - Index of @HEAD should now be 5 ok 189 - First index of "non" should be undef ok 190 - First index of "foo" should be 0 ok 191 - First index of "foo~" should be 1 ok 192 - First index of "foo~~" should be 2 ok 193 - First index of "foo~3" should be 3 ok 194 - Should not find first index of "foo~~~" ok 195 - First index of "foo" since @ROOT should be undef ok 196 - First index of "bar" should be 1 ok 197 - First index of "yo" should be 2 ok 198 - First index of "yo" since @ROOT should be 2 ok 199 - First index of "baz" should be 3 ok 200 - First index of "baz^" should be 2 ok 201 - First index of "baz^^" should be 1 ok 202 - First index of "baz^3" should be 0 ok 203 - Should not find first index of "baz^^^" ok 204 - First index of "yo" since "@alpha" should be 4 ok 205 - First index of "yo" since "baz" should be 4 ok 206 - First index of "yo^" since "baz" should be 4 ok 207 - First index of "yo~" since "baz" should be 5 ok 208 - Should get an exception for an unknown change passed to first_index_of() ok 209 - Unknown change error ident should be "plan" ok 210 - Unknown change message should be correct ok 211 - Push so and fu ok 212 - Count should now be eight ok 213 - Index of @ROOT should remain 0 ok 214 - Index of @HEAD should now be 7 ok 215 - Changes should be in order with $so and $fu at the end ok 216 - Index beta ok 217 - Should find @beta at index 4 ok 218 - Should find yo2 via @beta ok 219 - Should find yo2 via @beta ID ok 220 - Should find yo2 via @beta old ID ok 221 - Tags should return both tags ok 222 - Should get 2 for last tagged index ok 223 - Should find "yo" as last tagged ok 224 - Should get 8 for count ok 225 - Should find fu as last change ok 226 - Should find last tagged index at 0 ok 227 - Should find last tagged at 0 ok 228 - Should get count 1 ok 229 - Should find last change at 0 ok 230 - Should find last tagged index at 1 ok 231 - Should find last tagged at 1 ok 232 - Should get count 2 ok 233 - Should find last change at 1 ok 234 - Should find last tagged index at 3 ok 235 - Should find last tagged at 3 ok 236 - Should get count 4 ok 237 - Should find last change at 3 ok 238 - Should find last tagged index at 4 ok 239 - Should find last tagged at 4 ok 240 - Should get count 5 ok 241 - Should find last change at 4 ok 242 - Should not find tag index in 0 changes ok 243 - Should not find tag in 0 changes ok 244 - Should find no change in empty plan ok 245 - Should not find tag index in 2 changes ok 246 - Should not find tag in 2 changes ok 247 - Should not find tag index in 4 changes ok 248 - Should not find tag in 4 changes ok 249 - An object of class 'App::Sqitch::Plan::ChangeList' isa 'App::Sqitch::Plan::ChangeList' ok 250 - Should not find index of "foo" in empty list ok 251 - Should not find first index of "foo" in empty list ok 252 - Should get undef for "foo" in empty list ok 253 - Should find undef for "foo" in empty list ok 254 - Should not find index of "bar" in empty list ok 255 - Should not find first index of "bar" in empty list ok 256 - Should get undef for "bar" in empty list ok 257 - Should find undef for "bar" in empty list ok 258 - Should not find index of "HEAD" in empty list ok 259 - Should not find first index of "HEAD" in empty list ok 260 - Should get undef for "HEAD" in empty list ok 261 - Should find undef for "HEAD" in empty list ok 262 - Should not find index of "@HEAD" in empty list ok 263 - Should not find first index of "@HEAD" in empty list ok 264 - Should get undef for "@HEAD" in empty list ok 265 - Should find undef for "@HEAD" in empty list ok 266 - Should not find index of "ROOT" in empty list ok 267 - Should not find first index of "ROOT" in empty list ok 268 - Should get undef for "ROOT" in empty list ok 269 - Should find undef for "ROOT" in empty list ok 270 - Should not find index of "@ROOT" in empty list ok 271 - Should not find first index of "@ROOT" in empty list ok 272 - Should get undef for "@ROOT" in empty list ok 273 - Should find undef for "@ROOT" in empty list ok 274 - Should not find index of "alpha" in empty list ok 275 - Should not find first index of "alpha" in empty list ok 276 - Should get undef for "alpha" in empty list ok 277 - Should find undef for "alpha" in empty list ok 278 - Should not find index of "@alpha" in empty list ok 279 - Should not find first index of "@alpha" in empty list ok 280 - Should get undef for "@alpha" in empty list ok 281 - Should find undef for "@alpha" in empty list ok 282 - Should not find index of "FIRST" in empty list ok 283 - Should not find first index of "FIRST" in empty list ok 284 - Should get undef for "FIRST" in empty list ok 285 - Should find undef for "FIRST" in empty list ok 286 - Should not find index of "@FIRST" in empty list ok 287 - Should not find first index of "@FIRST" in empty list ok 288 - Should get undef for "@FIRST" in empty list ok 289 - Should find undef for "@FIRST" in empty list ok 290 - Should not find index of "LAST" in empty list ok 291 - Should not find first index of "LAST" in empty list ok 292 - Should get undef for "LAST" in empty list ok 293 - Should find undef for "LAST" in empty list ok 294 - Should not find index of "@LAST" in empty list ok 295 - Should not find first index of "@LAST" in empty list ok 296 - Should get undef for "@LAST" in empty list ok 297 - Should find undef for "@LAST" in empty list ok 298 - no warnings ok t/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 emitted info identifying the last common change ok 39 - "users" ID and 1 should be passed to the engine revert ok 40 - Should have had the current changes for revision ok 41 - undef, "tag", and 1 should be passed to the engine deploy ok 42 - Should have had the other branch changes (decoded) for deploy ok 43 - Engine should verify ok 44 - The engine should be set to log_only ok 45 - Variables should have been passed to the engine twice ok 46 - The revert vars should have been passed first ok 47 - The deploy vars should have been next ok 48 - 'Object with to and variables' isa 'App::Sqitch::Command::checkout' ok 49 - Checkout master again ok 50 - The engine should not be set to log_only ok 51 - The engine should not be set with_verfy ok 52 - undef, "tag", and 1 should be passed to the engine deploy again ok 53 - Should have had the other branch changes (decoded) for deploy again ok 54 - Variables should again have been passed to the engine twice ok 55 - The revert vars should again have been passed first ok 56 - The deploy vars should again have been next ok 57 - Should rethrow confirm exception ok 58 - Should rethrow fatal exception ok 59 - Should rethrow unknown exception 1..59 ok t/command.t ......... 1..103 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 an "add" command ok 34 - 'It' isa 'App::Sqitch::Command::add' 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 - Call _pod2usage on base object ok 63 - Default params should be passed to Pod::Usage ok 64 - Call _pod2usage on "whu" command object ok 65 - Default params should be passed to Pod::Usage ok 66 - 'Config command object' isa 'App::Sqitch::Command::config' ok 67 - Call _pod2usage on "config" command object ok 68 - Should find sqitch-config docs to pass to Pod::Usage ok 69 - 'Good command object' isa 'App::Sqitch::Command::good' ok 70 - Call _pod2usage on "good" command object ok 71 - Should find App::Sqitch::Command::good docs to pass to Pod::Usage ok 72 - App::Sqitch::Command::good->can('usage') ok 73 - Should find App::Sqitch::Command::good docs to pass to Pod::Usage ok 74 - App::Sqitch::Command->can('verbosity') ok 75 - Verbosity should be from sqitch ok 76 - Verbosity should change with sqitch ok 77 - trace should work ok 78 - Should get no trace output for verbosity 2 ok 79 - trace_literal should work ok 80 - Should get no trace_literal output for verbosity 2 ok 81 - debug should work ok 82 - Should get no debug output for verbosity 1 ok 83 - debug_literal should work ok 84 - Should get no debug_literal output for verbosity 1 ok 85 - info should work ok 86 - Should get no info output for verbosity 0 ok 87 - info_literal should work ok 88 - Should get no info_literal output for verbosity 0 ok 89 - comment should work ok 90 - comment should work with verbosity 0 ok 91 - comment_literal should work ok 92 - comment_literal should work with verbosity 0 ok 93 - emit should work ok 94 - emit should work even with verbosity 0 ok 95 - emit_literal should work ok 96 - emit_literal should work even with verbosity 0 ok 97 - warn should work ok 98 - warn_literal should work ok 99 - threw Regexp ((?-xism:EXITED: 2)) ok 100 - usage should work ok 101 - threw Regexp ((?-xism:EXITED: 2)) ok 102 - usage should prefer sqitch-$command-usage ok 103 - 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 "Thursday, November 21, 2013 10:22:13 PM America/Vancouver" ok 5 - Format "full" should be valid ok 6 - Date format "long" should yield "November 21, 2013 10:22:13 PM PST" ok 7 - Format "long" should be valid ok 8 - Date format "medium" should yield "Nov 21, 2013 10:22:13 PM" ok 9 - Format "medium" should be valid ok 10 - Date format "short" should yield "11/21/13 10:22 PM" ok 11 - Format "short" should be valid ok 12 - Date format "raw" should yield "2013-11-22T06:22:13Z" ok 13 - Format "raw" should be valid ok 14 - Date format "" should yield "2013-11-22T06:22:13Z" ok 15 - Date format "iso" should yield "2013-11-21 22:22:13 -0800" ok 16 - Format "iso" should be valid ok 17 - Date format "iso8601" should yield "2013-11-21 22:22:13 -0800" ok 18 - Format "iso8601" should be valid ok 19 - Date format "rfc" should yield "Thu, 21 Nov 2013 22:22:13 -0800" ok 20 - Format "rfc" should be valid ok 21 - Date format "rfc2822" should yield "Thu, 21 Nov 2013 22:22:13 -0800" ok 22 - Format "rfc2822" should be valid ok 23 - Date format "cldr:HH'h' mm'm'" should yield "22h 22m" ok 24 - Format "cldr:HH'h' mm'm'" should be valid ok 25 - Date format "strftime:%a at %H:%M:%S" should yield "Thu at 22:22:13" ok 26 - Format "strftime:%a at %H:%M:%S" should be valid ok 27 - Should get error for invalid date format ok 28 - Invalid date format error ident should be "datetime" ok 29 - Invalid date format error message should be correct ok 30 - Should get error for invalid as_string format param ok 31 - Invalid date format error ident should be "datetime" ok 32 - Invalid date format error message should be correct ok 33 - no warnings ok t/depend.t .......... 1..326 ok 1 - require App::Sqitch::Plan::Depend; ok 2 - Load a sqitch sqitch object ok 3 - App::Sqitch::Plan::Depend->can(...) ok 4 - Construct "foo" ok 5 - Constructed should stringify as "foo" ok 6 - Constructed should have key name "foo" ok 7 - Constructed should plan stringify as "foo" ok 8 - Parse "foo" ok 9 - Parsed should plan stringify as "foo" ok 10 - "foo" should be required ok 11 - "foo" should not be conflicting ok 12 - "foo" type should be "require" ok 13 - Should not have got project from "foo" ok 14 - Should have project "depend" for "foo" ok 15 - "foo" should not be external ok 16 - "foo" should be internal ok 17 - Should not have got ID from "foo" ok 18 - Construct "bar" ok 19 - Constructed should stringify as "bar" ok 20 - Constructed should have key name "bar" ok 21 - Constructed should plan stringify as "bar" ok 22 - Parse "bar" ok 23 - Parsed should plan stringify as "bar" ok 24 - "bar" should be required ok 25 - "bar" should not be conflicting ok 26 - "bar" type should be "require" ok 27 - Should not have got project from "bar" ok 28 - Should have project "depend" for "bar" ok 29 - "bar" should not be external ok 30 - "bar" should be internal ok 31 - Should not have got ID from "bar" ok 32 - Construct "@bar" ok 33 - Constructed should stringify as "@bar" ok 34 - Constructed should have key name "@bar" ok 35 - Constructed should plan stringify as "@bar" ok 36 - Parse "@bar" ok 37 - Parsed should plan stringify as "@bar" ok 38 - "@bar" should be required ok 39 - "@bar" should not be conflicting ok 40 - "@bar" type should be "require" ok 41 - Should not have got project from "@bar" ok 42 - Should have project "depend" for "@bar" ok 43 - "@bar" should not be external ok 44 - "@bar" should be internal ok 45 - Should not have got ID from "@bar" ok 46 - Construct "!foo" ok 47 - Constructed should stringify as "foo" ok 48 - Constructed should have key name "foo" ok 49 - Constructed should plan stringify as "!foo" ok 50 - Parse "!foo" ok 51 - Parsed should plan stringify as "!foo" ok 52 - "!foo" should be conflicting ok 53 - "!foo" should not be required ok 54 - "!foo" type should be "conflict" ok 55 - Should not have got project from "!foo" ok 56 - Should have project "depend" for "!foo" ok 57 - "!foo" should not be external ok 58 - "!foo" should be internal ok 59 - Should not have got ID from "!foo" ok 60 - Construct "!@bar" ok 61 - Constructed should stringify as "@bar" ok 62 - Constructed should have key name "@bar" ok 63 - Constructed should plan stringify as "!@bar" ok 64 - Parse "!@bar" ok 65 - Parsed should plan stringify as "!@bar" ok 66 - "!@bar" should be conflicting ok 67 - "!@bar" should not be required ok 68 - "!@bar" type should be "conflict" ok 69 - Should not have got project from "!@bar" ok 70 - Should have project "depend" for "!@bar" ok 71 - "!@bar" should not be external ok 72 - "!@bar" should be internal ok 73 - Should not have got ID from "!@bar" ok 74 - Construct "foo@bar" ok 75 - Constructed should stringify as "foo@bar" ok 76 - Constructed should have key name "foo@bar" ok 77 - Constructed should plan stringify as "foo@bar" ok 78 - Parse "foo@bar" ok 79 - Parsed should plan stringify as "foo@bar" ok 80 - "foo@bar" should be required ok 81 - "foo@bar" should not be conflicting ok 82 - "foo@bar" type should be "require" ok 83 - Should not have got project from "foo@bar" ok 84 - Should have project "depend" for "foo@bar" ok 85 - "foo@bar" should not be external ok 86 - "foo@bar" should be internal ok 87 - Should not have got ID from "foo@bar" ok 88 - Construct "!foo@bar" ok 89 - Constructed should stringify as "foo@bar" ok 90 - Constructed should have key name "foo@bar" ok 91 - Constructed should plan stringify as "!foo@bar" ok 92 - Parse "!foo@bar" ok 93 - Parsed should plan stringify as "!foo@bar" ok 94 - "!foo@bar" should be conflicting ok 95 - "!foo@bar" should not be required ok 96 - "!foo@bar" type should be "conflict" ok 97 - Should not have got project from "!foo@bar" ok 98 - Should have project "depend" for "!foo@bar" ok 99 - "!foo@bar" should not be external ok 100 - "!foo@bar" should be internal ok 101 - Should not have got ID from "!foo@bar" ok 102 - Construct "proj:foo" ok 103 - Constructed should stringify as "proj:foo" ok 104 - Constructed should have key name "foo" ok 105 - Constructed should plan stringify as "proj:foo" ok 106 - Parse "proj:foo" ok 107 - Parsed should plan stringify as "proj:foo" ok 108 - "proj:foo" should be required ok 109 - "proj:foo" should not be conflicting ok 110 - "proj:foo" type should be "require" ok 111 - Should have got project from "proj:foo" ok 112 - Should have project "proj" for "proj:foo" ok 113 - "proj:foo" should be external ok 114 - "proj:foo" should not be internal ok 115 - Should not have got ID from "proj:foo" ok 116 - Construct "!proj:foo" ok 117 - Constructed should stringify as "proj:foo" ok 118 - Constructed should have key name "foo" ok 119 - Constructed should plan stringify as "!proj:foo" ok 120 - Parse "!proj:foo" ok 121 - Parsed should plan stringify as "!proj:foo" ok 122 - "!proj:foo" should be conflicting ok 123 - "!proj:foo" should not be required ok 124 - "!proj:foo" type should be "conflict" ok 125 - Should have got project from "!proj:foo" ok 126 - Should have project "proj" for "!proj:foo" ok 127 - "!proj:foo" should be external ok 128 - "!proj:foo" should not be internal ok 129 - Should not have got ID from "!proj:foo" ok 130 - Construct "proj:@foo" ok 131 - Constructed should stringify as "proj:@foo" ok 132 - Constructed should have key name "@foo" ok 133 - Constructed should plan stringify as "proj:@foo" ok 134 - Parse "proj:@foo" ok 135 - Parsed should plan stringify as "proj:@foo" ok 136 - "proj:@foo" should be required ok 137 - "proj:@foo" should not be conflicting ok 138 - "proj:@foo" type should be "require" ok 139 - Should have got project from "proj:@foo" ok 140 - Should have project "proj" for "proj:@foo" ok 141 - "proj:@foo" should be external ok 142 - "proj:@foo" should not be internal ok 143 - Should not have got ID from "proj:@foo" ok 144 - Construct "!proj:@foo" ok 145 - Constructed should stringify as "proj:@foo" ok 146 - Constructed should have key name "@foo" ok 147 - Constructed should plan stringify as "!proj:@foo" ok 148 - Parse "!proj:@foo" ok 149 - Parsed should plan stringify as "!proj:@foo" ok 150 - "!proj:@foo" should be conflicting ok 151 - "!proj:@foo" should not be required ok 152 - "!proj:@foo" type should be "conflict" ok 153 - Should have got project from "!proj:@foo" ok 154 - Should have project "proj" for "!proj:@foo" ok 155 - "!proj:@foo" should be external ok 156 - "!proj:@foo" should not be internal ok 157 - Should not have got ID from "!proj:@foo" ok 158 - Construct "proj:foo@bar" ok 159 - Constructed should stringify as "proj:foo@bar" ok 160 - Constructed should have key name "foo@bar" ok 161 - Constructed should plan stringify as "proj:foo@bar" ok 162 - Parse "proj:foo@bar" ok 163 - Parsed should plan stringify as "proj:foo@bar" ok 164 - "proj:foo@bar" should be required ok 165 - "proj:foo@bar" should not be conflicting ok 166 - "proj:foo@bar" type should be "require" ok 167 - Should have got project from "proj:foo@bar" ok 168 - Should have project "proj" for "proj:foo@bar" ok 169 - "proj:foo@bar" should be external ok 170 - "proj:foo@bar" should not be internal ok 171 - Should not have got ID from "proj:foo@bar" ok 172 - Construct "!proj:foo@bar" ok 173 - Constructed should stringify as "proj:foo@bar" ok 174 - Constructed should have key name "foo@bar" ok 175 - Constructed should plan stringify as "!proj:foo@bar" ok 176 - Parse "!proj:foo@bar" ok 177 - Parsed should plan stringify as "!proj:foo@bar" ok 178 - "!proj:foo@bar" should be conflicting ok 179 - "!proj:foo@bar" should not be required ok 180 - "!proj:foo@bar" type should be "conflict" ok 181 - Should have got project from "!proj:foo@bar" ok 182 - Should have project "proj" for "!proj:foo@bar" ok 183 - "!proj:foo@bar" should be external ok 184 - "!proj:foo@bar" should not be internal ok 185 - Should not have got ID from "!proj:foo@bar" ok 186 - Construct "9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 187 - Constructed should stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 188 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 189 - Constructed should plan stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 190 - Parse "9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 191 - Parsed should plan stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 192 - "9ed961ad7902a67fe0804c8e49e8993719fd5065" should be required ok 193 - "9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be conflicting ok 194 - "9ed961ad7902a67fe0804c8e49e8993719fd5065" type should be "require" ok 195 - Should not have got project from "9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 196 - Should have undef project for "9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 197 - "9ed961ad7902a67fe0804c8e49e8993719fd5065" should be external ok 198 - "9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be internal ok 199 - Should have got ID from "9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 200 - Construct "!9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 201 - Constructed should stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 202 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 203 - Constructed should plan stringify as "!9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 204 - Parse "!9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 205 - Parsed should plan stringify as "!9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 206 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065" should be conflicting ok 207 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be required ok 208 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065" type should be "conflict" ok 209 - Should not have got project from "!9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 210 - Should have undef project for "!9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 211 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065" should be external ok 212 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be internal ok 213 - Should have got ID from "!9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 214 - Construct "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 215 - Constructed should stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 216 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 217 - Constructed should plan stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 218 - Parse "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 219 - Parsed should plan stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 220 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should be required ok 221 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be conflicting ok 222 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" type should be "require" ok 223 - Should have got project from "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 224 - Should have project "foo" for "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 225 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should be external ok 226 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be internal ok 227 - Should have got ID from "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 228 - Construct "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 229 - Constructed should stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 230 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 231 - Constructed should plan stringify as "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 232 - Parse "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 233 - Parsed should plan stringify as "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 234 - "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should be conflicting ok 235 - "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be required ok 236 - "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" type should be "conflict" ok 237 - Should have got project from "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 238 - Should have project "foo" for "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 239 - "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should be external ok 240 - "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" should not be internal ok 241 - Should have got ID from "!foo:9ed961ad7902a67fe0804c8e49e8993719fd5065" ok 242 - Construct "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 243 - Constructed should stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 244 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 245 - Constructed should plan stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 246 - Parse "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 247 - Parsed should plan stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 248 - "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should be required ok 249 - "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should not be conflicting ok 250 - "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" type should be "require" ok 251 - Should not have got project from "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 252 - Should have project "depend" for "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 253 - "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should not be external ok 254 - "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should be internal ok 255 - Should not have got ID from "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 256 - Construct "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 257 - Constructed should stringify as "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 258 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 259 - Constructed should plan stringify as "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 260 - Parse "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 261 - Parsed should plan stringify as "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 262 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should be conflicting ok 263 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should not be required ok 264 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" type should be "conflict" ok 265 - Should not have got project from "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 266 - Should have project "depend" for "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 267 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should not be external ok 268 - "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should be internal ok 269 - Should not have got ID from "!9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 270 - Construct "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 271 - Constructed should stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 272 - Constructed should have key name "9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 273 - Constructed should plan stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 274 - Parse "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 275 - Parsed should plan stringify as "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 276 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should be required ok 277 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should not be conflicting ok 278 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" type should be "require" ok 279 - Should have got project from "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 280 - Should have project "foo" for "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 281 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should be external ok 282 - "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" should not be internal ok 283 - Should not have got ID from "foo:9ed961ad7902a67fe0804c8e49e8993719fd5065@what" ok 284 - Should fail to parse "foo bar" ok 285 - Should fail to parse "foo+@bar" ok 286 - Should fail to parse "foo:+bar" ok 287 - Should fail to parse "foo@bar+" ok 288 - Should fail to parse "proj:foo@bar+" ok 289 - Should get exception for no change or tag ok 290 - No change or tag error ident should be "DEV" ok 291 - No change or tag error message should be correct ok 292 - Should get an error for ID + change ok 293 - ID + change error ident ident should be "DEV" ok 294 - ID + change error message should be correct ok 295 - Should get an error for ID + tag ok 296 - ID + tag error ident ident should be "DEV" ok 297 - ID + tag error message should be correct ok 298 - Should get an error for ID + change and tag ok 299 - ID + change and tag error ident ident should be "DEV" ok 300 - ID + change and tag error message should be correct ok 301 - Create "roles" dependency ok 302 - Should find the "roles" ID in the plan ok 303 - The "roles" change should not be external ok 304 - The "roles" change should be internal ok 305 - Create "elsewhere:roles" dependency ok 306 - The "elsewhere:roles" id should be undef ok 307 - The "elsewhere:roles" change should be external ok 308 - The "elsewhere:roles" change should not be internal ok 309 - Create depend using external ID ok 310 - The external ID should be set ok 311 - The external ID should register as external ok 312 - The external ID should not register as internal ok 313 - Create depend using "roles" ID ok 314 - The "roles" ID should be set ok 315 - The "roles" ID should not register as external ok 316 - The "roles" ID should register as internal ok 317 - Create "nonexistent" dependency ok 318 - Should get error for nonexistent change ok 319 - Nonexistent change error ident should be "plan" ok 320 - Nonexistent change error message should be correct ok 321 - Create depend without ID ok 322 - Resolved ID should be undef ok 323 - Set resolved ID ok 324 - Resolved ID should be set ok 325 - Unset resolved ID ok 326 - Resolved ID should be undef again ok t/deploy.t .......... ok 1 - require App::Sqitch::Command::deploy; ok 2 - The class (or class-like) 'App::Sqitch::Command::deploy' isa 'App::Sqitch::Command' ok 3 - App::Sqitch::Command::deploy->can(...) ok 4 - Options should be correct ok 5 - Should have default configuration with no config or opts ok 6 - Should have mode, verify, set, and log-only options ok 7 - Should have mode and verify configuration ok 8 - Should have merged variables ok 9 - An object of class 'App::Sqitch::Command::deploy' isa 'App::Sqitch::Command::deploy' ok 10 - Should pick up variables from configuration ok 11 - An object of class 'App::Sqitch::Command::deploy' isa 'App::Sqitch::Command::deploy' ok 12 - to_target should be undef ok 13 - mode should be "all" ok 14 - Execute to "@alpha" ok 15 - "@alpha" "all", and 0 should be passed to the engine ok 16 - The engine should not be set log_only ok 17 - Execute ok 18 - undef, "all", and 0 should be passed to the engine ok 19 - 'Object with to, mode, log_only, and variables' isa 'App::Sqitch::Command::deploy' ok 20 - Execute again ok 21 - Engine should verify ok 22 - The engine should be set log_only ok 23 - "foo", "tag", and 1 should be passed to the engine ok 24 - Vars should have been passed through to the engine ok 25 - "all" should be a valid mode ok 26 - "tag" should be a valid mode ok 27 - "change" should be a valid mode ok 28 - "foo" should not be a valid mode ok 29 - "bad" should not be a valid mode ok 30 - "gar" should not be a valid mode 1..30 ok t/engine.t .......... 1..573 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 - Should die on invalid engine ok 12 - Should get load error message ok 13 - Should have relevant previoius exception ok 14 - No engine should die ok 15 - It should be the expected message ok 16 - Should die on bad engine module ok 17 - Should get another load error message ok 18 - Should have relevant previoius exception from the bad module ok 19 - App::Sqitch::Engine->can('name') ok 20 - Create a App::Sqitch::Engine object ok 21 - Base class name should be "" ok 22 - Base object name should be "" ok 23 - Create a subclass name object ok 24 - Subclass oject name should be "whu" ok 25 - Subclass class name should be "whu" ok 26 - App::Sqitch::Engine->can('config_vars') ok 27 - Should have no config vars in engine base class ok 28 - App::Sqitch::Engine->can(...) ok 29 - Should have no variables ok 30 - Add a variable ok 31 - Should have the variable ok 32 - Set more variables ok 33 - Should have all of the variables ok 34 - Should again have no variables ok 35 - Create a App::Sqitch::Engine object again ok 36 - Should get an unimplemented exception from initialized() ok 37 - Should get an unimplemented exception from initialize() ok 38 - Should get an unimplemented exception from register_project() ok 39 - Should get an unimplemented exception from run_file() ok 40 - Should get an unimplemented exception from run_handle() ok 41 - Should get an unimplemented exception from log_deploy_change() ok 42 - Should get an unimplemented exception from log_fail_change() ok 43 - Should get an unimplemented exception from log_revert_change() ok 44 - Should get an unimplemented exception from log_new_tags() ok 45 - Should get an unimplemented exception from is_deployed_tag() ok 46 - Should get an unimplemented exception from is_deployed_change() ok 47 - Should get an unimplemented exception from are_deployed_changes() ok 48 - Should get an unimplemented exception from change_id_for() ok 49 - Should get an unimplemented exception from changes_requiring_change() ok 50 - Should get an unimplemented exception from earliest_change_id() ok 51 - Should get an unimplemented exception from latest_change_id() ok 52 - Should get an unimplemented exception from deployed_changes() ok 53 - Should get an unimplemented exception from deployed_changes_since() ok 54 - Should get an unimplemented exception from load_change() ok 55 - Should get an unimplemented exception from name_for_change_id() ok 56 - Should get an unimplemented exception from current_state() ok 57 - Should get an unimplemented exception from current_changes() ok 58 - Should get an unimplemented exception from current_tags() ok 59 - Should get an unimplemented exception from search_events() ok 60 - Should get an unimplemented exception from registered_projects() ok 61 - Should get an unimplemented exception from change_offset_from_id() ok 62 - App::Sqitch::Engine->can('_load_changes') ok 63 - Should load changes with no change ok 64 - Should load changes with undef ok 65 - Should load changes with no tags ok 66 - Should load changes with multiple hashes with no tags ok 67 - Should load changes with tags ok 68 - Should load changes with tags with leading @ ok 69 - Should load changes with multiple hashes with tags ok 70 - Should load changes with reworked change ok 71 - Should load changes with reworked change & multiple tags ok 72 - Should load changes with doubly reworked change ok 73 - Create a subclass name object again ok 74 - App::Sqitch::Engine::whu->can(...) ok 75 - Deploy a change ok 76 - deploy_change should have called the proper methods ok 77 - Output should reflect the deployment ok 78 - Output should reflect success ok 79 - Only log a change ok 80 - log-only deploy_change should not have called run_file ok 81 - Output should reflect the logging ok 82 - Output should reflect deploy success ok 83 - Enable verification ok 84 - Deploy a change to be verified ok 85 - deploy_change with verification should run the verify file ok 86 - Output should reflect the logging ok 87 - Output should reflect deploy success ok 88 - Enable log_only ok 89 - Verify and log a change ok 90 - deploy_change with verification and log-only should not run deploy ok 91 - Output should reflect the logging ok 92 - Output should reflect deploy success ok 93 - Deploy change with error ok 94 - Error should be from run_file ok 95 - Should have logged change failure ok 96 - Output should reflect the deployment, even with failure ok 97 - Output should reflect deploy failure ok 98 - Deploy change with failed verification ok 99 - Error should be from deploy_change ok 100 - Should have logged verify failure ok 101 - Output should reflect the deployment, even with verify failure ok 102 - Output should reflect deploy failure ok 103 - Verify error should have been vented ok 104 - Enable log_only ok 105 - Deploy change with log-only and failed verification ok 106 - Error should be from deploy_change ok 107 - Should have logged verify failure but not reverted ok 108 - Output should reflect the deployment, even with verify failure ok 109 - Output should reflect deploy failure ok 110 - Verify error should have been vented ok 111 - Deploy a change with no verify script ok 112 - deploy_change with no verify file should not run it ok 113 - Output should reflect the logging ok 114 - Output should reflect deploy success ok 115 - A warning about no verify file should have been emitted ok 116 - Revert a change ok 117 - revert_change should have called the proper methods ok 118 - Output should reflect reversion ok 119 - Output should acknowldge revert success ok 120 - Enable log_only ok 121 - Revert a change with log-only ok 122 - Log-only revert_change should not have run the change script ok 123 - Output should reflect logged reversion ok 124 - Output should acknowldge revert success ok 125 - Engine with sqitch with plan file ok 126 - Should get proper change from latest_change() ok 127 - Latest change ID should have been called with no arg ok 128 - Should again get proper change from latest_change() ok 129 - Latest change ID should have been called with offset arg ok 130 - Should get proper change from earliest_change() ok 131 - Earliest change ID should have been called with no arg ok 132 - Should again get proper change from earliest_change() ok 133 - Earliest change ID should have been called with offset arg ok 134 - App::Sqitch::Engine->can('_sync_plan') ok 135 - Plan should start at position -1 ok 136 - start_at should be undef ok 137 - Sync the plan ok 138 - Plan should still be at position -1 ok 139 - start_at should still be undef ok 140 - Should not have updated IDs ok 141 - Sync the plan again ok 142 - Plan should again be at position -1 ok 143 - start_at should again be undef ok 144 - Still should not have updated IDs ok 145 - Sync the plan to a tag ok 146 - Plan should now be at position 1 ok 147 - start_at should now be widgets@beta ok 148 - Should have updated IDs ok 149 - App::Sqitch::Engine->can('deploy') ok 150 - Deploy to @alpha ok 151 - Plan should be at position 1 ok 152 - Should have deployed through @alpha ok 153 - Should have called _deploy_all() ok 154 - Should have seen the output of the deploy to @alpha ok 155 - Both change names should be output ok 156 - Enable log_only ok 157 - Log-only deploy in $mode mode to @alpha ok 158 - Plan should be at position 1 ok 159 - Should have deployed through @alpha without running files ok 160 - Should have called _deploy_by_change() ok 161 - Should have seen the output of the deploy to @alpha ok 162 - Both change names should be output ok 163 - Enable log_only ok 164 - Log-only deploy in $mode mode to @alpha ok 165 - Plan should be at position 1 ok 166 - Should have deployed through @alpha without running files ok 167 - Should have called _deploy_by_tag() ok 168 - Should have seen the output of the deploy to @alpha ok 169 - Both change names should be output ok 170 - Enable log_only ok 171 - Log-only deploy in $mode mode to @alpha ok 172 - Plan should be at position 1 ok 173 - Should have deployed through @alpha without running files ok 174 - Should have called _deploy_all() ok 175 - Should have seen the output of the deploy to @alpha ok 176 - Both change names should be output ok 177 - Deploy to @alpha with tag mode ok 178 - Plan should again be at position 1 ok 179 - Should have deployed through @alpha without initialization ok 180 - Should have called _deploy_by_tag() ok 181 - Should have seen the output of the deploy to @alpha ok 182 - Both change names should be output ok 183 - Should get an error for an unknown target ok 184 - The exception should report the unknown target ok 185 - Only latest_item() should have been called ok 186 - Deploy to alpha thrice ok 187 - Only latest_item() should have been called ok 188 - Should notify user that already at @alpha ok 189 - Should fail targeting older change ok 190 - Should be a "deploy" error ok 191 - It should suggest using "revert" ok 192 - Should have called latest_item() and latest_tag() ok 193 - Deploy everything by change ok 194 - Plan should be at position 3 ok 195 - Should have deployed everything ok 196 - Should have called _deploy_by_change() ok 197 - Should have emitted deploy announcement and successes ok 198 - Should have seen the output of the deploy to the end ok 199 - Should catch exception for attempt to deploy to up-to-date DB ok 200 - Should be a "deploy" error ok 201 - And the message should reflect up-to-dateness ok 202 - It should have just fetched the latest change ID ok 203 - Should fail on invalid mode ok 204 - Should be a "deploy" error ok 205 - And the message should reflect the unknown mode ok 206 - It should have check for initialization ok 207 - Should have announced destination ok 208 - Engine with sqitch with no file ok 209 - Should die with no changes ok 210 - Should have the localized message ok 211 - It should have checked for the latest item ok 212 - Deploy changewise to index 1 ok 213 - Should changewise deploy to index 2 ok 214 - Should have seen output of each change ok 215 - Output should reflect deploy successes ok 216 - Deploy changewise to index 2 ok 217 - Should changewise deploy to from index 2 to index 3 ok 218 - Should have seen output of changes 2-3 ok 219 - Output should reflect deploy successes ok 220 - Die in _deploy_by_change ok 221 - It should have died in run_file ok 222 - It should have logged the failure ok 223 - Should have seen output for first change ok 224 - Output should reflect deploy failure ok 225 - Deploy tagwise to index 1 ok 226 - Should tagwise deploy to index 1 ok 227 - Should have seen output of each change ok 228 - Output should reflect deploy successes ok 229 - Deploy tagwise to index 3 ok 230 - Should tagwise deploy from index 2 to index 3 ok 231 - Should have seen output of changes 3-3 ok 232 - Output should reflect deploy successes ok 233 - Die in log_deploy_change ok 234 - Should get final deploy failure message ok 235 - It should have reverted back to the last deployed tag ok 236 - Should have seen deploy and revert messages (excluding curry revert) ok 237 - Output should reflect deploy successes and failure ok 238 - The original error should have been vented ok 239 - Enable log_only ok 240 - Die in log_deploy_change log-only ok 241 - Should get final deploy failure message ok 242 - It should have run no deploy or revert scripts ok 243 - Should have seen deploy and revert messages (excluding curry revert) ok 244 - Output should reflect deploy successes and failure ok 245 - The original error should have been vented ok 246 - Die in _deploy_by_tag again ok 247 - Should again get final deploy failure message ok 248 - Should have logged back to the beginning ok 249 - Should have seen deploy and revert messages ok 250 - Output should reflect deploy successes and failure ok 251 - Should have one vented message ok 252 - And it should be the underlying error ok 253 - And it should had notified that all changes were reverted ok 254 - Die in _deploy_by_tag yet again ok 255 - Should die "Deploy failed" again ok 256 - Should have reverted back to last tag ok 257 - Should have user change reversion messages ok 258 - Output should reflect deploy successes and failure ok 259 - Should see underlying error and reversion message ok 260 - Die in _deploy_by_tag again ok 261 - Should once again get final deploy failure message ok 262 - Should have tried to revert one change ok 263 - Should have seen revert message ok 264 - Output should reflect deploy successes and failure ok 265 - Should get reversion failure message ok 266 - Deploy all to index 1 ok 267 - Should tagwise deploy to index 1 ok 268 - Should have seen output of each change ok 269 - Output should reflect deploy successes ok 270 - Deploy tagwise to index 2 ok 271 - Should tagwise deploy to from index 1 to index 2 ok 272 - Should have seen output of changes 3-4 ok 273 - Output should reflect deploy successe ok 274 - Die in _deploy_all ok 275 - Should get final deploy failure message ok 276 - It should have logged up to the failure ok 277 - Should have seen deploy and revert messages excluding revert for failed logging ok 278 - Output should reflect deploy successes and failures ok 279 - The original error should have been vented ok 280 - Enable log_only ok 281 - Die in log-only _deploy_all ok 282 - Should get final deploy failure message ok 283 - It should have run no deploys or reverts ok 284 - Should have seen deploy and revert messages excluding revert for failed logging ok 285 - Output should reflect deploy successes and failures ok 286 - The original error should have been vented ok 287 - Die in _deploy_all again ok 288 - Should again get final deploy failure message ok 289 - Should have reveted all changes and tags ok 290 - Should see all changes revert ok 291 - Output should reflect deploy successes and failures ok 292 - Should notifiy user of error and rollback ok 293 - Die in _deploy_all on the last change ok 294 - Should once again get final deploy failure message ok 295 - Should have deployed to dr_evil and revered down to @alpha ok 296 - Should see changes revert back to @alpha ok 297 - Output should reflect deploy successes and failures ok 298 - Should notifiy user of error and rollback to @alpha ok 299 - Test is_deployed(tag) ok 300 - It should have called is_deployed_tag() ok 301 - Test is_deployed(change) ok 302 - It should have called is_deployed_change() ok 303 - App::Sqitch::Engine::whu->can('deploy_change') ok 304 - Deploy a change ok 305 - It should have been deployed ok 306 - Should have shown change name ok 307 - Output should reflect deploy success ok 308 - Shuld die on deploy failure ok 309 - Should be told the deploy failed ok 310 - It should failed to have been deployed ok 311 - Should have vented the original error ok 312 - Should have shown change name ok 313 - Output should reflect deploy failure ok 314 - App::Sqitch::Engine::whu->can('revert_change') ok 315 - Revert the change ok 316 - It should have been reverted ok 317 - Should have shown reverted change name ok 318 - And the revert failure should be "ok" ok 319 - App::Sqitch::Engine::whu->can('revert') ok 320 - Should get exception for no changes to revert ok 321 - Should be a revert exception ok 322 - Should have notified that there is nothing to revert ok 323 - Exit val should be 1 ok 324 - It should only have called deployed_changes() ok 325 - Nothing should have been output ok 326 - Revert should die on unknown change ok 327 - Should be another "revert" error ok 328 - The message should mention it is an unknown target ok 329 - Should have called change_id_for() with change name ok 330 - Nothing should have been output ok 331 - Revert should die on unknown change ID ok 332 - Should be another "revert" error ok 333 - The message should mention it is an unknown target ok 334 - Shoudl have called change_id_for() with change ID ok 335 - Nothing should have been output ok 336 - Revert should die on undeployed change ok 337 - Should be another "revert" error ok 338 - The message should mention that the target is not deployed ok 339 - change_id_for ok 340 - Nothing should have been output ok 341 - Should get error reverting when no subsequent changes ok 342 - No subsequent change error ident should be "revert" ok 343 - No subsequent change error exitval should be 1 ok 344 - No subsequent change error message should be correct ok 345 - Should have called change_id_for and deployed_changes_since ok 346 - Should get error for known but undeployed change ok 347 - No changes error should be "revert" ok 348 - No changes exitval should be 1 ok 349 - No changes message should be correct ok 350 - Should have called deployed_changes ok 351 - Revert all changes ok 352 - Should have reverted the changes in reverse order ok 353 - Should have prompted to revert all changes ok 354 - It should have said it was reverting all changes and listed them ok 355 - And the revert successes should be emitted ok 356 - Enable log_only ok 357 - Revert all changes log-only ok 358 - Log-only Should have reverted the changes in reverse order ok 359 - Log-only should have prompted to revert all changes ok 360 - It should have said it was reverting all changes and listed them ok 361 - And the revert successes should be emitted ok 362 - Should abort declined revert ok 363 - Declined revert ident should be "revert" ok 364 - Should have exited with value 1 ok 365 - Should have exited with proper message ok 366 - Should have called deployed_changes only ok 367 - Should have prompt to revert all changes ok 368 - It should have emitted nothing else ok 369 - Revert all changes with no prompt ok 370 - Should have reverted the changes in reverse order ok 371 - Should have no prompt ok 372 - It should have said it was reverting all changes and listed them ok 373 - And the revert successes should be emitted ok 374 - Revert to @alpha ok 375 - Should have reverted only changes after @alpha ok 376 - Should have prompt to revert to target ok 377 - Output should show what it reverts to ok 378 - And the revert successes should be emitted ok 379 - Should abort declined revert to @alpha ok 380 - Declined revert ident should be "revert:confirm" ok 381 - Should have exited with value 1 ok 382 - Should have exited with proper message ok 383 - Should have called revert methods ok 384 - Should have prompt to revert to @alpha ok 385 - It should have emitted nothing else ok 386 - Revert to @HEAD^ ok 387 - Should have reverted one changes for @HEAD^ ok 388 - Should have no prompt ok 389 - Output should show what it reverts to ok 390 - And the header and "ok" should be emitted ok 391 - App::Sqitch::Engine->can('change_id_for_depend') ok 392 - Should get error from change_id_for_depend when change not in plan ok 393 - Should get ident "plan" from change_id_for_depend ok 394 - Should have proper message from change_id_for_depend error ok 395 - Should get error from change_id_for_depend when no ID ok 396 - Should get ident "engine" when no ID ok 397 - Should have proper messag from change_id_for_depend error ok 398 - Get a change id ok 399 - Should have passed dependency params to change_id_for() ok 400 - App::Sqitch::Engine->can('find_change') ok 401 - find_change() should work ok 402 - Its parameters should have been passed to change_id_for and change_offset_from_id ok 403 - find_change() should work ok 404 - Project and offset should have been passed off ok 405 - App::Sqitch::Engine->can('verify_change') ok 406 - Verify a change ok 407 - The change file should have been run ok 408 - Should have no info output ok 409 - Verify a change with no verify script. ok 410 - No abstract methods should be called ok 411 - Should have no info output ok 412 - A warning about no verify file should have been emitted ok 413 - App::Sqitch::Engine::whu->can('check_deploy_dependencies') ok 414 - All planned changes should be okay ok 415 - Should have called are_deployed_changes ok 416 - Dependencies should check out even when within those to be deployed ok 417 - Resolved ID should be populated ok 418 - Conflict should throw exception ok 419 - Should be a "deploy" error ok 420 - Should have localized message about the local conflict ok 421 - Conflict should throw exception ok 422 - Should be a "deploy" error ok 423 - Should have localized message about conflicts ok 424 - Should have called change_id_for() twice ok 425 - Conflicting dependencies should have no resolved IDs ok 426 - Conflict should throw another exception ok 427 - Should be a "deploy" error ok 428 - Should have localized message about all three conflicts ok 429 - Should have called change_id_for() twice ok 430 - Conflicting dependencies should have no resolved IDs ok 431 - Missing dependencies should throw exception ok 432 - Should be another "deploy" error ok 433 - Should have localized message missing dependencies ok 434 - Should have called check_requires ok 435 - Missing requirements should not have resolved ok 436 - Missing dependencies should throw exception ok 437 - Should be another "deploy" error ok 438 - Should have localized conflicts and required error messages ok 439 - Should have called check_requires ok 440 - Missing requirements should not have resolved ok 441 - App::Sqitch::Engine::whu->can('check_revert_dependencies') ok 442 - Should get error reverting change another depend on ok 443 - Dependent error ident should be "revert" ok 444 - Dependent error message should be correct ok 445 - It should have check for requiring changes ok 446 - Should get error reverting change others depend on ok 447 - Dependent error ident should be "revert" ok 448 - Dependent error message should be correct ok 449 - It should have check for requiring changes ok 450 - Should get error reverting change others depend on ok 451 - Dependent error ident should be "revert" ok 452 - Dependent error message should be correct ok 453 - It should have checked twice for requiring changes ok 454 - App::Sqitch::Engine::whu->can('_trim_to') ok 455 - _trim_to should complain about a nonexistent change key ok 456 - _trim_to nonexistent key error ident should be "foo" ok 457 - _trim_to nonexistent key error message should be correct ok 458 - _trim_to should complain about an undeployed change key ok 459 - _trim_to undeployed change error ident should be "yep" ok 460 - _trim_to undeployed change error message should be correct ok 461 - _trim_to should complain about an unplanned change key ok 462 - _trim_to unplanned change error ident should be "oop" ok 463 - _trim_to unplanned change error message should be correct ok 464 - _trim_to should find "roles" at index 0 ok 465 - Changes should be untrimmed ok 466 - _trim_to should find "widgets" at index 2 ok 467 - First two changes should be shifted off ok 468 - _trim_to should find "dr_evil" at last index ok 469 - Changes should be untrimmed ok 470 - _trim_to should find "tacos" at index 4 ok 471 - Last two changes should be popped off ok 472 - _trim_to should find "@HEAD" at index 2 ok 473 - First two changes should be shifted off ok 474 - _trim_to should find "@ROOT" at index 2 ok 475 - All but First three changes should be popped off ok 476 - App::Sqitch::Engine::whu->can('_verify_changes') ok 477 - Verify of a single change should return errcount 0 ok 478 - Declared output should list the change ok 479 - Emitted Output should reflect the verification of the change ok 480 - Should have no comments ok 481 - The verify script should have been run ok 482 - Verify of another single change should return errcount 0 ok 483 - Declared output should list the change ok 484 - Emitted Output should reflect the verification of the change ok 485 - Should have no comments ok 486 - A warning about no verify file should have been emitted ok 487 - The verify script should not have been run ok 488 - Verify of two changes should return errcount 0 ok 489 - Declared output should list both changes ok 490 - Emitted Output should reflect the verification of the changes ok 491 - Should have no comments ok 492 - A warning about no verify file should have been emitted ok 493 - Only one verify script should have been run ok 494 - Verify of two changes and show pending ok 495 - Delcared output should list deployed changes ok 496 - Emitted output should include list of pending changes ok 497 - Should have no comments ok 498 - A warning about no verify file should have been emitted ok 499 - Only one verify script should have been run ok 500 - Verify of a change not in the plan should return errcount 1 ok 501 - Declared Output should reflect the verification of the change ok 502 - Emitted Output should reflect the failure of the verify ok 503 - Should have a comment about the change missing from the plan ok 504 - No verify script should have been run ok 505 - Verify of an out-of-order change should return errcount 1 ok 506 - Declared output should reflect the verification of the change ok 507 - Emitted Output should reflect the failure of the verify ok 508 - Should have a comment about the out-of-order change ok 509 - The verify script should have been run ok 510 - Verify of a change with 2 issues should return 2 ok 511 - Declared output should reflect the verification of the change ok 512 - Emitted Output should reflect the failure of the verify ok 513 - Should have comment about the out-of-order change and script failure ok 514 - No abstract methods should have been called ok 515 - Verify of 2 changes with 2 issues each should return 4 ok 516 - Declraed output should reflect the verification of both changes ok 517 - Emitted Output should reflect the failure of both verifies ok 518 - Should have comment about the out-of-order changes and script failures ok 519 - No abstract methods should have been called ok 520 - _verify_changes with two undeployed changes should returne 2 ok 521 - Listed changes should be both deployed and undeployed ok 522 - Emitted Output should reflect 1 pass ok 523 - Should have comments for undeployed changes ok 524 - No abstract methods should have been called ok 525 - App::Sqitch::Engine::whu->can('verify') ok 526 - Should get error for no deployed changes ok 527 - No deployed changes ident should be "verify" ok 528 - No deployed changes exitval should be 1 ok 529 - No deployed changes message should be correct ok 530 - Notification of the verify should be emitted ok 531 - Should get error for no changes ok 532 - No changes ident should be "verify" ok 533 - No changes exitval should be 1 ok 534 - No changes message should be correct ok 535 - Notification of the verify should be emitted ok 536 - Should get error for no planned changes ok 537 - No planned changes ident should be "verify" ok 538 - No planned changes exitval should be 2 ok 539 - No planned changes message should be correct ok 540 - Notification of the verify should be emitted ok 541 - Verify one change ok 542 - Notification of the verify should be emitted ok 543 - The one change name should be declared ok 544 - Success should be emitted ok 545 - Should have no comments ok 546 - Verify two changes ok 547 - Notification of the verify should be emitted ok 548 - The two change names should be declared ok 549 - Both successes should be emitted ok 550 - Should have no comments ok 551 - Should have warning about missing verify script ok 552 - Verify with a reworked change changes ok 553 - Notification of the verify should be emitted ok 554 - The two change names should be emitted ok 555 - Both successes should be emitted ok 556 - Should have no comments ok 557 - Should have no warnings ok 558 - Verify two specific changes ok 559 - Notification of the verify should be emitted ok 560 - The two change names should be emitted ok 561 - Both successes should be emitted ok 562 - Should have no comments ok 563 - Should have warning about missing verify script ok 564 - Should get failure for failing verify scripts ok 565 - Failed verify ident should be "verify" ok 566 - Failed verify exitval should be 2 ok 567 - Faield verify message should be correct ok 568 - Notification of the verify should be emitted ok 569 - Both change names should be declared ok 570 - Output should include the failure report ok 571 - Should have the errors in comments ok 572 - Nothing should have been vented ok 573 - no warnings ok t/help.t ............ 1..11 ok 1 - Load a sqitch sqitch object ok 2 - 'Load help command' isa 'App::Sqitch::Command::help' ok 3 - Execute help ok 4 - Should show sqitch app docs ok 5 - Execute "config" help ok 6 - Should show "config" command docs ok 7 - Should get an exception for "nonexistent" help ok 8 - Exception ident should be "help" ok 9 - Should get failure message for nonexistent command ok 10 - Exception exit val should be 1 ok 11 - no warnings ok t/init.t ............ 1..158 ok 1 - use App::Sqitch::Command::init; ok 2 - 'App::Sqitch::Command::init' isa 'App::Sqitch::Command' ok 3 - 'New init object' isa 'App::Sqitch::Command::init' ok 4 - App::Sqitch::Command::init->can(...) ok 5 - Options should be correct ok 6 - Default config should be empty ok 7 - Should accept a URI in options ok 8 - 'processed uri option' isa 'URI' ok 9 - App::Sqitch::Command::init->can('make_directories') ok 10 - dir init.mkdir does not exist ok 11 - dir init.mkdir/deploy does not exist ok 12 - dir init.mkdir/revert does not exist ok 13 - dir init.mkdir/verify does not exist ok 14 - Make the directories ok 15 - dir init.mkdir exists ok 16 - dir init.mkdir/deploy exists ok 17 - dir init.mkdir/revert exists ok 18 - dir init.mkdir/verify exists ok 19 - Each should have been sent to info ok 20 - Make the directories again ok 21 - Nothing should have been sent to info ok 22 - Make the directories once more ok 23 - revert dir exists again ok 24 - Should have noted creation of revert dir ok 25 - Should fail on permission issue ok 26 - Permission error should have ident "init" ok 27 - The permission error should be formatted properly ok 28 - App::Sqitch::Command::init->can('write_config') ok 29 - Another init object ok 30 - nonexistent.conf does not exist ok 31 - Write the config ok 32 - nonexistent.conf exists ok 33 - The configuration file should have no variables ok 34 - The creation should be sent to info ok 35 - All in core section should be commented-out ok 36 - Another init object ok 37 - Write the config ok 38 - nonexistent.conf exists ok 39 - The configuration should have been written with the one setting ok 40 - The creation should be sent to info ok 41 - Other settings should be commented-out ok 42 - Write the config again ok 43 - The configuration should be unchanged ok 44 - Nothing should have been sent to info ok 45 - Make an init object with user config ok 46 - nonexistent.conf does not exist ok 47 - Write the config with a user conf ok 48 - nonexistent.conf exists ok 49 - The configuration should just have core.top_dir ok 50 - The creation should be sent to info again ok 51 - Other settings should be commented-out ok 52 - Make an init object with system config ok 53 - nonexistent.conf does not exist ok 54 - Write the config with a system conf ok 55 - nonexistent.conf exists ok 56 - The configuration should have local and system config ok 57 - The creation should be sent to info again ok 58 - Other settings should be commented-out ok 59 - Create new init with sqitch non-default attributes ok 60 - Write the config with core attrs ok 61 - The creation should be sent to info once more ok 62 - The configuration should have been written with all the core values ok 63 - Create new init with sqitch with non-default engine attributes ok 64 - Write the config with engine attrs ok 65 - The creation should be sent to info yet again ok 66 - The configuration should have been written with sqlite values ok 67 - sqitch_db should be included in a comment ok 68 - Create new init with sqitch with default engine attributes ok 69 - Write the config with engine attrs ok 70 - The creation should be sent to info again again ok 71 - The configuration should have been written with only the engine var ok 72 - Engine section should be present but commented-out ok 73 - Make an init with sqlite and user config ok 74 - nonexistent.conf does not exist ok 75 - Write the config with sqlite config ok 76 - The creation should be sent to info once more ok 77 - New config should have been written with sqlite values ok 78 - Configured client should be included in a comment ok 79 - Configured sqitch_db should be included in a comment ok 80 - Create new init with sqitch with more non-default engine attributes ok 81 - Write the config with more engine attrs ok 82 - The creation should be sent to info one more time ok 83 - The configuration should have been written with pg values ok 84 - sqitch_schema should be included in a comment ok 85 - password should be included in a comment ok 86 - Create new init with sqitch with default engine attributes ok 87 - Write the config with engine attrs ok 88 - The creation should be sent to info again again again ok 89 - The configuration should have been written with only the engine var ok 90 - Engine section should be present but commented-out ok 91 - Make an init with pg and user config ok 92 - nonexistent.conf does not exist ok 93 - Write the config with pg config ok 94 - The pg config creation should be sent to info ok 95 - The configuration should have been written with pg options ok 96 - Configured sqitch_schema should be in a comment ok 97 - password should be included in a comment ok 98 - Configured username should be in a comment ok 99 - Configured host should be in a comment ok 100 - App::Sqitch::Command::init->can('write_plan') ok 101 - Plan file should not yet exist ok 102 - Write the plan file ok 103 - The plan creation should be sent to info ok 104 - Plan file should now exist ok 105 - The contents should be correct ok 106 - Write the plan file again ok 107 - The file should not be overwritten ok 108 - Create new init with sqitch with project and URI ok 109 - Write the plan file again ok 110 - The plan creation should be sent to info againq ok 111 - Plan file should again exist ok 112 - The plan should include the project and uri pragmas ok 113 - App::Sqitch::Command::init->can('_validate_project') ok 114 - No project should yield usage ok 115 - No args should be passed to usage ok 116 - Should get error for invalid project name "^foo" ok 117 - Bad project "^foo" ident should be "init" ok 118 - Bad project "^foo" error message should be correct ok 119 - Should get error for invalid project name "foo^" ok 120 - Bad project "foo^" ident should be "init" ok 121 - Bad project "foo^" error message should be correct ok 122 - Should get error for invalid project name "foo^6" ok 123 - Bad project "foo^6" ident should be "init" ok 124 - Bad project "foo^6" error message should be correct ok 125 - Should get error for invalid project name "foo^666" ok 126 - Bad project "foo^666" ident should be "init" ok 127 - Bad project "foo^666" error message should be correct ok 128 - Should get error for invalid project name "%hi" ok 129 - Bad project "%hi" ident should be "init" ok 130 - Bad project "%hi" error message should be correct ok 131 - Should get error for invalid project name "hi!" ok 132 - Bad project "hi!" ident should be "init" ok 133 - Bad project "hi!" error message should be correct ok 134 - Should get error for invalid project name "foo@bar" ok 135 - Bad project "foo@bar" ident should be "init" ok 136 - Bad project "foo@bar" error message should be correct ok 137 - Should get error for invalid project name "foo:bar" ok 138 - Bad project "foo:bar" ident should be "init" ok 139 - Bad project "foo:bar" error message should be correct ok 140 - Should get error for invalid project name "+foo" ok 141 - Bad project "+foo" ident should be "init" ok 142 - Bad project "+foo" error message should be correct ok 143 - Should get error for invalid project name "-foo" ok 144 - Bad project "-foo" ident should be "init" ok 145 - Bad project "-foo" error message should be correct ok 146 - Should get error for invalid project name "@foo" ok 147 - Bad project "@foo" ident should be "init" ok 148 - Bad project "@foo" error message should be correct ok 149 - Execute! ok 150 - dir plan.dir exists ok 151 - dir plan.dir/deploy exists ok 152 - dir plan.dir/revert exists ok 153 - dir plan.dir/verify exists ok 154 - nonexistent.conf exists ok 155 - plan.dir/sqitch.plan exists ok 156 - Should have status messages ok 157 - The plan should have the --project name ok 158 - no warnings ok t/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 "2013-11-21 22:22:34 -0800" ok 41 - Format "%{date:rfc}c" should output "Thu, 21 Nov 2013 22:22:34 -0800" ok 42 - Format "%{d:long}c" should output "November 21, 2013 10:22:34 PM PST" ok 43 - Format "%{d:cldr:HH'h' mm'm'}c" should output "22h 22m" ok 44 - Format "%{d:strftime:%a at %H:%M:%S}c" should output "Thu at 22:22:34" 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 "2013-11-20 22:22:34 -0800" ok 51 - Format "%{date:rfc}p" should output "Wed, 20 Nov 2013 22:22:34 -0800" ok 52 - Format "%{d:long}p" should output "November 20, 2013 10:22:34 PM PST" ok 53 - Format "%{d:cldr:HH'h' mm'm'}p" should output "22h 22m" ok 54 - Format "%{d:strftime:%a at %H:%M:%S}p" should output "Wed at 22:22:34" 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 2013-11-22T06:22:34Z[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..233 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 - '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 "log" 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 "log" 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 "log" 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 "%e" should output "deploy" ok 62 - Format "%e" should output "revert" ok 63 - Format "%e" should output "fail" ok 64 - Format "%L" should output "Deploy" ok 65 - Format "%L" should output "Revert" ok 66 - Format "%L" 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 "%{event}_" should output "Event: " ok 71 - Format "%{change}_" should output "Change: " ok 72 - Format "%{committer}_" should output "Committer:" ok 73 - Format "%{planner}_" should output "Planner: " ok 74 - Format "%{by}_" should output "By: " ok 75 - Format "%{date}_" should output "Date: " ok 76 - Format "%{committed}_" should output "Committed:" ok 77 - Format "%{planned}_" should output "Planned: " ok 78 - Format "%{name}_" should output "Name: " ok 79 - Format "%{email}_" should output "Email: " ok 80 - Format "%{requires}_" should output "Requires: " ok 81 - Format "%{conflicts}_" should output "Conflicts:" ok 82 - Format "%H" should output "123456789" ok 83 - Format "%h" should output "123456789" ok 84 - Format "%{5}h" should output "12345" ok 85 - Format "%{7}h" should output "1234567" ok 86 - Format "%n" should output "foo" ok 87 - Format "%n" should output "bar" ok 88 - Format "%o" should output "foo" ok 89 - Format "%o" should output "bar" ok 90 - Format "%c" should output "larry " ok 91 - Format "%{n}c" should output "damian" ok 92 - Format "%{name}c" should output "chip" ok 93 - Format "%{e}c" should output "larry@example.com" ok 94 - Format "%{email}c" should output "damian@example.com" ok 95 - Format "%{date}c" should output "2013-11-21 22:22:40 -0800" ok 96 - Format "%{date:rfc}c" should output "Thu, 21 Nov 2013 22:22:40 -0800" ok 97 - Format "%{d:long}c" should output "November 21, 2013 10:22:40 PM PST" ok 98 - Format "%{d:cldr:HH'h' mm'm'}c" should output "22h 22m" ok 99 - Format "%{d:strftime:%a at %H:%M:%S}c" should output "Thu at 22:22:40" ok 100 - Format "%p" should output "larry " ok 101 - Format "%{n}p" should output "damian" ok 102 - Format "%{name}p" should output "chip" ok 103 - Format "%{e}p" should output "larry@example.com" ok 104 - Format "%{email}p" should output "damian@example.com" ok 105 - Format "%{date}p" should output "2013-11-20 22:22:40 -0800" ok 106 - Format "%{date:rfc}p" should output "Wed, 20 Nov 2013 22:22:40 -0800" ok 107 - Format "%{d:long}p" should output "November 20, 2013 10:22:40 PM PST" ok 108 - Format "%{d:cldr:HH'h' mm'm'}p" should output "22h 22m" ok 109 - Format "%{d:strftime:%a at %H:%M:%S}p" should output "Wed at 22:22:40" ok 110 - Format "%t" should output "" ok 111 - Format "%t" should output " @foo" ok 112 - Format "%t" should output " @foo, @bar" 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 "%r" should output "" ok 123 - Format "%r" should output " foo" ok 124 - Format "%r" 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 "Requires: foo[newline]" ok 130 - Format "%R" should output "Requires: foo, bar[newline]" 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 "%x" should output "" ok 135 - Format "%x" should output " foo" ok 136 - Format "%x" should output " foo, bax" 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 "Conflicts: foo[newline]" ok 142 - Format "%X" should output "Conflicts: foo, bar[newline]" 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 "%{yellow}C" should output "" ok 147 - Format "%{:event}C" should output "" ok 148 - Format "%v" should output "[newline]" ok 149 - Format "%%" should output "%" ok 150 - Format "%s" should output "hi there" ok 151 - Format "%s" should output "hi there" ok 152 - Format "%s" should output "subject line" ok 153 - Format "%{ }s" should output " hi there" ok 154 - Format "%{xx}s" should output "xxhi there" ok 155 - Format "%b" should output "" ok 156 - Format "%b" should output "yo" ok 157 - Format "%b" should output "first graph[newline][newline]second graph[newline][newline]" ok 158 - Format "%{ }b" should output "" ok 159 - Format "%{xxx }b" should output "xxx yo" ok 160 - Format "%{x}b" should output "xfirst graph[newline]x[newline]xsecond graph[newline]x[newline]" ok 161 - Format "%{ }b" should output " yo" ok 162 - Format "%B" should output "hi there" ok 163 - Format "%B" should output "hi there[newline]yo" ok 164 - Format "%B" should output "subject line[newline][newline]first graph[newline][newline]second graph[newline][newline]" ok 165 - Format "%{ }B" should output " hi there" ok 166 - Format "%{xxx }B" should output "xxx hi there[newline]xxx yo" ok 167 - Format "%{x}B" should output "xsubject line[newline]x[newline]xfirst graph[newline]x[newline]xsecond graph[newline]x[newline]" ok 168 - Format "%{ }B" should output " hi there [newline] yo" ok 169 - Format "%{change}a" should output "change lolz[newline]" ok 170 - Format "%{change_id}a" should output "change_id 000011112222333444[newline]" ok 171 - Format "%{event}a" should output "event deploy[newline]" ok 172 - Format "%{tags}a" should output "tags @beta, @gamma[newline]" ok 173 - Format "%{requires}a" should output "requires foo, bar[newline]" ok 174 - Format "%{conflicts}a" should output "" ok 175 - Format "%{committer_name}a" should output "committer_name larry[newline]" ok 176 - Format "%{committed_at}a" should output "committed_at 2013-11-22T06:22:40Z[newline]" ok 177 - Should get exception for format "%_" ok 178 - %_ error ident should be "format" ok 179 - %_ error message should be correct ok 180 - Should get exception for unknown label in format "%_" ok 181 - Invalid %_ label error ident should be "format" ok 182 - Invalid %_ label error message should be correct ok 183 - Instantiate with abbrev => 4 ok 184 - %h should respect abbrev ok 185 - %H should not respect abbrev ok 186 - Instantiate with date_format => "rfc" ok 187 - %{date}c should respect the date_format attribute ok 188 - %{iso}c should override the date_format attribute ok 189 - Should get exception for unknown attribute passed to %a ok 190 - %a error ident should be "format" ok 191 - %a error message should be correct ok 192 - Format "%{yellow}C" should output yellow ok 193 - Format "%{red}C" should output red ok 194 - Format "%{blue}C" should output blue ok 195 - Format "%{cyan}C" should output cyan ok 196 - Format "%{magenta}C" should output magenta ok 197 - Format "%{:event}C" on "deploy" should output green ok 198 - Format "%{:event}C" on "revert" should output blue ok 199 - Format "%{:event}C" on "fail" should output red ok 200 - Instantiate with format "full" again ok 201 - Format "full" should output correctly with color ok 202 - Instantiate with format "long" again ok 203 - Format "long" should output correctly with color ok 204 - Instantiate with format "medium" again ok 205 - Format "medium" should output correctly with color ok 206 - Instantiate with format "short" again ok 207 - Format "short" should output correctly with color ok 208 - Instantiate with format "oneline" again ok 209 - Format "oneline" should output correctly with color ok 210 - Should get an error for an invalid color ok 211 - Invalid color error ident should be "format" ok 212 - Invalid color error message should be correct ok 213 - Should get exception for unititialied db ok 214 - Uninit db error ident should be "log" ok 215 - Uninit db exit val should be 1 ok 216 - Uninit db error message should be correct ok 217 - Should get error for empty event table ok 218 - no events error ident should be "log" ok 219 - no events exit val should be 1 ok 220 - no events error message should be correct ok 221 - Search should have been limited to one row ok 222 - Execute log ok 223 - The proper args should have been passed to search_events ok 224 - The change should have been paged ok 225 - 'log with attributes' isa 'App::Sqitch::Command::log' ok 226 - Execute log with attributes ok 227 - All params should have been passed to search_events ok 228 - Both changes should have been paged ok 229 - 'log with bad format' isa 'App::Sqitch::Command::log' ok 230 - Should get an exception for a bad format code ok 231 - bad format code format error ident should be "format" ok 232 - bad format code format error message should be correct ok 233 - 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 - sqitch_db default should be "sqitch" ok 6 - username default should be undef ok 7 - password default should be undef ok 8 - db_name default should be undef ok 9 - host default should be undef ok 10 - port default should be undef ok 11 - destination default should be undef ok 12 - meta_destination should be the same as sqitch_db ok 13 - mysql command should be std opts-only ok 14 - An object of class 'App::Sqitch::Engine::mysql' isa 'App::Sqitch::Engine::mysql' ok 15 - Set some variables ok 16 - Variables should not be passed to mysql ok 17 - Create another mysql ok 18 - client should be as configured ok 19 - username should be as configured ok 20 - password should be as configured ok 21 - db_name should be as configured ok 22 - destination should default to db_name ok 23 - meta_destination should be as configured ok 24 - host should be as configured ok 25 - port should be as configured ok 26 - sqitch_db should be as configured ok 27 - mysql command should be configured ok 28 - Create a mysql with sqitch with options ok 29 - client should be as optioned ok 30 - username should be as optioned ok 31 - password should still be as configured ok 32 - db_name should be as optioned ok 33 - destination should still default to db_name ok 34 - meta_destination should still be configured ok 35 - host should be as optioned ok 36 - port should be as optioned ok 37 - sqitch_db should still be as configured ok 38 - mysql command should be as optioned ok 39 - App::Sqitch::Engine::mysql->can(...) ok 40 - Call _run ok 41 - Command should be passed to run() ok 42 - Call _spool ok 43 - Command should be passed to spool() ok 44 - Call _capture ok 45 - Command should be passed to capture() ok 46 - Run foo/bar.sql ok 47 - File should be passed to run() ok 48 - Spool a "file handle" ok 49 - Handle should be passed to spool() ok 50 - Verify foo/bar.sql ok 51 - Verify file should be passed to capture() ok 52 - Verify foo/bar.sql again ok 53 - Verifile file should be passed to run() for high verbosity ok 54 - App::Sqitch::Engine::mysql->can('_ts2char_format') ok 55 - _ts2char_format should work ok 56 - App::Sqitch::Engine::mysql->can('_dt') ok 57 - 'Return value of _dt()' isa 'App::Sqitch::DateTime' ok 58 - DateTime year should be set ok 59 - DateTime month should be set ok 60 - DateTime day should be set ok 61 - DateTime hour should be set ok 62 - DateTime minute should be set ok 63 - DateTime second should be set ok 64 - DateTime TZ should be set ok 65 - App::Sqitch::Engine::mysql->can(...) # Subtest: live database 1..0 # SKIP Unable to live-test mysql engine: DBI connect('database=information_schema','root',...) failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) at t/mysql.t line 221. # ok 66 # skip Unable to live-test mysql engine: DBI connect('database=information_schema','root',...) failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) at t/mysql.t line 221. # 1..66 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 - sqitch_schema default should be undefined ok 8 - username default should be undef ok 9 - password default should be undef ok 10 - db_name default should be undef ok 11 - host default should be undef ok 12 - port default should be undef ok 13 - Destination should fall back on environment variables ok 14 - Meta destination should be the same as destination ok 15 - sqlplus command should connect to /nolog ok 16 - _script should work ok 17 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle' ok 18 - _script should assemble connection string ok 19 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle' ok 20 - _script should assemble connection string with host ok 21 - An object of class 'App::Sqitch::Engine::oracle' isa 'App::Sqitch::Engine::oracle' ok 22 - Set some variables ok 23 - _script should assemble connection string with host, port, and vars ok 24 - Destination should read $TWO_TASK ok 25 - Meta destination should be the same as destination ok 26 - Destination should read $ORACLE_SID ok 27 - Meta destination should be the same as destination ok 28 - Destination should fall back on sysuser ok 29 - Meta destination should be the same as destination ok 30 - Destination should read username ok 31 - Meta destination should be the same as destination ok 32 - Destination should prefer $TWO_TASK to username ok 33 - Meta destination should be the same as destination ok 34 - Create another ora ok 35 - client should be as configured ok 36 - username should be as configured ok 37 - password should be as configured ok 38 - db_name should be as configured ok 39 - destination should default to db_name ok 40 - meta_destination should default to db_name ok 41 - host should be as configured ok 42 - port should be as configured ok 43 - sqitch_schema should be as configured ok 44 - sqlplus command should be configured ok 45 - Create a ora with sqitch with options ok 46 - client should be as optioned ok 47 - username should be as optioned ok 48 - password should still be as configured ok 49 - db_name should be as optioned ok 50 - destination should still default to db_name ok 51 - meta_destination should still default to db_name ok 52 - host should be as optioned ok 53 - port should be as optioned ok 54 - sqitch_schema should still be as configured ok 55 - sqlplus command should be as optioned ok 56 - App::Sqitch::Engine::oracle->can(...) ok 57 - Call _run ok 58 - SQLPlus command should be passed to spool() ok 59 - The script should be spooled ok 60 - Call _capture ok 61 - Command and script should be passed to run3() ok 62 - _capture should actually capture ok 63 - _capture should die when sqlplus dies ok 64 - STDERR should be emitted by _capture ok 65 - Run foo/bar.sql ok 66 - File should be passed to run() ok 67 - Run foo/"bar".sql ok 68 - Double quotes in file passed to run() should be escaped ok 69 - Spool a "file handle" ok 70 - sqlplus command should be passed to spool() ok 71 - 'Array ove handles should be passed to spool' isa 'ARRAY' ok 72 - First file handle should be script ok 73 - Second should be the passed handle ok 74 - Verify foo/bar.sql ok 75 - Verify file should be passed to capture() ok 76 - Verify foo/bar.sql again ok 77 - Verifile file should be passed to run() for high verbosity ok 78 - App::Sqitch::Engine::oracle->can('_ts2char') ok 79 - _ts2char should work ok 80 - App::Sqitch::Engine::oracle->can('_dt') ok 81 - 'Return value of _dt()' isa 'App::Sqitch::DateTime' ok 82 - DateTime year should be set ok 83 - DateTime month should be set ok 84 - DateTime day should be set ok 85 - DateTime hour should be set ok 86 - DateTime minute should be set ok 87 - DateTime second should be set ok 88 - DateTime TZ should be set ok 89 - App::Sqitch::Engine::oracle->can(...) # Subtest: live database 1..0 # SKIP Unable to live-test oracle engine: install_driver(Oracle) failed: Can't locate DBD/Oracle.pm in @INC (@INC contains: t/lib /export/home/fly1003/var/cpan/build/App-Sqitch-0.983-t4kb05/blib/lib /export/home/fly1003/var/cpan/build/App-Sqitch-0.983-t4kb05/blib/arch inc /export/home/fly1003/var/megalib /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/arch /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/lib /export/home/fly1003/ap1003/site/lib /export/home/fly1003/ap1003/lib .) at (eval 403) line 3, <$tfh> line 4. # Perhaps the DBD::Oracle perl module hasn't been fully installed, # or perhaps the capitalisation of 'Oracle' isn't right. # Available drivers: AnyData, CSV, Chart, DBM, ExampleP, Excel, File, Gofer, LDAP, Log, MVS_FTPSQL, Mock, Multiplex, ODBC, Ovrimos, PO, PassThrough, PgLite, PgPP, Proxy, SQLAnywhere, SQLRelay, SQLite, SQLite2, Simulated, Sponge, Sprite, TSM, Template, TemplateSS, Wire10, XBase, iPod, mysql, mysqlPP. # at t/oracle.t line 381. # ok 90 # skip Unable to live-test oracle engine: install_driver(Oracle) failed: Can't locate DBD/Oracle.pm in @INC (@INC contains: t/lib /export/home/fly1003/var/cpan/build/App-Sqitch-0.983-t4kb05/blib/lib /export/home/fly1003/var/cpan/build/App-Sqitch-0.983-t4kb05/blib/arch inc /export/home/fly1003/var/megalib /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/arch /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/lib /export/home/fly1003/ap1003/site/lib /export/home/fly1003/ap1003/lib .) at (eval 403) line 3, <$tfh> line 4. # Perhaps the DBD::Oracle perl module hasn't been fully installed, # or perhaps the capitalisation of 'Oracle' isn't right. # Available drivers: AnyData, CSV, Chart, DBM, ExampleP, Excel, File, Gofer, LDAP, Log, MVS_FTPSQL, Mock, Multiplex, ODBC, Ovrimos, PO, PassThrough, PgLite, PgPP, Proxy, SQLAnywhere, SQLRelay, SQLite, SQLite2, Simulated, Sponge, Sprite, TSM, Template, TemplateSS, Wire10, XBase, iPod, mysql, mysqlPP. # at t/oracle.t line 381. # 1..90 ok t/pg.t .............. ok 1 - require App::Sqitch::Engine::pg; ok 2 - config_vars should return three vars ok 3 - An object of class 'App::Sqitch::Engine::pg' isa 'App::Sqitch::Engine::pg' ok 4 - client should default to psql ok 5 - sqitch_schema default should be "sqitch" ok 6 - username default should be undef ok 7 - password default should be undef ok 8 - db_name default should be undef ok 9 - host default should be undef ok 10 - port default should be undef ok 11 - Destination should fall back on environment variables ok 12 - Meta destination should be the same as destination ok 13 - psql command should be std opts-only ok 14 - An object of class 'App::Sqitch::Engine::pg' isa 'App::Sqitch::Engine::pg' ok 15 - Set some variables ok 16 - Variables should be passed to psql via --set ok 17 - Destination should read $PGDATABASE ok 18 - Meta destination should be the same as destination ok 19 - Destination should read $PGUSER ok 20 - Meta destination should be the same as destination ok 21 - Destination should fall back on sysuser ok 22 - Meta destination should be the same as destination ok 23 - Destination should read username ok 24 - Meta destination should be the same as destination ok 25 - Destination should prefer $PGDATABASE to username ok 26 - Meta destination should be the same as destination ok 27 - Create another pg ok 28 - client should be as configured ok 29 - username should be as configured ok 30 - password should be as configured ok 31 - db_name should be as configured ok 32 - destination should default to db_name ok 33 - meta_destination should default to db_name ok 34 - host should be as configured ok 35 - port should be as configured ok 36 - sqitch_schema should be as configured ok 37 - psql command should be configured ok 38 - Create a pg with sqitch with options ok 39 - client should be as optioned ok 40 - username should be as optioned ok 41 - password should still be as configured ok 42 - db_name should be as optioned ok 43 - destination should still default to db_name ok 44 - meta_destination should still default to db_name ok 45 - host should be as optioned ok 46 - port should be as optioned ok 47 - sqitch_schema should still be as configured ok 48 - psql command should be as optioned ok 49 - App::Sqitch::Engine::pg->can(...) ok 50 - PGPASSWORD should be "s3cr3t" ok 51 - Call _run ok 52 - Command should be passed to run() ok 53 - PGPASSWORD should be "s3cr3t" ok 54 - Call _spool ok 55 - Command should be passed to spool() ok 56 - PGPASSWORD should be "s3cr3t" ok 57 - Call _capture ok 58 - Command should be passed to capture() ok 59 - Create a pg with sqitch with no pw ok 60 - PGPASSWORD should not exist ok 61 - Call _run again ok 62 - Command should be passed to run() again ok 63 - PGPASSWORD should not exist ok 64 - Call _spool again ok 65 - Command should be passed to spool() again ok 66 - PGPASSWORD should not exist ok 67 - Call _capture again ok 68 - Command should be passed to capture() again ok 69 - PGPASSWORD should not exist ok 70 - Run foo/bar.sql ok 71 - File should be passed to run() ok 72 - PGPASSWORD should not exist ok 73 - Spool a "file handle" ok 74 - Handle should be passed to spool() ok 75 - PGPASSWORD should not exist ok 76 - Verify foo/bar.sql ok 77 - Verify file should be passed to capture() ok 78 - PGPASSWORD should not exist ok 79 - Verify foo/bar.sql again ok 80 - Verifile file should be passed to run() for high verbosity ok 81 - App::Sqitch::Engine::pg->can('_ts2char') ok 82 - _ts2char should work ok 83 - App::Sqitch::Engine::pg->can('_dt') ok 84 - 'Return value of _dt()' isa 'App::Sqitch::DateTime' ok 85 - DateTime year should be set ok 86 - DateTime month should be set ok 87 - DateTime day should be set ok 88 - DateTime hour should be set ok 89 - DateTime minute should be set ok 90 - DateTime second should be set ok 91 - DateTime TZ should be set ok 92 - App::Sqitch::Engine::pg->can(...) # Subtest: live database 1..0 # SKIP Unable to live-test pg engine: install_driver(Pg) failed: Can't locate DBD/Pg.pm in @INC (@INC contains: t/lib /export/home/fly1003/var/cpan/build/App-Sqitch-0.983-t4kb05/blib/lib /export/home/fly1003/var/cpan/build/App-Sqitch-0.983-t4kb05/blib/arch inc /export/home/fly1003/var/megalib /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/arch /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/lib /export/home/fly1003/ap1003/site/lib /export/home/fly1003/ap1003/lib .) at (eval 392) line 3. # Perhaps the DBD::Pg perl module hasn't been fully installed, # or perhaps the capitalisation of 'Pg' isn't right. # Available drivers: AnyData, CSV, Chart, DBM, ExampleP, Excel, File, Gofer, LDAP, Log, MVS_FTPSQL, Mock, Multiplex, ODBC, Ovrimos, PO, PassThrough, PgLite, PgPP, Proxy, SQLAnywhere, SQLRelay, SQLite, SQLite2, Simulated, Sponge, Sprite, TSM, Template, TemplateSS, Wire10, XBase, iPod, mysql, mysqlPP. # at t/pg.t line 293. # ok 93 # skip Unable to live-test pg engine: install_driver(Pg) failed: Can't locate DBD/Pg.pm in @INC (@INC contains: t/lib /export/home/fly1003/var/cpan/build/App-Sqitch-0.983-t4kb05/blib/lib /export/home/fly1003/var/cpan/build/App-Sqitch-0.983-t4kb05/blib/arch inc /export/home/fly1003/var/megalib /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/arch /export/home/fly1003/var/cpan/build/String-Formatter-0.102084-MwE2wE/blib/lib /export/home/fly1003/ap1003/site/lib /export/home/fly1003/ap1003/lib .) at (eval 392) line 3. # Perhaps the DBD::Pg perl module hasn't been fully installed, # or perhaps the capitalisation of 'Pg' isn't right. # Available drivers: AnyData, CSV, Chart, DBM, ExampleP, Excel, File, Gofer, LDAP, Log, MVS_FTPSQL, Mock, Multiplex, ODBC, Ovrimos, PO, PassThrough, PgLite, PgPP, Proxy, SQLAnywhere, SQLRelay, SQLite, SQLite2, Simulated, Sponge, Sprite, TSM, Template, TemplateSS, Wire10, XBase, iPod, mysql, mysqlPP. # at t/pg.t line 293. # 1..93 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 - Should be able to get change 0 by name ok 313 - Should be able to find change 0 by name ok 314 - Should be able to get change 0 by ID ok 315 - Should be able to find change 0 by ID ok 316 - Index of @bar should be 3 ok 317 - Should be able to get hey-there via @bar ok 318 - Should be able to get hey-there via @bar ID ok 319 - Should be able to find hey-there via @bar ok 320 - Should be able to find hey-there via @bar ID ok 321 - Seek to the "@bar" change ok 322 - Position should be at 3 again ok 323 - Current should be fourth again ok 324 - Index of you should be 1 ok 325 - Should be able to get change 1 by name ok 326 - Should be able to find change 1 by name ok 327 - Seek to the "you" change ok 328 - Position should be at 1 again ok 329 - Current should be second again ok 330 - Index of baz should be undef ok 331 - Index of @baz should be 3 ok 332 - Seek to the "baz" change ok 333 - Position should be at 3 again ok 334 - Current should be fourth again ok 335 - Should still get first change from change_at(0) ok 336 - Should still get second change from change_at(1) ok 337 - Should still get third change from change_at(1) ok 338 - Should die seeking invalid change ok 339 - Invalid seek change error ident should be "plan" ok 340 - And the failure message should be correct ok 341 - All should return all changes ok 342 - Reset the plan again ok 343 - Change hey should be passed to do sub ok 344 - Change hey should be the topic in do sub ok 345 - Change you should be passed to do sub ok 346 - Change you should be the topic in do sub ok 347 - Change this/rocks should be passed to do sub ok 348 - Change this/rocks should be the topic in do sub ok 349 - Change hey-there should be passed to do sub ok 350 - Change hey-there should be the topic in do sub ok 351 - 'search_changes() should return a code ref' isa 'CODE' ok 352 - All the changes should be returned in the proper order ok 353 - Direction "DESC" should work ok 354 - Should get error for invalid direction ok 355 - Invalid direction error ident should be "DEV" ok 356 - Invalid direction error message should be correct ok 357 - Direction "asc" should work ok 358 - Search by change name should work ok 359 - Search by change name should work as a regex ok 360 - Search by change name should with a character class ok 361 - Search by planner should work ok 362 - Search by planner should work as a regex ok 363 - Search by operation "deploy" should work ok 364 - Search by operation "rever" should return nothing ok 365 - Search by operation "DEPLOY" should now return two changes ok 366 - Search by operation "REVERT" should return the other two ok 367 - Should get an error for unknown operation ok 368 - Unknown operation error ident should be "DEV" ok 369 - Unknown operation error message should be correct ok 370 - Search with offset 2 should work ok 371 - Search with offset 2, limit 1 should work ok 372 - Search with offset 3 and dierction "desc" should work ok 373 - Search with offset 2, limit 1, dierction "desc" should work ok 374 - App::Sqitch::Plan->can('write_to') ok 375 - plan.out does not exist ok 376 - Write out the file ok 377 - plan.out exists ok 378 - The contents should look right ok 379 - Write out the file from "this/rocks" ok 380 - Plan should have been written from "this/rocks" through tags at end ok 381 - Write the file up to "you" ok 382 - Plan should have been written through "you" and its tags ok 383 - Write from "@foo" to "this/rocks" ok 384 - Plan should have been written from "@foo" to "this/rocks" ok 385 - Write from "hey" to "@foo" ok 386 - Plan should have been written from "hey" through "@foo" ok 387 - App::Sqitch::Plan->can('_is_valid') ok 388 - Should find "^foo" invalid ok 389 - Invalid name "^foo" error ident should be "plan" ok 390 - And the "^foo" error message should be correct ok 391 - Should find "foo^" invalid ok 392 - Invalid name "foo^" error ident should be "plan" ok 393 - And the "foo^" error message should be correct ok 394 - Should find "foo^6" invalid ok 395 - Invalid name "foo^6" error ident should be "plan" ok 396 - And the "foo^6" error message should be correct ok 397 - Should find "foo^666" invalid ok 398 - Invalid name "foo^666" error ident should be "plan" ok 399 - And the "foo^666" error message should be correct ok 400 - Should find "%hi" invalid ok 401 - Invalid name "%hi" error ident should be "plan" ok 402 - And the "%hi" error message should be correct ok 403 - Should find "hi!" invalid ok 404 - Invalid name "hi!" error ident should be "plan" ok 405 - And the "hi!" error message should be correct ok 406 - Should find "foo@bar" invalid ok 407 - Invalid name "foo@bar" error ident should be "plan" ok 408 - And the "foo@bar" error message should be correct ok 409 - Should find "foo:bar" invalid ok 410 - Invalid name "foo:bar" error ident should be "plan" ok 411 - And the "foo:bar" error message should be correct ok 412 - Should find "+foo" invalid ok 413 - Invalid name "+foo" error ident should be "plan" ok 414 - And the "+foo" error message should be correct ok 415 - Should find "-foo" invalid ok 416 - Invalid name "-foo" error ident should be "plan" ok 417 - And the "-foo" error message should be correct ok 418 - Should find "@foo" invalid ok 419 - Invalid name "@foo" error ident should be "plan" ok 420 - And the "@foo" error message should be correct ok 421 - Name "foo" sould be valid ok 422 - Name "12" sould be valid ok 423 - Name "t" sould be valid ok 424 - Name "6" sould be valid ok 425 - Name "阱阪阬" sould be valid ok 426 - Name "foo/bar" sould be valid ok 427 - Name "beta1" sould be valid ok 428 - Name "v1.2-1" sould be valid ok 429 - Name "v1.2+1" sould be valid ok 430 - Name "v1.2_1" sould be valid ok 431 - Add tag "w00t" ok 432 - Should have 4 changes ok 433 - Should find "@w00t at index 3 ok 434 - Last change should be "hey-there" ok 435 - The w00t tag should be on the last change ok 436 - An object of class 'App::Sqitch::Plan::Tag' isa 'App::Sqitch::Plan::Tag' ok 437 - The returned tag should be @w00t ok 438 - The @w00t change should be the last change ok 439 - Write out the file again ok 440 - The contents should include the "w00t" tag ok 441 - Add tag "@alpha" ok 442 - Should find "@alpha at index 3 ok 443 - The returned tag should be @alpha ok 444 - The @alpha change should be the last change ok 445 - Tag change "you" ok 446 - Should still have 4 changes ok 447 - Should find "@blarney at index 1 ok 448 - The blarney tag should be on the second change ok 449 - An object of class 'App::Sqitch::Plan::Tag' isa 'App::Sqitch::Plan::Tag' ok 450 - The returned tag should be @blarney ok 451 - The @blarney change should be the second change ok 452 - Should get error trying to add duplicate tag ok 453 - Duplicate tag error ident should be "plan" ok 454 - And the error message should report it as a dupe ok 455 - Should get error for invalid tag "^foo" ok 456 - Invalid name "^foo" error ident should be "plan" ok 457 - And the "^foo" error message should be correct ok 458 - Should get error for invalid tag "foo^" ok 459 - Invalid name "foo^" error ident should be "plan" ok 460 - And the "foo^" error message should be correct ok 461 - Should get error for invalid tag "foo^6" ok 462 - Invalid name "foo^6" error ident should be "plan" ok 463 - And the "foo^6" error message should be correct ok 464 - Should get error for invalid tag "foo^666" ok 465 - Invalid name "foo^666" error ident should be "plan" ok 466 - And the "foo^666" error message should be correct ok 467 - Should get error for invalid tag "%hi" ok 468 - Invalid name "%hi" error ident should be "plan" ok 469 - And the "%hi" error message should be correct ok 470 - Should get error for invalid tag "hi!" ok 471 - Invalid name "hi!" error ident should be "plan" ok 472 - And the "hi!" error message should be correct ok 473 - Should get error for invalid tag "foo@bar" ok 474 - Invalid name "foo@bar" error ident should be "plan" ok 475 - And the "foo@bar" error message should be correct ok 476 - Should get error for invalid tag "foo:bar" ok 477 - Invalid name "foo:bar" error ident should be "plan" ok 478 - And the "foo:bar" error message should be correct ok 479 - Should get error for invalid tag "+foo" ok 480 - Invalid name "+foo" error ident should be "plan" ok 481 - And the "+foo" error message should be correct ok 482 - Should get error for invalid tag "-foo" ok 483 - Invalid name "-foo" error ident should be "plan" ok 484 - And the "-foo" error message should be correct ok 485 - Should get error for invalid tag "foo\#bar" ok 486 - Invalid name "foo\#bar" error ident should be "plan" ok 487 - And the "foo\#bar" error message should be correct ok 488 - Should get error for reserved tag "HEAD" ok 489 - Reserved tag "HEAD" error ident should be "plan" ok 490 - And the reserved tag "HEAD" message should be correct ok 491 - Should get error for reserved tag "ROOT" ok 492 - Reserved tag "ROOT" error ident should be "plan" ok 493 - And the reserved tag "ROOT" message should be correct ok 494 - Should get error for reserved tag "FIRST" ok 495 - Reserved tag "FIRST" error ident should be "plan" ok 496 - And the reserved tag "FIRST" message should be correct ok 497 - Should get error for reserved tag "LAST" ok 498 - Reserved tag "LAST" error ident should be "plan" ok 499 - And the reserved tag "LAST" message should be correct ok 500 - Should get error for a SHA1 tag ok 501 - SHA1 tag error ident should be "plan" ok 502 - And the reserved name error should be output ok 503 - Add change "booyah" ok 504 - Should have 5 changes ok 505 - Should find "booyah at index 4 ok 506 - Last change should be "booyah" ok 507 - An object of class 'App::Sqitch::Plan::Change' isa 'App::Sqitch::Plan::Change' ok 508 - Should have plain stringification of "booya" ok 509 - Write out the file again ok 510 - The contents should include the "booyah" change ok 511 - Add change "blow" ok 512 - Should have 6 changes ok 513 - Should find "blow" at index 5 ok 514 - Last change should be "blow" ok 515 - Should have nice stringification of "blow [booyah]" ok 516 - The new change should have been appended to the lines, too ok 517 - Add change "jive" with dupe dependency ok 518 - Should have 7 changes ok 519 - Should find "jive" at index 6 ok 520 - jive change should be "jive" ok 521 - Should have dependency "blow" ok 522 - Should have nice stringification of "jive [blow]" ok 523 - The new change should have been appended to the lines, too ok 524 - Add change "moo" with dupe dependencies ok 525 - Should have 8 changes ok 526 - Should find "moo" at index 7 ok 527 - moo change should be "moo" ok 528 - Should require "ext:whu" ok 529 - Should conflict with "blow" and "ext:whu" ok 530 - Should have nice stringification of "moo [ext:foo !blow !ext:whu]" ok 531 - The new change should have been appended to the lines, too ok 532 - Should get error trying to add duplicate change ok 533 - Duplicate change error ident should be "plan" ok 534 - And the error message should suggest "rework" ok 535 - Should get error for invalid change "^foo" ok 536 - Invalid name "^foo" error ident should be "plan" ok 537 - And the "^foo" error message should be correct ok 538 - Should get error for invalid change "foo^" ok 539 - Invalid name "foo^" error ident should be "plan" ok 540 - And the "foo^" error message should be correct ok 541 - Should get error for invalid change "foo^6" ok 542 - Invalid name "foo^6" error ident should be "plan" ok 543 - And the "foo^6" error message should be correct ok 544 - Should get error for invalid change "foo^666" ok 545 - Invalid name "foo^666" error ident should be "plan" ok 546 - And the "foo^666" error message should be correct ok 547 - Should get error for invalid change "%hi" ok 548 - Invalid name "%hi" error ident should be "plan" ok 549 - And the "%hi" error message should be correct ok 550 - Should get error for invalid change "hi!" ok 551 - Invalid name "hi!" error ident should be "plan" ok 552 - And the "hi!" error message should be correct ok 553 - Should get error for invalid change "foo@bar" ok 554 - Invalid name "foo@bar" error ident should be "plan" ok 555 - And the "foo@bar" error message should be correct ok 556 - Should get error for invalid change "foo:bar" ok 557 - Invalid name "foo:bar" error ident should be "plan" ok 558 - And the "foo:bar" error message should be correct ok 559 - Should get error for invalid change "+foo" ok 560 - Invalid name "+foo" error ident should be "plan" ok 561 - And the "+foo" error message should be correct ok 562 - Should get error for invalid change "-foo" ok 563 - Invalid name "-foo" error ident should be "plan" ok 564 - And the "-foo" error message should be correct ok 565 - Should get error for invalid change "@foo" ok 566 - Invalid name "@foo" error ident should be "plan" ok 567 - And the "@foo" error message should be correct ok 568 - Should get error for reserved name "HEAD" ok 569 - Reserved name "HEAD" error ident should be "plan" ok 570 - And the reserved name "HEAD" message should be correct ok 571 - Should get error for reserved name "ROOT" ok 572 - Reserved name "ROOT" error ident should be "plan" ok 573 - And the reserved name "ROOT" message should be correct ok 574 - Should get error for reserved name "FIRST" ok 575 - Reserved name "FIRST" error ident should be "plan" ok 576 - And the reserved name "FIRST" message should be correct ok 577 - Should get error for reserved name "LAST" ok 578 - Reserved name "LAST" error ident should be "plan" ok 579 - And the reserved name "LAST" message should be correct ok 580 - Should get failure for failed dependency ok 581 - Dependency error ident should be "plan" ok 582 - The dependency error should be correct ok 583 - Should get failure for invalid dependency ok 584 - Invalid dependency error ident should be "plan" ok 585 - The invalid dependency error should be correct ok 586 - Should get failure for invalid conflict ok 587 - Invalid conflict error ident should be "plan" ok 588 - The invalid conflict error should be correct ok 589 - Should get failure for failed tag dependency ok 590 - Tag dependency error ident should be "plan" ok 591 - The tag dependency error should be correct ok 592 - Should get error for a SHA1 change ok 593 - SHA1 tag error ident should be "plan" ok 594 - And the reserved name error should be output ok 595 - App::Sqitch::Plan->can('rework') ok 596 - Rework change "you" ok 597 - An object of class 'App::Sqitch::Plan::Change' isa 'App::Sqitch::Plan::Change' ok 598 - Reworked change should be "you" ok 599 - Get original "you" change ok 600 - It should also be named "you" ok 601 - And it should have the one rework tag ok 602 - The original file should now be named you@bar.sql ok 603 - It should require the previous "you" change ok 604 - The new "you" should have been appended to the lines, too ok 605 - It should be at position 8 ok 606 - The plan count should be 9 ok 607 - Tag @beta1 ok 608 - Rework change "you" again ok 609 - An object of class 'App::Sqitch::Plan::Change' isa 'App::Sqitch::Plan::Change' ok 610 - New reworked change should be "you" ok 611 - Get original "you" change again ok 612 - It should still be named "you" ok 613 - And it should have the one rework tag ok 614 - Get you@beta1 ok 615 - The second "you" should be named that ok 616 - And the second change should have the rework_tag "@beta1" ok 617 - But the new reworked change should have no rework tags ok 618 - It should require the previous "you" change ok 619 - The new reworking should have been appended to the lines ok 620 - It should be at position 9 ok 621 - The plan count should be 10 ok 622 - rework should die on nonexistent change ok 623 - Nonexistent change error ident should be "plan" ok 624 - And the error should suggest "sqitch add" ok 625 - rework_stpe should die on lack of intervening tag ok 626 - Missing tag error ident should be "plan" ok 627 - And the error should suggest "sqitch tag" ok 628 - rework should die on failed dependency ok 629 - Rework dependency error ident should be "plan" ok 630 - The rework dependency error should be correct ok 631 - Should get failure for invalid dependency ok 632 - Invalid dependency error ident should be "plan" ok 633 - The invalid dependency error should be correct ok 634 - Should get failure for invalid conflict ok 635 - Invalid conflict error ident should be "plan" ok 636 - The invalid conflict error should be correct ok 637 - 'Plan shoud work plan with dupe change across tags' isa 'App::Sqitch::Plan' ok 638 - Project name should be set ok 639 - Lines with dupe change should be read from file ok 640 - Noes with dupe change should be read from file ok 641 - Should have sorted changes three times ok 642 - Should get an error trying to find dupe key. ok 643 - Dupe key error ident should be "plan" ok 644 - Dupe key error message should be correct ok 645 - Should get 3 for whatever@HEAD ok 646 - Should get 0 for whatever@bar ok 647 - Should get an error seeking dupe key. ok 648 - Dupe key error ident should be "plan" ok 649 - Dupe key error message should be correct ok 650 - Should find whatever@HEAD at index 3 ok 651 - Should find whatever@HEAD at index 0 ok 652 - Should find first instance of whatever at index 0 ok 653 - Should find first instance of whatever after @bar at index 5 ok 654 - Seek whatever@HEAD ok 655 - Position should be 3 ok 656 - Seek whatever@bar ok 657 - Position should be 0 ok 658 - Last tagged change should be "hi" ok 659 - App::Sqitch::Plan->can('open_script') ok 660 - Open bar.sql ok 661 - It should be the right file ok 662 - Open baz.sql ok 663 - It should be empty ok 664 - App::Sqitch::Plan->can('check_changes') ok 665 - Should get original order when no dependencies ok 666 - Should get original order when no prepreqs ok 667 - Should get original order when that requires this ok 668 - Should get original order when other requires that ok 669 - Should get error for out-of-order dependency ok 670 - Unordered dependency error ident should be "plan" ok 671 - And the unordered dependency error message should be correct ok 672 - Should get error for multiple dependency errors ok 673 - Multiple dependency error ident should be "plan" ok 674 - And the multiple dependency error message should be correct ok 675 - Should get original order when requiring a tag ok 676 - Should get original order when requiring a step as-of a tag ok 677 - Should get failure for a step after a tag ok 678 - Step after tag error ident should be "plan" ok 679 - And we the unknown change as-of a tag message should be correct ok 680 - Should get failure for a cycle ok 681 - Cycle error ident should be "plan" ok 682 - The cycle error message should be correct ok 683 - Should get failure for a two-hop cycle ok 684 - Two-hope cycle error ident should be "plan" ok 685 - The two-hop cycle error message should be correct ok 686 - Should get original order with earlier dependency ok 687 - Should get error with misordered and seen dependencies ok 688 - Misorderd and seen error ident should be "plan" ok 689 - And the misordered and seen error message should be correct ok 690 - Should die on unknown dependency ok 691 - Unknown dependency error ident should be "plan" ok 692 - And the error should point to the offending change ok 693 - Should die on unknown tag dependency ok 694 - Unknown tag dependency error ident should be "plan" ok 695 - And the error should point to the offending change ok 696 - Should get original order with external dependency ok 697 - Should die on self dependency ok 698 - Self dependency error ident should be "plan" ok 699 - And the self dependency error should be correct ok 700 - Should get original order with cascading dependencies ok 701 - Should get original order with multiple cascading dependencies ok 702 - App::Sqitch::Plan->can('_check_dependencies') ok 703 - Depend "hi" should be in project "dupe_change_diff_tag" ok 704 - Dependency on "hi" should succeed ok 705 - Depend "greets" should be in project "dupe_change_diff_tag" ok 706 - Dependency on "greets" should succeed ok 707 - Depend "whatever" should be in project "dupe_change_diff_tag" ok 708 - Dependency on "whatever" should succeed ok 709 - Depend "@foo" should be in project "dupe_change_diff_tag" ok 710 - Dependency on "@foo" should succeed ok 711 - Depend "whatever@foo" should be in project "dupe_change_diff_tag" ok 712 - Dependency on "whatever@foo" should succeed ok 713 - Depend "ext:larry" should be in project "ext" ok 714 - Dependency on "ext:larry" should succeed ok 715 - Depend "ext:greets" should be in project "ext" ok 716 - Dependency on "ext:greets" should succeed ok 717 - Should get error trying to depend on "wanker" ok 718 - Dependency "req" error ident should be "plan" ok 719 - And should get unknown dependency message for "wanker" ok 720 - Should get error trying to depend on "@blah" ok 721 - Dependency "req" error ident should be "plan" ok 722 - And should get unknown dependency message for "@blah" ok 723 - Should get error trying to depend on "greets@foo" ok 724 - Dependency "req" error ident should be "plan" ok 725 - And should get unknown dependency message for "greets@foo" ok 726 - Should have undef URI when no pragma ok 727 - 'Plan with sqitch with plan file with dependencies' isa 'App::Sqitch::Plan' ok 728 - syntax_version should be set ok 729 - Project should be set ok 730 - Should have URI from pragma ok 731 - 'It' isa 'URI' ok 732 - Should die on plan with no project pragma ok 733 - Missing prorject error ident should be "plan" ok 734 - The missing project error message should be correct ok 735 - Should die on invalid project name "^foo" ok 736 - Ident for bad proj "^foo" should be "plan" ok 737 - Error message for bad project "^foo" should be correct ok 738 - Should die on invalid project name "foo^" ok 739 - Ident for bad proj "foo^" should be "plan" ok 740 - Error message for bad project "foo^" should be correct ok 741 - Should die on invalid project name "foo^6" ok 742 - Ident for bad proj "foo^6" should be "plan" ok 743 - Error message for bad project "foo^6" should be correct ok 744 - Should die on invalid project name "foo^666" ok 745 - Ident for bad proj "foo^666" should be "plan" ok 746 - Error message for bad project "foo^666" should be correct ok 747 - Should die on invalid project name "%hi" ok 748 - Ident for bad proj "%hi" should be "plan" ok 749 - Error message for bad project "%hi" should be correct ok 750 - Should die on invalid project name "hi!" ok 751 - Ident for bad proj "hi!" should be "plan" ok 752 - Error message for bad project "hi!" should be correct ok 753 - Should die on invalid project name "foo@bar" ok 754 - Ident for bad proj "foo@bar" should be "plan" ok 755 - Error message for bad project "foo@bar" should be correct ok 756 - Should die on invalid project name "foo:bar" ok 757 - Ident for bad proj "foo:bar" should be "plan" ok 758 - Error message for bad project "foo:bar" should be correct ok 759 - Should die on invalid project name "+foo" ok 760 - Ident for bad proj "+foo" should be "plan" ok 761 - Error message for bad project "+foo" should be correct ok 762 - Should die on invalid project name "-foo" ok 763 - Ident for bad proj "-foo" should be "plan" ok 764 - Error message for bad project "-foo" should be correct ok 765 - Should die on invalid project name "@foo" ok 766 - Ident for bad proj "@foo" should be "plan" ok 767 - Error message for bad project "@foo" should be correct 1..767 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 "2013-11-20 22:23:03 -0800" ok 95 - Format "%{date:rfc}p" should output "Wed, 20 Nov 2013 22:23:03 -0800" ok 96 - Format "%{d:long}p" should output "November 20, 2013 10:23:03 PM PST" ok 97 - Format "%{d:cldr:HH'h' mm'm'}p" should output "22h 23m" ok 98 - Format "%{d:strftime:%a at %H:%M:%S}p" should output "Wed at 22:23:03" 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 have merged --set, deploy, rebase ok 15 - An object of class 'App::Sqitch::Command::rebase' isa 'App::Sqitch::Command::rebase' ok 16 - Should pick up deploy variables from configuration ok 17 - Should pick up revert variables from configuration ok 18 - Should have no_prompt true ok 19 - Should havev false no_prompt and verify from rebase config ok 20 - Should have no_prompt true from rebase and verify from deploy ok 21 - Should have no_prompt false and mode all again ok 22 - Should have no_prompt false for false config ok 23 - Should have no_prompt true with -y ok 24 - An object of class 'App::Sqitch::Command::rebase' isa 'App::Sqitch::Command::rebase' ok 25 - onto_target should be undef ok 26 - upto_target should be undef ok 27 - Execute to "@alpha" ok 28 - undef, "all", and 0 should be passed to the engine deploy ok 29 - "@alpha" and 0 should be passed to the engine revert ok 30 - Engine should prompt ok 31 - Engine should no be log only ok 32 - Execute ok 33 - undef, "all", and 0 should be passed to the engine deploy ok 34 - undef and = should be passed to the engine revert ok 35 - No vars should have been passed through to the engine ok 36 - 'Object with to and variables' isa 'App::Sqitch::Command::rebase' ok 37 - Execute again ok 38 - Engine should be no_prompt ok 39 - Engine should be log_only ok 40 - Engine should verify ok 41 - "bar", "tag", and 1 should be passed to the engine deploy ok 42 - "foo" and 1 should be passed to the engine revert ok 43 - Variables should have been passed to the engine twice ok 44 - The revert vars should have been passed first ok 45 - The deploy vars should have been next ok 46 - Execute once more ok 47 - "bar", "tag", and 1 should be passed to the engine deploy ok 48 - Variables should have been passed to the engine twice ok 49 - The revert vars should have been passed first ok 50 - The deploy vars should have been next ok 51 - Should have emitted info for non-fatal revert exception ok 52 - Should rethrow confirm exception ok 53 - Should rethrow fatal exception ok 54 - Should rethrow unknown exception 1..54 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 - An object of class 'App::Sqitch::Command::revert' isa 'App::Sqitch::Command::revert' ok 17 - to_target should be undef ok 18 - Execute to "@alpha" ok 19 - Engine should be no_prompt ok 20 - Engine should not be log_only ok 21 - "@alpha" and "all" should be passed to the engine ok 22 - Execute ok 23 - undef and "all" should be passed to the engine ok 24 - No vars should have been passed through to the engine ok 25 - 'Object with to and variables' isa 'App::Sqitch::Command::revert' ok 26 - Execute again ok 27 - Engine should not be no_prompt ok 28 - Engine should be log_only ok 29 - "foo" and 1 should be passed to the engine ok 30 - Vars should have been passed through to the engine 1..30 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 - db_name should be required ok 6 - Destination should be db_name stringified ok 7 - sqitch_db should default to "$db_name-sqitch.db" in the same diretory as db_name ok 8 - Meta destination should be sqitch_db stringified ok 9 - sqlite3 command should have the proper opts ok 10 - An object of class 'App::Sqitch::Engine::sqlite' isa 'App::Sqitch::Engine::sqlite' ok 11 - Should get an error for no db name ok 12 - Missing db name error ident should be "sqlite" ok 13 - Missing db name error message should be correct ok 14 - Create another sqlite ok 15 - client should fall back on config ok 16 - db_name should fall back on config ok 17 - Destination should be configured db_name stringified ok 18 - sqitch_db should fall back on config ok 19 - Meta destination should be configured sqitch_db stringified ok 20 - sqlite3 command should have config values ok 21 - Create sqlite with sqitch with --client and --db-name ok 22 - The client should be grabbed from sqitch ok 23 - The db_name should be grabbed from sqitch ok 24 - Destination should be optioned db_name stringified ok 25 - sqlite3 command should have option values ok 26 - Instantiate with a temporary database file ok 27 - App::Sqitch::Engine::sqlite->can(...) ok 28 - Call _run ok 29 - Command should be passed to run() ok 30 - Call _spool ok 31 - Command should be passed to spool() ok 32 - Call _capture ok 33 - Command should be passed to capture() ok 34 - Run foo/bar.sql ok 35 - File should be passed to run() ok 36 - Spool a "file handle" ok 37 - Handle should be passed to spool() ok 38 - Verify foo/bar.sql ok 39 - Verify file should be passed to capture() ok 40 - Verify foo/bar.sql again ok 41 - Verifile file should be passed to run() for high verbosity ok 42 - App::Sqitch::Engine::sqlite->can('_ts2char_format') ok 43 - _ts2char should work ok 44 - App::Sqitch::Engine::sqlite->can('_dt') ok 45 - 'Return value of _dt()' isa 'App::Sqitch::DateTime' ok 46 - DateTime year should be set ok 47 - DateTime month should be set ok 48 - DateTime day should be set ok 49 - DateTime hour should be set ok 50 - DateTime minute should be set ok 51 - DateTime second should be set ok 52 - DateTime TZ should be set ok 53 - Create command for v3.3.9 ok 54 - Should be okay with sqlite v3.3.9 ok 55 - Create command for v3.3.10 ok 56 - Should be okay with sqlite v3.3.10 ok 57 - Create command for v3.3.200 ok 58 - Should be okay with sqlite v3.3.200 ok 59 - Create command for v3.4.0 ok 60 - Should be okay with sqlite v3.4.0 ok 61 - Create command for v3.4.8 ok 62 - Should be okay with sqlite v3.4.8 ok 63 - Create command for v3.7.11 ok 64 - Should be okay with sqlite v3.7.11 ok 65 - Create command for v3.8.12 ok 66 - Should be okay with sqlite v3.8.12 ok 67 - Create command for v3.10.0 ok 68 - Should be okay with sqlite v3.10.0 ok 69 - Create command for v4.1.30 ok 70 - Should be okay with sqlite v4.1.30 ok 71 - Create command for v3.3.8 ok 72 - Should not be okay with v3.3.8 ok 73 - Should get ident "sqlite" for v3.3.8 ok 74 - Should get proper error message for v3.3.8 ok 75 - Create command for v3.3.0 ok 76 - Should not be okay with v3.3.0 ok 77 - Should get ident "sqlite" for v3.3.0 ok 78 - Should get proper error message for v3.3.0 ok 79 - Create command for v3.2.8 ok 80 - Should not be okay with v3.2.8 ok 81 - Should get ident "sqlite" for v3.2.8 ok 82 - Should get proper error message for v3.2.8 ok 83 - Create command for v3.0.1 ok 84 - Should not be okay with v3.0.1 ok 85 - Should get ident "sqlite" for v3.0.1 ok 86 - Should get proper error message for v3.0.1 ok 87 - Create command for v3.0.0 ok 88 - Should not be okay with v3.0.0 ok 89 - Should get ident "sqlite" for v3.0.0 ok 90 - Should get proper error message for v3.0.0 ok 91 - Create command for v2.8.1 ok 92 - Should not be okay with v2.8.1 ok 93 - Should get ident "sqlite" for v2.8.1 ok 94 - Should get proper error message for v2.8.1 ok 95 - Create command for v2.20.0 ok 96 - Should not be okay with v2.20.0 ok 97 - Should get ident "sqlite" for v2.20.0 ok 98 - Should get proper error message for v2.20.0 ok 99 - Create command for v1.0.0 ok 100 - Should not be okay with v1.0.0 ok 101 - Should get ident "sqlite" for v1.0.0 ok 102 - Should get proper error message for v1.0.0 ok 103 - App::Sqitch::Engine::sqlite->can(...) # Subtest: live database 1..0 # SKIP Unable to live-test sqlite engine: "sqlite3" failed to start: "No such file or directory" # ok 104 # skip Unable to live-test sqlite engine: "sqlite3" failed to start: "No such file or directory" # 1..104 ok t/status.t .......... 1..94 ok 1 - require App::Sqitch::Command::status; ok 2 - Load a sqitch object ok 3 - 'status command' isa 'App::Sqitch::Command::status' ok 4 - App::Sqitch::Command::status->can(...) ok 5 - Options should be correct ok 6 - Should have error for uninitialized database ok 7 - Uninitialized database error ident should be "status" ok 8 - Uninitialized database error message should be correct ok 9 - 'new status command' isa 'App::Sqitch::Command::status' ok 10 - Should have project "foo" ok 11 - Load a sqitch object with SQLite ok 12 - Create another status command ok 13 - Should get an error for uninitialized db ok 14 - Uninitialized db error ident should be "status" ok 15 - Uninitialized db error message should be correct ok 16 - Should get an error for no registered projects ok 17 - No projects error ident should be "status" ok 18 - No projects error message should be correct ok 19 - Should get an error for too many projects ok 20 - Too many projects error ident should be "status" ok 21 - Too many projects error message should be correct ok 22 - Should find single project ok 23 - Load another sqitch object ok 24 - 'another status command' isa 'App::Sqitch::Command::status' ok 25 - Should have plan project ok 26 - Should get empty hash for no config or options ok 27 - Should get error for invalid date format in config ok 28 - Invalid date format error ident should be "datetime" ok 29 - Invalid date format error message should be correct ok 30 - Should get error for invalid date format in optsions ok 31 - Invalid date format error ident should be "status" ok 32 - Invalid date format error message should be correct ok 33 - Emit the state ok 34 - The state should have been emitted ok 35 - Emit the state with a tag ok 36 - The state should have been emitted with a tag ok 37 - Emit the state with multiple tags ok 38 - The state should have been emitted with multiple tags ok 39 - Create status command with an engine ok 40 - Try to emit changes ok 41 - Should have emitted no changes ok 42 - Create change-showing status command ok 43 - Emit changes again ok 44 - Project "foo" should have been passed to current_changes ok 45 - Should have emitted one change ok 46 - Emit changes thrice ok 47 - Project "foo" again should have been passed to current_changes ok 48 - Should have emitted three changes ok 49 - Try to emit tags ok 50 - No tags should have been emitted ok 51 - Create tag-showing status command ok 52 - Try to emit tags again ok 53 - Project "bar" should be passed to current_tags() ok 54 - Should have emitted a header for no tags ok 55 - Emit tags ok 56 - Project "bar" should again be passed to current_tags() ok 57 - Should have emitted one tag ok 58 - Emit tags again ok 59 - Project "bar" should once more be passed to current_tags() ok 60 - Should have emitted all three tags ok 61 - Create status command with actual plan command ok 62 - Emit status ok 63 - Should have a blank comment line ok 64 - Should emit up-to-date output ok 65 - Emit status again ok 66 - Should have a blank comment line ok 67 - Should emit list of undeployed changes ok 68 - Emit status thrice ok 69 - Should have a blank comment line ok 70 - Should emit list of undeployed changes ok 71 - Die on invalid ID ok 72 - Invalid ID error ident should be "status" ok 73 - The invalid ID error message should be correct ok 74 - Should have a blank comment line ok 75 - Should have a message about inability to find the change ok 76 - Execute ok 77 - The state should have been emitted ok 78 - Should emit list of undeployed changes ok 79 - Create status command with specified project ok 80 - Execute for specified project ok 81 - The specified project state should have been emitted ok 82 - Should emit unknown status message for specified project ok 83 - Create status command with external project ok 84 - Execute for external project ok 85 - The external project state should have been emitted ok 86 - Should emit unknown status message for external project ok 87 - Die on no state ok 88 - No state error ident should be "status" ok 89 - No state error message should be correct ok 90 - The "On database" comment should have been emitted ok 91 - Should get an error for uninitialized db ok 92 - Uninitialized db error ident should be "status" ok 93 - Uninitialized db error message should be correct ok 94 - 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/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 targets 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 - An object of class 'App::Sqitch::Command::verify' isa 'App::Sqitch::Command::verify' ok 12 - from_target should be undef ok 13 - to_target should be undef ok 14 - Execute with nothing. ok 15 - Two undefs should be passed to the engine ok 16 - Execute from "@alpha" ok 17 - "@alpha" and undef should be passed to the engine ok 18 - Execute from "@alpha" to "@beta" ok 19 - "@alpha" and "@beat" should be passed to the engine ok 20 - 'Object with from, to, and variables' isa 'App::Sqitch::Command::verify' ok 21 - Execute again ok 22 - "foo" and "bar" should be passed to the engine ok 23 - Vars should have been passed through to the engine ok 24 - Execute with command-line args ok 25 - "foo" and "bar" should be passed to the engine ok 26 - Vars should have been passed through to the engine 1..26 ok t/x.t ............... ok 1 - require App::Sqitch::X; ok 2 - 'X object' isa 'App::Sqitch::X' ok 3 - X object does Throwable ok 4 - X object does Role::HasMessage ok 5 - X object does StackTrace::Auto ok 6 - X object does Role::Identifiable::HasIdent ok 7 - Create X without ident ok 8 - Default ident should be "DEV" ok 9 - threw App::Sqitch::X ok 10 - 'Thrown object' isa 'App::Sqitch::X' ok 11 - Ident should be "basic" ok 12 - The message should have been passed ok 13 - It should have a stack trace ok 14 - Exit val should be 2 ok 15 - The trace should start in this file ok 16 - threw App::Sqitch::X ok 17 - 'Thrown object' isa 'App::Sqitch::X' ok 18 - Ident should be "DEV" ok 19 - The message should have been passed ok 20 - Exit val should again be 2 ok 21 - 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=36, Tests=4748, 120 wallclock secs ( 2.44 usr 0.47 sys + 108.59 cusr 7.88 csys = 119.38 CPU) Result: PASS DWHEELER/App-Sqitch-0.983.tar.gz ./Build test verbose=1 -- OK David E. Wheeler <david@justatheory.com> Sane database change management >>> (cd /export/home/fly1003/var/cpan/build/App-Sqitch-0.983-t4kb05 && tar cvf - App-Sqitch-0.983.ppd blib) | gzip -c >/export/home/fly1003/var/REPO/D/DW/DWHEELER/App-Sqitch-0.983.tar.gz App-Sqitch-0.983.ppd blib/ blib/lib/ blib/lib/App/ blib/lib/App/Sqitch/ blib/lib/App/Sqitch/Engine/ blib/lib/App/Sqitch/Engine/oracle.pm blib/lib/App/Sqitch/Engine/mysql.pm blib/lib/App/Sqitch/Engine/pg.pm blib/lib/App/Sqitch/Engine/sqlite.pm blib/lib/App/Sqitch/Engine/oracle.sql blib/lib/App/Sqitch/Engine/mysql.sql blib/lib/App/Sqitch/Engine/pg.sql blib/lib/App/Sqitch/Engine/sqlite.sql blib/lib/App/Sqitch/Command/ blib/lib/App/Sqitch/Command/rebase.pm blib/lib/App/Sqitch/Command/log.pm blib/lib/App/Sqitch/Command/bundle.pm blib/lib/App/Sqitch/Command/checkout.pm blib/lib/App/Sqitch/Command/show.pm blib/lib/App/Sqitch/Command/revert.pm blib/lib/App/Sqitch/Command/config.pm blib/lib/App/Sqitch/Command/tag.pm blib/lib/App/Sqitch/Command/init.pm blib/lib/App/Sqitch/Command/help.pm blib/lib/App/Sqitch/Command/rework.pm blib/lib/App/Sqitch/Command/add.pm blib/lib/App/Sqitch/Command/plan.pm blib/lib/App/Sqitch/Command/verify.pm blib/lib/App/Sqitch/Command/deploy.pm blib/lib/App/Sqitch/Command/status.pm blib/lib/App/Sqitch/Plan/ blib/lib/App/Sqitch/Plan/Depend.pm blib/lib/App/Sqitch/Plan/ChangeList.pm blib/lib/App/Sqitch/Plan/Tag.pm blib/lib/App/Sqitch/Plan/Pragma.pm blib/lib/App/Sqitch/Plan/Line.pm blib/lib/App/Sqitch/Plan/Change.pm blib/lib/App/Sqitch/Plan/LineList.pm blib/lib/App/Sqitch/Plan/Blank.pm blib/lib/App/Sqitch/Engine.pm blib/lib/App/Sqitch/Role/ blib/lib/App/Sqitch/Role/RevertDeployCommand.pm blib/lib/App/Sqitch/Role/DBIEngine.pm blib/lib/App/Sqitch/ItemFormatter.pm blib/lib/App/Sqitch/Command.pm blib/lib/App/Sqitch/Plan.pm blib/lib/App/Sqitch/X.pm blib/lib/App/Sqitch/Config.pm blib/lib/App/Sqitch/DateTime.pm blib/lib/App/Sqitch.pm blib/lib/sqitchcommands.pod blib/lib/sqitch-revert.pod blib/lib/sqitch-show-usage.pod blib/lib/sqitch-verify.pod blib/lib/sqitchtutorial-oracle.pod blib/lib/sqitch-deploy.pod blib/lib/sqitch-config.pod blib/lib/sqitch-add.pod blib/lib/sqitch-add-usage.pod blib/lib/sqitch-rework.pod blib/lib/sqitch-help-usage.pod blib/lib/sqitch-bundle-usage.pod blib/lib/sqitch-init-usage.pod blib/lib/sqitch-checkout.pod blib/lib/sqitchtutorial-mysql.pod blib/lib/sqitch-plan.pod blib/lib/sqitch-revert-usage.pod blib/lib/sqitch-show.pod blib/lib/sqitch-status.pod blib/lib/sqitchtutorial-sqlite.pod blib/lib/sqitch-config-usage.pod blib/lib/sqitch-log.pod blib/lib/sqitch-checkout-usage.pod blib/lib/sqitch-plan-usage.pod blib/lib/sqitchtutorial.pod blib/lib/sqitch-rebase-usage.pod blib/lib/sqitchchanges.pod blib/lib/sqitch-log-usage.pod blib/lib/sqitch-rework-usage.pod blib/lib/sqitch-bundle.pod blib/lib/sqitch.pod blib/lib/sqitch-deploy-usage.pod blib/lib/sqitch-rebase.pod blib/lib/sqitch-tag.pod blib/lib/sqitch-help.pod blib/lib/sqitch-status-usage.pod blib/lib/sqitch-tag-usage.pod blib/lib/sqitchusage.pod blib/lib/sqitch-init.pod blib/lib/sqitch-verify-usage.pod 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/script/ blib/script/sqitch blib/etc/ blib/etc/templates/ blib/etc/templates/deploy/ blib/etc/templates/deploy/pg.tmpl blib/etc/templates/deploy/mysql.tmpl blib/etc/templates/deploy/oracle.tmpl blib/etc/templates/deploy/sqlite.tmpl blib/etc/templates/revert/ blib/etc/templates/revert/pg.tmpl blib/etc/templates/revert/mysql.tmpl blib/etc/templates/revert/oracle.tmpl blib/etc/templates/revert/sqlite.tmpl blib/etc/templates/verify/ blib/etc/templates/verify/pg.tmpl blib/etc/templates/verify/mysql.tmpl blib/etc/templates/verify/oracle.tmpl blib/etc/templates/verify/sqlite.tmpl >>> mv /export/home/fly1003/var/cpan/build/App-Sqitch-0.983-t4kb05/App-Sqitch-0.983.ppd /export/home/fly1003/var/REPO/D/DW/DWHEELER Finished 2013-11-21T22:23:37