jhthorsen / mojolicious-plugin-openapi

OpenAPI / Swagger plugin for Mojolicious
54 stars 44 forks source link

Mojolicious::Plugin::OpenAPI: 2 tests fail against perl-5.31.0 on FreeBSD-12 #132

Closed jkeenan closed 5 years ago

jkeenan commented 5 years ago

As part of CPAN-River-3000 testing I tried to install this distribution against perl-5.31.0 on FreeBSD12 today, using cpanm as the installer. Excerpt from the cpanm build.log:

$ dumpjson JHTHORSEN.Mojolicious-Plugin-OpenAPI-2.14.log.json 
{
  author => "JHTHORSEN",
  dist => "Mojolicious-Plugin-OpenAPI",
  distname => "Mojolicious-Plugin-OpenAPI-2.14",
  distversion => 2.14,
  grade => "FAIL",
  prereqs => undef,
  test_output => [
    "Building and testing Mojolicious-Plugin-OpenAPI-2.14",
    "cp lib/Mojolicious/Plugin/OpenAPI/Cors.pm blib/lib/Mojolicious/Plugin/OpenAPI/Cors.pm",
    "cp lib/Mojolicious/Plugin/OpenAPI.pm blib/lib/Mojolicious/Plugin/OpenAPI.pm",
    "cp lib/Mojolicious/Plugin/OpenAPI/SpecRenderer.pm blib/lib/Mojolicious/Plugin/OpenAPI/SpecRenderer.pm",
    "cp lib/JSON/Validator/OpenAPI/Mojolicious.pm blib/lib/JSON/Validator/OpenAPI/Mojolicious.pm",
    "cp lib/Mojolicious/Plugin/OpenAPI/Guides/Tutorial.pod blib/lib/Mojolicious/Plugin/OpenAPI/Guides/Tutorial.pod",
    "cp lib/Mojolicious/Plugin/OpenAPI/Guides/Swagger2.pod blib/lib/Mojolicious/Plugin/OpenAPI/Guides/Swagger2.pod",
    "cp lib/Mojolicious/Plugin/OpenAPI/Security.pm blib/lib/Mojolicious/Plugin/OpenAPI/Security.pm",
    "PERL_DL_NONLAZY=1 \"/usr/home/jkeenan/var/tad/testing/perl-5.31.0/bin/perl\" \"-MExtUtils::Command::MM\" \"-MTest::Harness\" \"-e\" \"undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')\" t/*.t",
    "t/00-basic.t .......................... ok",
    "t/authenticate.t ...................... ok",
    "t/autorender.t ........................ ok",
    "t/bundle.t ............................ ok",
    "t/coerce.t ............................ ok",
    "t/collectionformat.t .................. ok",
    "t/correct-order-of-paths.t ............ ok",
    "\$c->openapi->cors_simple() has been replaced by \$c->openapi->cors_exchange() at /usr/home/jkeenan/var/tad/testing/perl-5.31.0/.cpanm/work/1562787494.14114/Mojolicious-Plugin-OpenAPI-2.14/blib/lib/Mojolicious/Plugin/OpenAPI/Cors.pm line 85.",
    "\$c->openapi->cors_simple() has been replaced by \$c->openapi->cors_exchange() at /usr/home/jkeenan/var/tad/testing/perl-5.31.0/.cpanm/work/1562787494.14114/Mojolicious-Plugin-OpenAPI-2.14/blib/lib/Mojolicious/Plugin/OpenAPI/Cors.pm line 85.",
    "\$c->openapi->cors_simple() has been replaced by \$c->openapi->cors_exchange() at /usr/home/jkeenan/var/tad/testing/perl-5.31.0/.cpanm/work/1562787494.14114/Mojolicious-Plugin-OpenAPI-2.14/blib/lib/Mojolicious/Plugin/OpenAPI/Cors.pm line 85.",
    "t/cors.t .............................. ok",
    "t/custom-format.t ..................... ok",
    "t/default-value.t ..................... ok",
    "t/discriminator.t ..................... ok",
    "t/empty-string.t ...................... ok",
    "t/error-messages.t .................... ok",
    "t/example-array-of-hashes.t ........... ok",
    "t/headers.t ........................... ok",
    "t/invalid-json.t ...................... ok",
    "t/invalid-x-mojo-name.t ............... ok",
    "t/issue-24-booleans-in-yaml-schema.t .. ok",
    "t/issue-48-refs.t ..................... ok",
    "t/load-and-validate-spec.t ............ ok",
    "[2019-07-10 21:39:26.34278] [80131] [debug] GET \"/api\" (2c5d48d7)",
    "[2019-07-10 21:39:26.34320] [80131] [debug] Routing to a callback",
    "[2019-07-10 21:39:26.34358] [80131] [debug] 200 OK (0.000796s, 1256.281/s)",
    "[2019-07-10 21:39:26.40397] [80131] [debug] GET \"/api\" (7e9b0998)",
    "[2019-07-10 21:39:26.40418] [80131] [debug] Routing to a callback",
    "[2019-07-10 21:39:26.40447] [80131] [debug] 200 OK (0.000492s, 2032.520/s)",
    "t/load-from-app.t ..................... ok",
    "t/path-parameters.t ................... ok",
    "t/recursion.t ......................... ok",
    "t/ref-param.t ......................... ok",
    "t/register.t .......................... ok",
    "",
    "#   Failed test 'exact match for JSON Pointer \"/exception\"'",
    "#   at t/renderer.t line 34.",
    "#          got: 'no age!",
    "# Context:",
    "#   5: use Mojolicious::Lite;",
    "#   6: ",
    "#   7: my \$age = 43;",
    "#   8: get '/user' => sub {",
    "#   9:   my \$c = shift->openapi->valid_input or return;",
    "#   10:   die \"no age!\\n\" unless defined \$age;",
    "#   11:   \$c->render(openapi => {age => \$age});",
    "#   12:   },",
    "#   13:   'get_user';",
    "#   14: ",
    "#   15: post '/user' => sub {",
    "# Traceback (most recent call first):",
    "#   File \"t/renderer.t\", line 10, in \"main\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious.pm\", line 141, in \"Mojolicious\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious/Plugins.pm\", line 15, in \"Mojolicious::Plugins\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious/Plugins.pm\", line 18, in \"Mojolicious::Plugins\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious/Routes.pm\", line 97, in \"Mojolicious::Routes\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious/Routes.pm\", line 104, in \"Mojolicious::Routes\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious/Routes.pm\", line 45, in \"Mojolicious::Routes\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious/Routes.pm\", line 54, in \"Mojolicious::Routes\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious.pm\", line 132, in \"Mojolicious\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious.pm\", line 142, in \"Mojolicious\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious/Plugins.pm\", line 15, in \"Mojolicious::Plugins\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious.pm\", line 205, in \"Mojolicious\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious.pm\", line 205, in \"Mojolicious\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious/Plugins.pm\", line 15, in \"Mojolicious::Plugins\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious/Plugins.pm\", line 18, in \"Mojolicious::Plugins\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojolicious.pm\", line 147, in \"Mojolicious\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/Server.pm\", line 68, in \"Mojo::Server\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/EventEmitter.pm\", line 15, in \"Mojo::EventEmitter\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/Server/Daemon.pm\", line 104, in \"Mojo::Server::Daemon\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/EventEmitter.pm\", line 15, in \"Mojo::EventEmitter\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/Transaction/HTTP.pm\", line 60, in \"Mojo::Transaction::HTTP\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/Server/Daemon.pm\", line 219, in \"Mojo::Server::Daemon\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/Server/Daemon.pm\", line 200, in \"Mojo::Server::Daemon\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/EventEmitter.pm\", line 15, in \"Mojo::EventEmitter\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/IOLoop/Stream.pm\", line 110, in \"Mojo::IOLoop::Stream\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/IOLoop/Stream.pm\", line 58, in \"Mojo::IOLoop::Stream\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/Reactor/Poll.pm\", line 143, in \"Mojo::Reactor::Poll\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/Reactor/Poll.pm\", line 143, in \"Mojo::Reactor::Poll\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/Reactor/EV.pm\", line 46, in \"Mojo::Reactor::EV\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/Reactor/EV.pm\", line 25, in \"Mojo::Reactor::EV\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/Reactor/EV.pm\", line 25, in \"Mojo::Reactor::EV\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/IOLoop.pm\", line 134, in \"Mojo::IOLoop\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Mojo/UserAgent.pm\", line 65, in \"Mojo::UserAgent\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Test/Mojo.pm\", line 396, in \"Test::Mojo\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Test/Mojo.pm\", line 343, in \"Test::Mojo\"",
    "#   File \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/Test/Mojo.pm\", line 121, in \"Test::Mojo\"",
    "#   File \"t/renderer.t\", line 34, in \"main\"",
    "# '",
    "#     expected: 'no age!",
    "# '",
    "# Looks like you failed 1 test of 21.",
    "t/renderer.t .......................... ",
    "Dubious, test returned 1 (wstat 256, 0x100)",
    "Failed 1/21 subtests ",
    "t/reply-spec.t ........................ ok",
    "t/route-names.t ....................... ok",
    "t/security-disabled.t ................. ok",
    "t/security.t .......................... ok",
    "t/set-request.t ....................... ok",
    "t/spec.t .............................. ok",
    "t/swagger2.t .......................... ok",
    "t/tutorial.t .......................... ok",
    "t/v2-file.t ........................... ok",
    "Format rule for 'unknown' is missing at /home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/JSON/Validator.pm line 747.",
    "t/v2-formats.t ........................ ok",
    "t/v2-readonly.t ....................... ok",
    "t/v3-body.t ........................... ok",
    "t/v3-nullable.t ....................... ok",
    "t/v3.t ................................ ok",
    "t/validate.t .......................... ok",
    "t/x-mojo-placeholder.t ................ ok",
    "# YAML::XS 0.79",
    "t/yaml.t .............................. ok",
    "",
    "Test Summary Report",
    "-------------------",
    "t/renderer.t                        (Wstat: 256 Tests: 21 Failed: 1)",
    "  Failed test:  16",
    "  Non-zero exit status: 1",
    "t/v2-formats.t                      (Wstat: 0 Tests: 30 Failed: 0)",
    "  TODO passed:   15",
    "Files=43, Tests=626, 30 wallclock secs ( 0.10 usr  0.14 sys + 22.83 cusr  7.12 csys = 30.19 CPU)",
    "Result: FAIL",
  ],
  via => "App::cpanminus::reporter 0.17 (1.7044)",
}

Can you investigate?

Thank you very much. Jim Keenan

kiwiroy commented 5 years ago

Is this the upstream change in Mojo::Exception? Not specific to 5.31, FreeBSD AFAICT.

jkeenan commented 5 years ago

Is this the upstream change in Mojo::Exception? Not specific to 5.31, FreeBSD AFAICT.

I don't know yet. When testing the CPAN-river-3000, we end up having to investigate non-PASS reports in nearly 100 CPAN distributions. In our initial reports, we simply report the problem, the Perl version and the OS. We don't at that point try to nail down the source of the problem.

jhthorsen commented 5 years ago

It sounds like @kiwiroy has fixed this. Going to make a new release soon-ish.