Mailing List Archive

Smoke tests - summary of things which don't work against 5.80
I've been smoke testing most stuff in the Catalyst repository against
Runtime 5.80 to see what has been broken. I'm hoping to expand to a
point where I'm testing everything in the repos soonish..

http://catalyst-smokes.bobtfish.net/

From my last run, there are some interesting conclusions. Most of
the failures seem to be groupable, meaning there are two or three big
things stopping things working at the moment - the most obvious ones
being:

- Not being able to find mk_accessors
- Not having NEXT loaded

There are also a couple of common failures in several of the HTTP
engine modules which may indicate real bugs in 5.80 trunk, and a
couple of other failures that look 'real' - although I haven't looked
into these any deeper.

I've included a useful snippet from the test output below, for each
of the modules which don't quite work (but don't fail due to
dependencies or some such).

Catalyst-Action-REST:
# Error: Could not load class (Test::Serialize) because : Could
not load class (Catalyst::Action::Deserialize) because : Can't locate
object method "mk_accessors" via package "Catalyst::Request::REST"
at /home/chimps/repos/Catalyst-Action-REST/0.60/trunk/t/../lib/
Catalyst/Request/REST.pm line 45.

Catalyst-Action-RenderView:
[error] Caught exception in TestApp->end "Can't locate object method
"execute" via package "NEXT" (perhaps you forgot to load "NEXT"?) at /
home/chimps/repos/trunk/Catalyst-Action-RenderView/lib/Catalyst/
Action/RenderView.pm line 18."

Catalyst-Authentication-Credential-HTTP:
t/live_app...........Can't locate object method "setup" via package
"NEXT" (perhaps you forgot to load "NEXT"?) at /home/chimps/repos/
trunk/Catalyst-Plugin-Authentication/lib/Catalyst/Plugin/
Authentication.pm line 204.

Catalyst-Authentication-Store-DBIx-Class:
t/03-authtest...................Could not load class (TestApp)
because : Can't locate object method "setup" via package
"NEXT" (perhaps you forgot to load "NEXT"?) at /home/chimps/repos/
trunk/Catalyst-Plugin-Authentication/lib/Catalyst/Plugin/
Authentication.pm line 204.

Catalyst-Controller-FormBuilder:
t/03-attr_param....Could not load class (TestApp) because : Couldn't
instantiate component "TestApp::Controller::Base", "Can't locate
object method "new" via package "NEXT" (perhaps you forgot to load
"NEXT"?) at /home/chimps/repos/trunk/Catalyst-Controller-FormBuilder/
lib/Catalyst/Controller/FormBuilder.pm line 12." at (eval 198) line 3

Catalyst-Controller-PathArgs:
t/002_main....Could not load class (TestApp) because : Can't call
method "reverse" on an undefined value at /home/chimps/repos/Catalyst-
Runtime/5.80/trunk/lib/Catalyst/DispatchType/Chained.pm line 102.

Catalyst-Controller-SOAP:
# Could not load class (Catalyst::Action::SOAP::RPCEndpoint)
because : Can't locate object method "mk_accessors" via package
"Catalyst::Action::SOAP" at /home/chimps/repos/Catalyst-Controller-
SOAP/1.0/trunk/lib/Catalyst/Action/SOAP.pm line 6.

Catalyst-Controller-WrapCGI:
t/wrap-cgi..........Could not load class (TestApp) because : Can't
call method "has_package_symbol" without a package or object
reference at /home/chimps/repos/Catalyst-Runtime/5.80/trunk/lib/
Catalyst/ClassData.pm line 20.

Catalyst-Engine-Apache:
Won't run in my smoke test harness, as it requires 'TestApp', but
when run manually I get the following failures which appear to show
up real bugs:

t/live_component_controller_action_streaming (Wstat: 512 Tests: 10
Failed: 2)
t/live_engine_request_parameters (Wstat: 256 Tests: 35
Failed: 1)
t/live_engine_response_cookies (Wstat: 512 Tests: 15
Failed: 2)

Catalyst-Engine-HTTP-POE:
t/live_component_controller_action_streaming (Wstat: 512 Tests: 10
Failed: 2)
t/live_engine_request_parameters (Wstat: 256 Tests: 30
Failed: 1)
t/live_engine_response_cookies (Wstat: 512 Tests: 15
Failed: 2)
t/live_plugin_loaded (Wstat: 256 Tests: 5
Failed: 1)

Catalyst-Engine-HTTP-Prefork:
t/live_component_controller_action_streaming (Wstat: 512 Tests: 10
Failed: 2)
t/live_engine_request_parameters (Wstat: 256 Tests: 40
Failed: 1)
t/live_engine_response_cookies (Wstat: 512 Tests: 15
Failed: 2)
t/live_http11_request_absolute (Wstat: 65280 Tests: 2
Failed: 2)
t/live_http11_request_chunked (Wstat: 512 Tests: 5
Failed: 2)
t/live_http11_request_pipelined (Wstat: 1024 Tests: 4
Failed: 4)
t/live_http11_response_100continue (Wstat: 65280 Tests: 3
Failed: 2)
Parse errors: Bad plan. You planned 10 tests but ran 3.
t/live_http11_response_keepalive (Wstat: 512 Tests: 4
Failed: 2)

Catalyst-Helper-AuthDBIC:
t/02-usage (Wstat: 1024 Tests: 5 Failed: 4)
Failed tests: 2-5
Non-zero exit status: 4

Catalyst-Log-Log4perl:
t/10-basic......2/14 Can't call method "response" on an undefined
value at t/10-basic.t line 42.

Catalyst-Model-Akismet:
# Error: Couldn't instantiate component
"TestApp::Model::Akismet", "Can't locate object method
"linearized_isa" via package "Moose::Meta::Role" at /home/chimps/
repos/Catalyst-Runtime/5.80/trunk/lib/Catalyst/ClassData.pm line 23."
at (eval 3) line 2

Catalyst-Model-DBI-SQL-Library:
# Error: Can't locate object method "mk_accessors" via package
"Catalyst::Model::DBI::SQL::Library" at /home/chimps/repos/trunk/
Catalyst-Model-DBI-SQL-Library/lib/Catalyst/Model/DBI/SQL/Library.pm
line 11.

Catalyst-Model-Net-Amazon:
t/01use (Wstat: 512 Tests: 3 Failed: 2)
Failed tests: 2-3

Catalyst-Model-PayPal-IPN:
t/pod-coverage (Wstat: 256 Tests: 1 Failed: 1)

Catalyst-Model-S3:
# The object isn't a 'Net::Amazon::S3' it's a 'TestApp::Model::S3'

Catalyst-Model-Search:
[error] Caught exception in TestApp::C::Plucene->query_items "Can't
take log of 0 at /home/chimps/perl5/lib/perl5/Plucene/Search/
Similarity.pm line 61."

Catalyst-Plugin-Authentication:
t/live_app_realms...........Could not load class (AuthRealmTestApp)
because : Can't locate object method "setup" via package
"NEXT" (perhaps you forgot to load "NEXT"?) at /home/chimps/repos/
trunk/Catalyst-Plugin-Authentication/lib/Catalyst/Plugin/
Authentication.pm line 204.

Catalyst-Plugin-Authentication-Store-DBIC:
t/06auth-hashed..............Could not load class (TestApp) because :
Can't use string ("TestApp") as a HASH ref while "strict refs" in use
at (eval 265) line 13.

Catalyst-Plugin-Authorization-ACL:
t/live_app.........Could not load class (ACLTestApp) because : Can't
use string ("ACLTestApp") as a HASH ref while "strict refs" in use at
(eval 278) line 13.
t/more_live_app....Could not load class (ACLTestApp2) because : Can't
locate object method "tree" via package "Catalyst::Dispatcher" at /
home/chimps/Catalyst-Plugin-Authorization-ACL/lib/Catalyst/Plugin/
Authorization/ACL/Engine.pm line 121

Catalyst-Plugin-Cache:
[error] Caught exception in CacheTestApp::Controller::Root->bar "Not
an ARRAY reference at /home/chimps/repos/trunk/Catalyst-Plugin-Cache/
lib/Catalyst/Plugin/Cache/Curried.pm line 40."

Catalyst-Plugin-HTML-Widget:
Appears broken against new HTML::Widget:
[error] Caught exception in TestApp->nameless_noresult "Undefined
subroutine &HTML::Widget::Result::attributes called at /home/chimps/
perl5/lib/perl5/HTML/Widget/

Catalyst-Plugin-OrderedParams:
t/04params (Wstat: 1024 Tests: 7 Failed: 4)

Catalyst-Plugin-Server:
t/040_faultcode........Could not load class (TestApp) because : Can't
locate object method "setup_dispatcher" via package "NEXT" (perhaps
you forgot to load "NEXT"?) at ../lib/Catalyst/Plugin/Server.pm line 16.

Catalyst-Plugin-Session-AuthOnly:
t/basic....1/? mk_classdata() is a class method, not an object method
at t/basic.t line 39

Catalyst-Plugin-Session-PerUser:
[error] Caught exception in engine "Can't use an undefined value as
an ARRAY reference at /home/chimps/repos/Catalyst-Runtime/5.80/trunk/
lib/Catalyst.pm line 1329

Catalyst-Plugin-Static-Simple:
t/11serve_static....Could not load class (TestApp) because : Can't
locate object method "setup" via package "NEXT" (perhaps you forgot
to load "NEXT"?) at /home/chimps/repos/trunk/Catalyst-Plugin-Static-
Simple/lib/Catalyst/Plugin/Static/Simple.pm line 85.

Catalyst-Plugin-Unicode:
[error] Caught exception in engine "Can't locate object method
"prepare_parameters" via package "NEXT" (perhaps you forgot to load
"NEXT"?) at /home/chimps/repos/trunk/Catalyst-Plugin-Unicode/lib/
Catalyst/Plugin/Unicode.pm line 20."

Hope this is some help / use to someone :)

Cheers
t0m

_______________________________________________
Catalyst-dev mailing list
Catalyst-dev@lists.scsys.co.uk
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst-dev
Re: Smoke tests - summary of things which don't work against 5.80 [ In reply to ]
On Mon, Oct 27, 2008 at 3:50 PM, Tomas Doran <bobtfish@bobtfish.net> wrote:
> I've been smoke testing most stuff in the Catalyst repository against
> Runtime 5.80 to see what has been broken. I'm hoping to expand to a point
> where I'm testing everything in the repos soonish..
>
> http://catalyst-smokes.bobtfish.net/
>
> From my last run, there are some interesting conclusions. Most of the
> failures seem to be groupable, meaning there are two or three big things
> stopping things working at the moment - the most obvious ones being:
>
> - Not being able to find mk_accessors
> - Not having NEXT loaded
>
> There are also a couple of common failures in several of the HTTP engine
> modules which may indicate real bugs in 5.80 trunk, and a couple of other
> failures that look 'real' - although I haven't looked into these any deeper.
>
> I've included a useful snippet from the test output below, for each of the
> modules which don't quite work (but don't fail due to dependencies or some
> such).
>
> Catalyst-Action-REST:
> # Error: Could not load class (Test::Serialize) because : Could not
> load class (Catalyst::Action::Deserialize) because : Can't locate object
> method "mk_accessors" via package "Catalyst::Request::REST" at
> /home/chimps/repos/Catalyst-Action-REST/0.60/trunk/t/../lib/Catalyst/Request/REST.pm
> line 45.
>

What's the preferred fix for this? Is mk_accessors just something to
implicitly inherit from Class::Accessor and be done with it?

I can bake a release to get this working for 5.80

-J

_______________________________________________
Catalyst-dev mailing list
Catalyst-dev@lists.scsys.co.uk
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst-dev
Re: Smoke tests - summary of things which don't work against 5.80 [ In reply to ]
On 27 Oct 2008, at 23:26, J. Shirley wrote:
> What's the preferred fix for this? Is mk_accessors just something to
> implicitly inherit from Class::Accessor and be done with it?
>
> I can bake a release to get this working for 5.80

We could just go through everything and explicitly inherit from
Class::Accessor and throw out NEXT and explicitly use Class::C3, but
that still means that people installing 5.80 will break all their
apps (at a minimum they'll have to bump all their plugins etc - there
is a distinct possibility that user code is also relying on this).

Therefore I think that's a baad solution, and anything common like
this should be fixed in core (at least to a level where back compat
works, even if we want to emit warnings asking the user to fix their
code).

Cheers
t0m


_______________________________________________
Catalyst-dev mailing list
Catalyst-dev@lists.scsys.co.uk
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst-dev
Re: Smoke tests - summary of things which don't work against 5.80 [ In reply to ]
I've done a new smoke run with a pre-release version of rafl's
Class::C3::Adopt::NEXT added to HARNESS_PERL_SWITCHES.

This has fixed:
Action::RenderView
Plugin::Authentication
Authentication::Store::DBIx::Class
Plugin::Static::Simple
Model::DBIC::Schema

and a few others.. rafl++

Remaining issues that I know about:

1) Class::Accessor::Fast compatibility methods for MX::Emulate::CAF
(needs a couple of small MOP refactorings - groditti)

2) Finish off docs & etc for Class::C3::Adopt::NEXT (rafl + I
volunteered to write some POD)

3) Common engine test failures - details in my original email that
this is a reply to. (Nobody?)

4) Catalyst-Plugin-Authorization-ACL - Can't locate object method
"tree" via package "Catalyst::Dispatcher" (Nobody?)

5) Anything which inherits from
Catalyst::Component::InstancePerContext (which is a Moose role) is
broken. This doesn't work any more (but used to). The example for
this case is Catalyst::Model::Akismet.

I also looked into Catalyst::Controller::WrapCGI, this works, but has
broken tests as it imports a 'meta' function into a controller..

Cheers
t0m


_______________________________________________
Catalyst-dev mailing list
Catalyst-dev@lists.scsys.co.uk
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst-dev
Re: Smoke tests - summary of things which don't work against 5.80 [ In reply to ]
On 19 Nov 2008, at 23:13, Tomas Doran wrote:
>
> 5) Anything which inherits from
> Catalyst::Component::InstancePerContext (which is a Moose role) is
> broken. This doesn't work any more (but used to). The example for
> this case is Catalyst::Model::Akismet.

To follow this one up - after looking through the repository, and
using google code search, I'd conclude that C::M::Akismet is the only
module 'in the wild' which inherits from
Component::InstancePerContext, and that as such it's broken (given
that the POD for InstancePerContext specifies the correct way to use
it, which still works).

Cheers
t0m


_______________________________________________
Catalyst-dev mailing list
Catalyst-dev@lists.scsys.co.uk
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst-dev
Re: Smoke tests - summary of things which don't work against 5.80 [ In reply to ]
There's also some issue with Catalyst::Model::DBIC::Schema. I haven't been
able to produce a test failure for the core distribution, but running
MojoMojo test suite with Cat-58 from trunk displays a failure:
t/c/page_edit...............2/6 [error] Caught exception in
MojoMojo::Controller::PageAdmin->auto "Can't locate object method
"find_or_create" via package "MojoMojo::Model::DBIC::Preference" at
/Users/marcus/Source/mojomojo/blib/lib/MojoMojo.pm line 99."

With regards
Marcus Ramberg


On Thu, Nov 20, 2008 at 12:23 AM, Tomas Doran <bobtfish@bobtfish.net> wrote:

> On 19 Nov 2008, at 23:13, Tomas Doran wrote:
>
>>
>> 5) Anything which inherits from Catalyst::Component::InstancePerContext
>> (which is a Moose role) is broken. This doesn't work any more (but used to).
>> The example for this case is Catalyst::Model::Akismet.
>>
>
> To follow this one up - after looking through the repository, and using
> google code search, I'd conclude that C::M::Akismet is the only module 'in
> the wild' which inherits from Component::InstancePerContext, and that as
> such it's broken (given that the POD for InstancePerContext specifies the
> correct way to use it, which still works).
>
>
> Cheers
> t0m
>
>
> _______________________________________________
> Catalyst-dev mailing list
> Catalyst-dev@lists.scsys.co.uk
> http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst-dev
>
Re: Smoke tests - summary of things which don't work against 5.80 [ In reply to ]
Florian pointed out on IRC that there are issues with
CatalystX::Imports which could also prove a problem for darkpan code.

The issue is basically that Class::MOP doesn't like considering anon
subs in the symbol table as methods, and is demonstrated by
CX::Imports' test fails..

Not sure if this is a common use-case.. However the issue might be
tricky to fix, but (at worst) it would be possible if people use'd a
backcompat module into controllers which needed it...

I've included the relevant section of the irc discussion below,
lightly edited to make it more succinct / readable.

Cheers
t0m

21:28 < rafl> did we already decide if *foo = sub : Path(/foo/bar)
{ ... }; not working anymore on 5.80 is a bug or not?
21:30 < rafl> or rather sub foo : ... { } *foo = sub { };
21:30 < rafl> CX::Imports uses something like that to wrap actions
21:38 <@groditi> i don't think that's a bug
21:38 <@groditi> people who have code that breaks will disagree though
21:39 <@groditi> that seems like undefined behavior
21:40 < rafl> i'm undecided about this. i don't really care if it
breaks imports or something similar on cpan - i can fix that. i'm
just worried about breaking darkpan code using a similar technique.
21:45 < rafl> the reason for that failing on 5.8 is that cmop says an
anon coderef in the symbol table is not a method
21:49 <@t0m> does taking Sub::Name to the coderef before stuffing it
in the typeglob make CMOP dtrt? I'm thinking that you could inspect
the symbol table for the relevant package and 'fix' any anon subs at
some point before MOP has a fit..
21:49 <@groditi> rafl: all that needs is sub::name
21:49 <@groditi> t0m: ditto. yeah. it's a common issue, i had to
Sub::name everything in DBIC to get it to play nice with MOP modifiers
21:50 < rafl> right, but naming the wrapper like the real action
isn't the right thing to do in cx-imports
21:50 <@groditi> also: modifiers do not work in controllers, which is
not surprising if you know how it all works, but may grab newbies by
surprise. next::method need to be used in controllers
21:51 < rafl> or i was being stupid when i tried to fix it that way.
i can't remember the details :-/
21:52 <@t0m> what is stopping you from Sub::Naming them on import,
but then removing the symbols on end of scope?
21:53 <@t0m> But I was thinking of a generic solution for darkpan,
which is a harder problem as you quite possibly don't have an import
method that is going to get called :/
21:54 < rafl> i don't know. i should revisit that problem. i just
wanted to point out that we break back-compat somewhat


_______________________________________________
Catalyst-dev mailing list
Catalyst-dev@lists.scsys.co.uk
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst-dev