raku-community-modules / URI

Raku realization of URI — Uniform Resource Identifiers handler
Artistic License 2.0
3 stars 14 forks source link

Build a URI from parts #27

Closed zoffixznet closed 5 years ago

zoffixznet commented 8 years ago

It would be nice if you could build a URI from parts (and have it encode stuff properly without your involvement). If this is already possible, then it should be documented.

So, say something like this would print the full URI:

    say URI.new('http://google.com/search').query-form(
        num  => 100,
        hl   => 'en',
        safe => 'off',
        q    => '<foobar>',
    );
    # prints http://google.com/search?num=100&hl=en&safe=off&q=%3Cfoobar%3E
ronaldxs commented 8 years ago

This has long been in the planning stage but has been held up by lack of progress on object attribute mutators which, AFAIK, still don't work. See https://github.com/perl6/roast/blob/master/S12-attributes/mutators.t

To explain a bit more the plan was that you should be able to say:

my URI $u .= new;
$u.scheme = 'http';
$u.host = 'doc.perl6.org';
$u.path = '/language/faq';
$u.query-form = num => 100, hl => 'en';
say $u;

And this is how I envisioned the future of creating / modifying URIs. It looks like the rakudo development team has been busy with other priorities. If anyone wants to petition the powers that be to make mutators a priority I would certainly be grateful for the help. There is, I believe, a related RT #124909. I am also open to other suggestions.

BTW there is also one more RT of relevance and interest: RT #126520

zoffixznet commented 8 years ago

I believe what you're requesting already works:

[17:08] <ZoffixGaming> m: class URI { has $.scheme is rw; has $.host is rw; method gist { "$!scheme://$!host" } }; my $u = URI.new; $u.scheme = 'http'; $u.host = 'doc.perl6.org'; say $u
[17:08] <camelia> rakudo-moar e2e23f: OUTPUT«http://doc.perl6.org␤»
ronaldxs commented 8 years ago

There was a relevant IRC discussion here http://irclog.perlgeek.de/perl6/2015-12-07#i_11674007. I believe something reasonable to be feasible with subsets at this point.

star-m: use IETF::RFC_Grammar::URI; subset ValidScheme of Str where /<IETF::RFC_Grammar::URI::scheme>/; class URI2 { has ValidScheme $.scheme is rw; has $.host is rw; method gist { "$!scheme://$!host" } }; my $u = URI2.new; $u.scheme = q!\\//!; $u.host = "?"; say $u
23:54   camelia     star-m 2015.09: OUTPUT«Type check failed in assignment to '$!scheme'; expected 'ValidScheme' but got 'Str'␤  in block <unit> at /tmp/EiEhZYitx4:1␤␤»
zostay commented 7 years ago

I've been thinking about this and also thinking about it in context of Jonathan's recent manifesto on simple accessors and mutators in Perl 6. I also have a prototype that adds mutators to the elements of URI here: https://github.com/zostay/uri/tree/mutators

I can finish the work here as is, but I'm considering replacing the is rw mutators with setter methods instead because:

  1. Many of the mutators require additional code to keep the state of the object consistent, which makes the mutators very heavy.
  2. Some of the accessors (e.g., $.port), are heavy accessors, e.g., returning either the real value or the default.
  3. The authority accessor/mutator is synthetic, which is a heavy accessor/mutator by definition.
  4. The $.path and $.authority values are tied together, so the value of one influences which values are permitted to keep a consistent URI object, which makes setting these attributes even more complicated than any I've finished coding yet.

Instead of my implementation, I want to suggest that the implementation of setters and getters be handled via multi-methods rather than as is rw accessor/mutator methods. That is, I think the implementation shown here below will be more Perlish than what is in my current WIP.

subset Port of UInt;
multi method port(URI:D: ) { ... }
multi method port(URI:D: Port $new) { ... }

subset Authority of Str where /^[ '' || <IETF::RFC_Grammar::URI::authority> ]$/;
multi method authority(URI:D: ) { ... }
multi method authority(URI:D: Authority:D $new) { ... }
ronaldxs commented 7 years ago

I like much of what I saw on your URI with mutators but was thinking of a different approach. You are extending the existing module by keeping the URI components as strings with subset restrictions. Perl 6 is more object oriented than Perl 5 and an authority might be viewed as a structured object with a host, port, host_type (like enum host-type <IPV4 IPV6 domain>), userinfo etc. "docs.perl6.org:8080" is a standard serialization of the object which has a parse method based on the grammar. There might be a use for JSON or other possible serializations.

I don't understand the connection between path and authority (did you mean scheme?).

The same approach could apply to path, whose object might have an underlying list of segments, and query. Your approach is simpler, more incremental and looks deliverable in the near future. I feel the possibility of a URI object hierarchy is at least worth mentioning for this issue and might be helpful to keep in mind during development of the string subset implementation.

zostay commented 7 years ago

According to RFC, values that are legal for path vary depending on whether the authority is present or not.

Making authority and path into objects with sub-components is a good idea. I see that as a refinement of what I've done, not as a different approach. I can incorporate that. I suppose query and query-form could be handled that way too by making something that stringifies to the query, but otherwise behaves similar to a Hash::MultiValue.

Though, this begins to run into the problems described in #33, which is that some of these changes will necessarily break certain contracts that existing users expect.

zostay commented 7 years ago

My mutators branch now contains a draft implementation of mutators for every component of the URI. These are only basically tested so far and I still need to tighten things up all over the place, but I'm pleased with how it's shaping up.

I have gone ahead and build a URI::Authority class to handle $!authority which helped eliminate some ugliness. This naturally led to some interesting consequences I hadn't considered before, e.g.,

my $uri = $u.parse('/foo/bar');
$uri.port(8000); # EXCEPTION: «X::URI::Authority::Invalid: Could not parse URI authority: :8000»
$uri.host("localhost"); # never run

# Better would be
$uri.authority = URI::Authority.new(host => 'localhost', port => 8000); 
# OR
$uri.authority("localhost:8000");
# OR
$uri.host("localhost"); # constructs Authority.new(:host('localhost'))
$uri.port(8000);

It might be slightly unintuitive to some that the order of operations is important here, so I will probably amend the message on X::URI::Authority::Invalid to give a hint like "Maybe you meant to set .host first?" That's just part of the tightening up that needs to happen.

I'm now considering how I want to tackle path/segments and then will move on to query/query-form.

I really appreciate any comments anyone wants to offer and the comments. Thanks, @ronaldxs, for you comments. They have been extremely helpful.

I really want to get this in order so I can get back to finishing up the reference implementation for P6WAPI, which is stuck on URI because I really need the mutators to avoid obfuscating some of the request manipulations I need to do over there.

zostay commented 7 years ago

I think the implementation I have been working on for making URI mutable is nearly complete. I need to update the documentation and make more tests, but I'm relatively happy with the way it works. The most controversial change it makes is a breaking change to query-form in that using it as a hash will always return lists of values by default. However, this behavior is configurable:

my $u = URI.parse("/home?foo=hello&foo=world&bar=bye");
dd $u.query-form<foo>; #> $("hello", "world")
dd $u.query-form<bar>; #> $("bye")

$u.query.hash-format = URI::Query::Singles; #URI::Query::Lists is default
dd $u.query-form<foo>; #> "world"
dd $u.query-form<bar>; #> "bye"

$u.query.hash-format = URI::Query::Mixed;
dd $u.query-form<foo>; #> $("hello", "world")
dd $u.query-form<bar>; #> "bye"

I considered making Mixed the default behavior, but I think the default behavior ought to be the safest, most robust available, which is clearly the Lists mode. I also considered avoiding the $.hash-format setting and returning a special URI::Query::Value instead that would act like a single value when used as a string or item or as a list, but that seemed dangerously magical to me.

zostay commented 7 years ago

I suppose the other controversial decision is that URI.query and URI.query-form are basically synonyms now. I'm thinking of deprecating query-form.

JJ commented 5 years ago

What would be the best way of doing this? Merging @zostay 's branch?

jonathanstowe commented 5 years ago

Well the PR has some test failures when merged to the current HEAD :

t/01.t                 (Wstat: 65280 Tests: 12 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 48 tests but ran 12.
t/authority.t          (Wstat: 256 Tests: 19 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/mutate.t             (Wstat: 256 Tests: 11 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output

It would be rebase the PR against master and fix the failures and the merge conflict in the README if @zostay has a minute to look at that?

jonathanstowe commented 5 years ago

Actually the fix for the test failures is trivial

diff --git a/lib/URI.pm b/lib/URI.pm
index d1856b8..90a8423 100644
--- a/lib/URI.pm
+++ b/lib/URI.pm
@@ -38,7 +38,7 @@ class Authority {
     multi method new(Authority:U: Match:D $auth) {
         my Str $userinfo = do with $auth<userinfo> { .Str } else { '' }
         my Str $host     = "$auth<host>".lc;
-        my UInt $port    = do with $auth<port> { .Int } else { Nil }
+        my UInt $port    = do with $auth<port> { .Int } else { Int }

         self.new(:$userinfo, :$host, :$port);
     }

So given the merge conflict isn't a biggy, we could merge but I'm not going to make the call as only a few people have actually commented on the change.

ronaldxs commented 5 years ago

Please also consider my comments on PR #34 from July 9, 2017.

jonathanstowe commented 5 years ago

Yep noted, would a way forward be to fix up the #34 as-is then bring it into a branch in this repository so it has a better visibility and people can fix up any infelicities that they see? I'll do that this afternoon if people think this is a good idea.

jonathanstowe commented 5 years ago

Okay I'll do it as I have that up to date now. I'll close the #34 and create a new PR on a branch here so that everyone can alter it as they wish.

Before merging I'd like to see a smoke test against modules that depend on this, and maybe at least a test to check that it does actually address @zoffixznet original suggestion.

jonathanstowe commented 5 years ago

Okay I've pushed all that to https://github.com/perl6-community-modules/uri/tree/zostay-mutators I held off on making a new PR as, frankly, the forking is all a bit much for me and I didn't want to make it in the wrong place.

ufobat commented 5 years ago

One year later... and I could really use the changes described here. What do we need to make some progress?

Altai-man commented 5 years ago

@ufobat For someone to volunteer their time and expertise to look at https://github.com/perl6-community-modules/uri/commits/zostay-mutators, possibly fix it, document and merge it along with tests, bump module version. Community modules do not have maintainers, so anyone is able to maintain it.

jonathanstowe commented 5 years ago

I'm just looking at rebasing the branch on the current master, but as it has been a while it may take some time to get it right.

jonathanstowe commented 5 years ago

I've got most of the tests working, the only part that is missing is the punycode fixes as that part of the code has been completely replaced. If I don't get it working this evening I'll push to the branch anyway so other people can look at it.

Altai-man commented 5 years ago

punycode fixes

Is a module used or a self-hosted implementation?

jonathanstowe commented 5 years ago

Anyhow I've just pushed a working rebase to https://github.com/perl6-community-modules/uri/commits/zostay-mutators -iit passes all the tests and should be good to merge, however it probably needs furter testing as I'm sure there have been fixes applied without tests.

Also the travis is failing for some reason that isn't clear.

Altai-man commented 5 years ago

@jonathanstowe The reason it fails is that Test::META uses https://modules.perl6.org/dist/Test::META:cpan:JSTOWE/META6.json#L18 URI module, and URI module tries to test itself with Test::META... So tests of Test::META fail https://travis-ci.org/perl6-community-modules/uri/builds/567616721#L396 like this and thus URI can't be installed, because its dependency was not installed.

jonathanstowe commented 5 years ago

Oh, so really that META test wants to be optional on the Test::META being installed.

jonathanstowe commented 5 years ago

Sorted

jonathanstowe commented 5 years ago

I've tested HTTP::UserAgent with the branch and it's fine. I'd recommend testing the branch with your favourite code before we merge.

jonathanstowe commented 5 years ago

Also tested with my (still) un-released Sofa which un-earthed the double escaping problem in the first place.

Will grep for URI in the other modules I have to hand and test them too.

jonathanstowe commented 5 years ago

Test::META ok LWP::Simple ok WebService::Soundcloud not ok :

Ambiguous call to 'AUTOGEN(URI: )'; these signatures all match:
:(URI:D: *%_)
:(URI: *%_)
  in method build-url at /home/jonathan/devel/perl6/modules/WebService-Soundcloud/lib/WebService/Soundcloud.pm (WebService::Soundcloud) line 660
  in method get-authorization-url at /home/jonathan/devel/perl6/modules/WebService-Soundcloud/lib/WebService/Soundcloud.pm (WebService::Soundcloud) line 364
  in block <unit> at t/030-get.t line 40

Fixing.

jonathanstowe commented 5 years ago

Fixed that. Also upgraded some warnings to hard deprecations.

jonathanstowe commented 5 years ago

It would be a great boon if some people could review the #44 (also take a look at the AppVeyor fail,) and/or test some more modules with that branch. I'm not going to merge this without some explicit feedback.

jonathanstowe commented 5 years ago

BTW These are the modules that declare URI as a dependency

(updated deps with actual anchor in the grep.)

jonathanstowe commented 5 years ago

WebService::AWS::Auth::V4 is a fail with this:

Use of Nil in string context
  in block  at /home/jonathan/.rakudobrew/moar-master/install/share/perl6/site/sources/339D6695E181E001033D0E5525B6025A9DAE1C73 (URI) line 78
# Failed test 'correctly canonicalized empty'
# at t/basic.t line 70
# Type check failed in assignment to $path; expected Str but got URI::Path (URI::Path.new(path => "/", seg...)
# Failed test 'correctly canonicalized nonempty query'
# at t/basic.t line 76
# Type check failed in assignment to $path; expected Str but got URI::Path (URI::Path.new(path => "/home/d...)
# Failed test 'correctly match canonical request test from aws'
# at t/basic.t line 93
# Type check failed in assignment to $path; expected Str but got URI::Path (URI::Path.new(path => "/", seg...)
# You planned 26 tests, but ran 18
# You failed 3 tests of 18
jonathanstowe commented 5 years ago

I can get that to work with a couple of small changes (which are backward compatible,) it also needed some changes regarding escaping as this had changed under it since it was last updated.

PR https://github.com/bradclawsie/WebService-AWS-Auth-V4/pull/4

jonathanstowe commented 5 years ago

PodCache::Module is a fail:

No such method 'IO' for invocant of type 'URI::Path'
  in block  at /home/jonathan/.zef/store/pod-render.git/02c49579afd206f85eb59113b30fc5344ff421f1/lib/PodCache/Processed.pm6 (PodCache::Processed) line 496
  in sub handle at /home/jonathan/.zef/store/pod-render.git/02c49579afd206f85eb59113b30fc5344ff421f1/lib/PodCache/Processed.pm6 (PodCache::Processed) line 484
  in sub handle at /home/jonathan/.zef/store/pod-render.git/02c49579afd206f85eb59113b30fc5344ff421f1/lib/PodCache/Processed.pm6 (PodCache::Processed) line 296
  in sub handle at /home/jonathan/.zef/store/pod-render.git/02c49579afd206f85eb59113b30fc5344ff421f1/lib/PodCache/Processed.pm6 (PodCache::Processed) line 230
  in sub handle at /home/jonathan/.zef/store/pod-render.git/02c49579afd206f85eb59113b30fc5344ff421f1/lib/PodCache/Processed.pm6 (PodCache::Processed) line 242
  in method process-pod at /home/jonathan/.zef/store/pod-render.git/02c49579afd206f85eb59113b30fc5344ff421f1/lib/PodCache/Processed.pm6 (PodCache::Processed) line 119
  in submethod TWEAK at /home/jonathan/.zef/store/pod-render.git/02c49579afd206f85eb59113b30fc5344ff421f1/lib/PodCache/Processed.pm6 (PodCache::Processed) line 47
  in method processed-instance at /home/jonathan/.zef/store/pod-render.git/02c49579afd206f85eb59113b30fc5344ff421f1/lib/PodCache/Render.pm6 (PodCache::Render) line 365
  in method process-name at /home/jonathan/.zef/store/pod-render.git/02c49579afd206f85eb59113b30fc5344ff421f1/lib/PodCache/Render.pm6 (PodCache::Render) line 395
  in method process-cache at /home/jonathan/.zef/store/pod-render.git/02c49579afd206f85eb59113b30fc5344ff421f1/lib/PodCache/Render.pm6 (PodCache::Render) line 383
  in method update-collection at /home/jonathan/.zef/store/pod-render.git/02c49579afd206f85eb59113b30fc5344ff421f1/lib/PodCache/Render.pm6 (PodCache::Render) line 527
  in block <unit> at t/150-html.t line 107

A simple Str coercion should fix.

https://github.com/finanalyst/pod-render/pull/3

jonathanstowe commented 5 years ago

Bailador is a fail (though I'm not sure it's entirely due to this change:) @ufobat would you like to take a look? It is probably just a Str coercion on some use of URI.path which should be safe with as-is as well as the branch in question:

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/foo", ...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/01-OO-route-existence.t line 44

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/foo", ...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/01-route-existence.t line 42

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/foo", ...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/03-OO-response-content.t line 38

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/foo", ...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/03-response-content.t line 35

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/", seg...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/04-OO-templates-mustache.t line 22

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/", seg...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/04-OO-templates.t line 20

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/a", se...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/04-templates-mustache.t line 18

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/a", se...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/04-templates.t line 16

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/cook1"...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/06-OO-cookies.t line 90

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/cook1"...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/06-cookies.t line 84

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/07-OO-errors.t line 23

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/07-errors.t line 19

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/08-OO-sessions.t line 42

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/08-sessions.t line 40

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/app/so...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/09-OO-nested-routes.t line 55

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

    # Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/x", se...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
    # 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/09-prefix.t line 60

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/11-error-templates.t line 25

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/foo", ...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/12-duplicate.t line 26

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# You planned 3 tests, but ran 1
# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/a", se...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/14-auto-head-generation-in-core.t line 31

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/file.t...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/15-file-serving.t line 15

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/16-test-headers.t line 19

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/file.t...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/17-test-content-type-handling-with-config.t line 35

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/file.t...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/17-test-content-type-handling.t line 32

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

# Type check failed in binding to parameter '$text'; expected Str but got URI::Path (URI::Path.new(path => "/foobar...)\n  in sub uri_decode at /home/jonathan/.zef/store/URI-Encode.git/5f4d747d38a16d1f8d1e572066ec9ef58323c9dc/lib/URI/Encode.pm6 (URI::Encode) line 34\n  in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 340\n  in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320\n
# 
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in block <unit> at t/18-serve-single-file.t line 25

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

    # You planned 17 tests, but ran 1
Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-api.t line 17

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-app.t line 16

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-class-app.t line 17

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-controllers.t line 17

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-echo.t line 16

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-err.t line 16

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block  at t/30-examples-gradual.t line 21
  in block <unit> at t/30-examples-gradual.t line 15

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-layout.t line 22

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block  at t/30-examples-pastebin.t line 24
  in block <unit> at t/30-examples-pastebin.t line 18

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-postapp.t line 16

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-prefix.t line 17

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-request.t line 17

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-reuse-inherit-app.t line 17

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-reuse-mixed-app.t line 17

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-reuse-shared-app.t line 17

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

Tried to get the result of a broken Promise
  in sub get-psgi-response at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 80
  in sub run-psgi-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/Test.pm (Bailador::Test) line 49
  in block <unit> at t/30-examples-templates.t line 22

Original exception:
    Type check failed in binding to parameter '$uri'; expected Str but got Any (Any)
      in method log-request at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 248
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 355
      in method dispatch at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 337
      in block  at /home/jonathan/.zef/store/Bailador-0.0.18.tar.gz/Bailador-0.0.18/lib/Bailador/App.pm (Bailador::App) line 320

===> Testing [FAIL]: Bailador:ver<0.0.18>:auth<github:Bailador>
ufobat commented 5 years ago

@jonathanstowe will check it within the next couple of days!

ufobat commented 5 years ago

Bailador is fixed in Version 0.0.19

Altai-man commented 5 years ago

Checked Bailador as fixed. Checked WWW::DuckDuckGo <- depends on HTTP::UserAgent and works just fine, the same for WWW::SilverGoldBull(at least it installs).

jonathanstowe commented 5 years ago

Nice one. Let's think about merging it midweek.

jonathanstowe commented 5 years ago

WebService::SOP was a fail, fixed by explicit coercions PR is https://github.com/yowcow/p6-WebService-SOP/pull/12

jonathanstowe commented 5 years ago

I'm going to merge #44 today. I propose closing this and dealing with the inevitable flurry of small issues separately.

JJ commented 5 years ago

Just do it. I was going to check what's the matter with the doc repo, but I guess I'll fix it afterwards. Thanks for your work.

jonathanstowe commented 5 years ago

I'm going to put a ticket to fix up the README as all the merging has left it with inconsistent markdown style which I didn't want to deal with.