[Catalyst-commits] r12833 - in
Catalyst-Runtime/5.80/branches/uri_for_utf8: . lib
lib/Catalyst lib/Catalyst/Engine lib/Catalyst/Script t
t/aggregate t/lib t/lib/TestApp/Action
t/lib/TestApp/Controller/Action t/lib/TestApp/Model
t/lib/TestAppEncoding/Controller
t0m at dev.catalyst.perl.org
t0m at dev.catalyst.perl.org
Mon Feb 8 20:58:19 GMT 2010
Author: t0m
Date: 2010-02-08 20:58:18 +0000 (Mon, 08 Feb 2010)
New Revision: 12833
Added:
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/catalyst_test_utf8.t
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/deprecated_test_import.t
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_component_generating.t
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp/Action/TestExtraArgsAction.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp/Model/Generating.pm
Modified:
Catalyst-Runtime/5.80/branches/uri_for_utf8/
Catalyst-Runtime/5.80/branches/uri_for_utf8/Changes
Catalyst-Runtime/5.80/branches/uri_for_utf8/Makefile.PL
Catalyst-Runtime/5.80/branches/uri_for_utf8/TODO
Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Component.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Controller.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Engine.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Engine/CGI.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Engine/HTTP.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Runtime.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Script/FastCGI.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Script/Server.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Test.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/live_component_controller_action_action.t
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/live_component_controller_action_chained.t
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_engine_cgi-prepare_path.t
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_script_server.t
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_uri_for.t
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_load_catalyst_test.t
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp/Controller/Action/Action.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestAppEncoding/Controller/Root.pm
Catalyst-Runtime/5.80/branches/uri_for_utf8/t/live_component_controller_context_closure.t
Log:
r12570 at t0mlaptop (orig r12535): rafl | 2010-01-06 15:59:41 +0000
Clarify comment.
r12589 at t0mlaptop (orig r12554): t0m | 2010-01-09 15:37:00 +0000
Don't screw over people using --detach, <sigh>
r12590 at t0mlaptop (orig r12555): t0m | 2010-01-09 15:57:27 +0000
Back out r12493, use \Q instead
r12591 at t0mlaptop (orig r12556): t0m | 2010-01-09 15:58:18 +0000
Changelog Adopt::NEXT warnings
r12592 at t0mlaptop (orig r12557): t0m | 2010-01-09 16:43:25 +0000
Correctly pass argv option into Catalyst::Engine::HTTP
r12593 at t0mlaptop (orig r12558): t0m | 2010-01-09 16:54:08 +0000
Un stupid
r12594 at t0mlaptop (orig r12559): t0m | 2010-01-09 17:38:59 +0000
Bump dep
r12608 at t0mlaptop (orig r12573): t0m | 2010-01-09 18:22:02 +0000
Bump version of ::Role::WithOverloading
r12610 at t0mlaptop (orig r12575): t0m | 2010-01-09 19:01:59 +0000
require autoclean once only
r12622 at t0mlaptop (orig r12587): rafl | 2010-01-10 02:00:03 +0000
Version 5.80017.
r12631 at t0mlaptop (orig r12596): t0m | 2010-01-10 14:22:15 +0000
Apply patch to clarify uri_for action from Octavian Rasnita on list
r12640 at t0mlaptop (orig r12605): t0m | 2010-01-11 21:11:05 +0000
Deprecate bare imports of Catalyst::Test - either use an app name or don't run the import method. As-per r12564
r12648 at t0mlaptop (orig r12613): t0m | 2010-01-11 23:18:08 +0000
Fix URI bug masked by HTTP::Request::AsCGI
r12652 at t0mlaptop (orig r12617): rafl | 2010-01-12 21:37:31 +0000
Fix a deprecation warning in the tests.
r12653 at t0mlaptop (orig r12618): rafl | 2010-01-12 21:37:39 +0000
canonical() is a no-op for the base uri.
r12654 at t0mlaptop (orig r12619): rafl | 2010-01-12 21:37:46 +0000
Version 5.80018.
r12669 at t0mlaptop (orig r12634): rafl | 2010-01-14 02:26:03 +0000
Depend on n:c 0.12 to work on perl >= 5.11.2.
r12673 at t0mlaptop (orig r12638): rafl | 2010-01-14 05:21:24 +0000
Exception stuff is fixed for a while now.
r12674 at t0mlaptop (orig r12639): rafl | 2010-01-14 05:45:09 +0000
Only set up the leakchecker for the tests that need it.
That way we avoid the useless Devel::Cycle glob warnings.
r12676 at t0mlaptop (orig r12641): dandv | 2010-01-14 08:15:10 +0000
Typo fix
r12678 at t0mlaptop (orig r12643): dandv | 2010-01-14 09:23:50 +0000
Cosmetic: wrapped long code line
r12690 at t0mlaptop (orig r12655): dandv | 2010-01-14 23:52:44 +0000
Passing test case for RT #53678 - Catalyst::Test::get currently doesn't decode the response body octets
r12691 at t0mlaptop (orig r12656): karpet | 2010-01-15 06:35:30 +0000
in what case is a numeric comparison called for? I cannot think of one. Is this the best way to test?
r12698 at t0mlaptop (orig r12663): t0m | 2010-01-15 16:39:55 +0000
Clarify that it's an app, not a ctx here
r12713 at t0mlaptop (orig r12678): rafl | 2010-01-18 09:00:20 +0000
Depend on a namespace::clean that isn't broken on <= 5.8.8.
r12725 at t0mlaptop (orig r12690): rafl | 2010-01-19 16:07:45 +0000
Merge branch 'action_args'
* action_args:
And another minor tweak.
Some more doc tweaking.
tweaked docs based on IRC suggestions
added documentation for the configuration option "action_args".
Allow passing extra args to action constructors using action_args config.
Add tests for passing extra arguments to action constructors.
Create branch action_args
r12726 at t0mlaptop (orig r12691): rafl | 2010-01-19 16:08:22 +0000
Changelog action_args.
r12728 at t0mlaptop (orig r12693): aristotle | 2010-01-19 21:41:23 +0000
fix $c->error doc in Catalyst.pm POD
r12761 at t0mlaptop (orig r12726): aCiD2 | 2010-01-25 01:03:52 +0000
Improve the documentation about -Home and how Catalyst finds the home path for apps
r12762 at t0mlaptop (orig r12727): rafl | 2010-01-25 18:59:52 +0000
Revert "in what case is a numeric comparison called for? I cannot think of one. Is this the best way to test?"
This reverts commit 279b2f1abb0a8e056b8c905e5a4ecb66537ee194.
r12763 at t0mlaptop (orig r12728): rafl | 2010-01-25 19:00:17 +0000
Remove apparently useless Component::BUILDARGS conditional.
r12778 at t0mlaptop (orig r12743): t0m | 2010-01-27 20:12:46 +0000
Clarrify debug documentation
r12779 at t0mlaptop (orig r12744): t0m | 2010-01-27 20:15:52 +0000
Fix failing test related to missing g in regex
r12781 at t0mlaptop (orig r12746): t0m | 2010-01-27 21:04:17 +0000
Fix / => %2F in uri_for so that it only works for action objects as previously advertised as this has been screwing people. Also fix multiple / => %2F conversion in the same arg/capture
r12793 at t0mlaptop (orig r12758): t0m | 2010-01-28 15:47:31 +0000
Fix paths with URI encoding as the first path part
r12794 at t0mlaptop (orig r12759): t0m | 2010-01-28 18:15:10 +0000
And test the non root app case
r12804 at t0mlaptop (orig r12769): t0m | 2010-01-28 23:28:15 +0000
Changelog up to date
r12805 at t0mlaptop (orig r12770): rafl | 2010-01-29 00:16:42 +0000
Changelog tweaking.
r12806 at t0mlaptop (orig r12771): rafl | 2010-01-29 00:16:48 +0000
Version 5.80019.
r12845 at t0mlaptop (orig r12810): rafl | 2010-02-04 05:50:05 +0000
Merge branch 'expand_modules'
* expand_modules:
Allow models and components to specify the names of any components they generate
Branching to allow components to specify any modules they may have created
r12846 at t0mlaptop (orig r12811): rafl | 2010-02-04 06:18:46 +0000
Version 5.80020.
Property changes on: Catalyst-Runtime/5.80/branches/uri_for_utf8
___________________________________________________________________
Name: svk:merge
- 1c72fc7c-9ce4-42af-bf25-3bfe470ff1e8:/local/Catalyst/trunk/Catalyst-Runtime:9763
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.70/branches/compres:7999
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.70/branches/context_go:8001
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.70/trunk:8533
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/Catalyst-Test-Updates:8363
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/add_captures_to_visit:9546
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/aggregate_more:11803
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/better_scripts:12074
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/disable_regex_fallback:11456
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/fix_path_info_decoding:12089
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/index_default_fuckage:10646
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/moose:7911
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/namespace_handling_refactor:10655
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/uri_encode_captures_andor_args_take2:11811
4ad37cd2-5fec-0310-835f-b3785c72a374:/branches/Catalyst-ChildOf:4443
4ad37cd2-5fec-0310-835f-b3785c72a374:/branches/Catalyst-Runtime-jrockway:5857
4ad37cd2-5fec-0310-835f-b3785c72a374:/branches/Catalyst-component-setup:4320
4ad37cd2-5fec-0310-835f-b3785c72a374:/branches/Catalyst-docs:4325
4ad37cd2-5fec-0310-835f-b3785c72a374:/branches/current/Catalyst-Runtime:5142
4ad37cd2-5fec-0310-835f-b3785c72a374:/trunk/Catalyst:4483
4ad37cd2-5fec-0310-835f-b3785c72a374:/trunk/Catalyst-Runtime:6165
6d45476b-5895-46b8-b13a-8b969fa34c98:/local/Catalyst-Runtime-better_scripts:11331
8a9521aa-ff93-41d6-9f87-b05cafcdab40:/local/cat/Catalyst-Runtime/5.80/trunk:8157
d7608cd0-831c-0410-93c0-e5b306c3c028:/local/Catalyst/Catalyst-Runtime:8339
d7608cd0-831c-0410-93c0-e5b306c3c028:/local/Catalyst/Catalyst-Runtime-jrockway:8342
e56d974f-7718-0410-8b1c-b347a71765b2:/local/Catalyst-Runtime:6511
e56d974f-7718-0410-8b1c-b347a71765b2:/local/Catalyst-Runtime-current:10442
+ 1c72fc7c-9ce4-42af-bf25-3bfe470ff1e8:/local/Catalyst/trunk/Catalyst-Runtime:9763
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.70/branches/compres:7999
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.70/branches/context_go:8001
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.70/trunk:8533
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/Catalyst-Test-Updates:8363
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/add_captures_to_visit:9546
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/aggregate_more:11803
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/better_scripts:12074
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/disable_regex_fallback:11456
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/fix_path_info_decoding:12089
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/index_default_fuckage:10646
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/moose:7911
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/namespace_handling_refactor:10655
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/branches/uri_encode_captures_andor_args_take2:11811
4ad37cd2-5fec-0310-835f-b3785c72a374:/Catalyst-Runtime/5.80/trunk:12811
4ad37cd2-5fec-0310-835f-b3785c72a374:/branches/Catalyst-ChildOf:4443
4ad37cd2-5fec-0310-835f-b3785c72a374:/branches/Catalyst-Runtime-jrockway:5857
4ad37cd2-5fec-0310-835f-b3785c72a374:/branches/Catalyst-component-setup:4320
4ad37cd2-5fec-0310-835f-b3785c72a374:/branches/Catalyst-docs:4325
4ad37cd2-5fec-0310-835f-b3785c72a374:/branches/current/Catalyst-Runtime:5142
4ad37cd2-5fec-0310-835f-b3785c72a374:/trunk/Catalyst:4483
4ad37cd2-5fec-0310-835f-b3785c72a374:/trunk/Catalyst-Runtime:6165
6d45476b-5895-46b8-b13a-8b969fa34c98:/local/Catalyst-Runtime-better_scripts:11331
8a9521aa-ff93-41d6-9f87-b05cafcdab40:/local/cat/Catalyst-Runtime/5.80/trunk:8157
d7608cd0-831c-0410-93c0-e5b306c3c028:/local/Catalyst/Catalyst-Runtime:8339
d7608cd0-831c-0410-93c0-e5b306c3c028:/local/Catalyst/Catalyst-Runtime-jrockway:8342
e56d974f-7718-0410-8b1c-b347a71765b2:/local/Catalyst-Runtime:6511
e56d974f-7718-0410-8b1c-b347a71765b2:/local/Catalyst-Runtime-current:10442
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/Changes
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/Changes 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/Changes 2010-02-08 20:58:18 UTC (rev 12833)
@@ -1,19 +1,86 @@
# This file documents the revision history for Perl extension Catalyst.
+5.80020 2010-02-04 06:51:18
+
+ New features:
+ - Allow components to specify additional components to be set up by
+ overriding the expand_modules method. (Oliver Charles)
+
+5.80019 2010-01-29 01:04:09
+
+ Bug fixed:
+ - Calls to $c->uri_for with private paths as strings (e.g.
+ $c->uri_for('controller/action', 'arg1', 'arg2') ) no longer have
+ / encoded to %2F. This is due to $c->uri_for('static', 'css/foo', $bar)
+ which should not be encoded.
+ Calls with an action object (rather than a string), or uri_for action
+ will still encode / in args and captures to %2F
+
+ - The above noted / => %2F encoding in uri_for_action or uri_for with
+ an action object has been fixed to not just encode the first slash in
+ any set of args/captures.
+
+ - nginx and lighttpd FCGI requests with URI encoded sections as the first
+ path part have been fixed to operate correctly.
+
+ - A source of bogus warnings in Catalyst::Component::BUILDARGS has been
+ removed.
+
Documentation:
+ - Improve the documentation about -Home and how Catalyst finds the home path
+ for applications.
+ - Various minor typo fixes.
+
+ New features:
+ - Allow passing additional arguments to action constructors.
+
+5.80018 2010-01-12 22:24:20
+
+ Bug fixed:
+ - Call ->canonical on URI derived from $ENV{REQUEST_URI} to get
+ paths correctly decoded. This bug was previously hidden by a bug
+ in HTTP::Request::AsCGI.
+
+ Documentation:
+ - Clarify that uri_for_action works on private paths, with example.
+ - Clarify documentation about debug
+
+ Deprecations:
+ - Saying use Catalyst::Test; (without an application name or () to stop
+ the importer running is now deprecated and will issue a warning.
+ You should be saying use Catalyst::Test ();
+
+5.80017 2010-01-10 02:27:29
+
+ Documentation:
- Fix docs for ->forward method when passed a class name - this should
be a component name (e.g. View::HTML, not a full class name, like
MyApp::View::HTML).
Bug fixes:
- - Remove the erroneous --detach option from Catalyst::Script::FastCGI
- - --daemon option to Catalyst::Script::FastCGI is fixed.
+ - --daemon and -d options to Catalyst::Script::FastCGI are fixed.
- Fix the debug dump for applications which use Catalyst::Plugin::Session
(RT#52898)
- Fix regression in the case where mod_rewrite is being used to rewrite
requests into a path below your application base introduced with the
%2F related fixes in 5.80014_02.
+ - Do not crash on SIGHUP if Catalyst::Engine::HTTP->run is not passed the
+ argv key in the options hash.
+ - Correctly pass the arguments to Catalyst::Script::Server through to
+ Catalyst::Engine::HTTP->run so that the server can restart itself
+ with the correct options on SIGHUP.
+ - Require new MooseX::MethodAttributes to be compatible with Moose
+ versions >= 0.93_01
+ - Require new MooseX::Role::WithOverloading to be compatible with Moose
+ versions >= 0.93_01
+ Cleanups:
+ - Stop suppressing warnings from Class::C3::Adopt::NEXT now that most plugins
+ have been updated to not use NEXT. If you get warnings then please upgrade
+ your components or log a bug with the component author if an upgrade is
+ not available. The Class::C3::Adopt::NEXT documentation contains information
+ about how to suppress the warnings in your application if you need to.
+
5.80016 2009-12-11 23:23:33
Bug fixes:
@@ -404,7 +471,7 @@
B::Hooks::OP::Check::StashChange
- Fix the unattached chain debug table for endpoints with no
parents at all.
- - Turn of test aggregation by default. Only aggregate if the
+ - Turn off test aggregation by default. Only aggregate if the
AGGREGATE_TESTS environment variable is set and a recent
Test::Aggregate is available.
- Bump to MooseX::MethodAttributes 0.09, to gain the
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/Makefile.PL
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/Makefile.PL 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/Makefile.PL 2010-02-08 20:58:18 UTC (rev 12833)
@@ -17,14 +17,13 @@
requires 'List::MoreUtils';
requires 'namespace::autoclean' => '0.09';
-requires 'namespace::clean';
-requires 'namespace::autoclean';
+requires 'namespace::clean' => '0.13';
requires 'B::Hooks::EndOfScope' => '0.08';
requires 'MooseX::Emulate::Class::Accessor::Fast' => '0.00903';
requires 'Class::MOP' => '0.95';
requires 'Moose' => '0.93';
-requires 'MooseX::MethodAttributes::Inheritable' => '0.17';
-requires 'MooseX::Role::WithOverloading' => '0.03';
+requires 'MooseX::MethodAttributes::Inheritable' => '0.19';
+requires 'MooseX::Role::WithOverloading' => '0.05';
requires 'Carp';
requires 'Class::C3::Adopt::NEXT' => '0.07';
requires 'CGI::Simple::Cookie';
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/TODO
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/TODO 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/TODO 2010-02-08 20:58:18 UTC (rev 12833)
@@ -5,12 +5,6 @@
Test app: http://github.com/bobtfish/catalyst-app-bug-go_chain/tree/master
- - Bricas' Exception blog post
-
- http://bricas.vox.com/library/post/catalyst-exceptionclass.html
-
- Broken by recent exception refactoring
-
# Compatibility warnings to add:
- $self->config should warn as config should only ever be called as a
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Component.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Component.pm 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Component.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -5,6 +5,7 @@
use Class::MOP::Object;
use Catalyst::Utils;
use Class::C3::Adopt::NEXT;
+use Devel::InnerPackage ();
use MRO::Compat;
use mro 'c3';
use Scalar::Util 'blessed';
@@ -84,8 +85,6 @@
} elsif (Class::MOP::is_class_loaded($_[0]) &&
$_[0]->isa('Catalyst') && ref($_[1]) eq 'HASH') {
$args = $_[1];
- } elsif ($_[0] == $_[1]) {
- $args = $_[1];
} else {
$args = +{ @_ };
}
@@ -149,6 +148,11 @@
. " did not override Catalyst::Component::process" );
}
+sub expand_modules {
+ my ($class, $component) = @_;
+ return Devel::InnerPackage::list_packages( $component );
+}
+
__PACKAGE__->meta->make_immutable;
1;
@@ -157,7 +161,7 @@
=head1 METHODS
-=head2 new($c, $arguments)
+=head2 new($app, $arguments)
Called by COMPONENT to instantiate the component; should return an object
to be stored in the application's component hash.
@@ -168,9 +172,10 @@
If this method is present (as it is on all Catalyst::Component subclasses,
it is called by Catalyst during setup_components with the application class
-as $c and any config entry on the application for this component (for example,
+as $app and any config entry on the application for this component (for example,
in the case of MyApp::Controller::Foo this would be
C<< MyApp->config('Controller::Foo' => \%conf >>).
+
The arguments are expected to be a hashref and are merged with the
C<< __PACKAGE__->config >> hashref before calling C<< ->new >>
to instantiate the component.
@@ -206,6 +211,13 @@
Merges two hashes together recursively, giving right-hand precedence.
Alias for the method in L<Catalyst::Utils>.
+=head2 $c->expand_modules( $setup_component_config )
+
+Return a list of extra components that this component has created. By default,
+it just looks for a list of inner packages of this component
+
+=cut
+
=head1 OPTIONAL METHODS
=head2 ACCEPT_CONTEXT($c, @args)
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Controller.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Controller.pm 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Controller.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -255,9 +255,15 @@
my $class = (exists $args{attributes}{ActionClass}
? $args{attributes}{ActionClass}[0]
: $self->_action_class);
+ Class::MOP::load_class($class);
- Class::MOP::load_class($class);
- return $class->new( \%args );
+ my $action_args = $self->config->{action_args};
+ my %extra_args = (
+ %{ $action_args->{'*'} || {} },
+ %{ $action_args->{ $args{name} } || {} },
+ );
+
+ return $class->new({ %extra_args, %args });
}
sub _parse_attrs {
@@ -440,6 +446,26 @@
Sets 'path_prefix', as described below.
+=head2 action_args
+
+Allows you to set constructor arguments on your actions. You can set arguments
+globally (for all actions of the controller) and specifically (for a single
+action). This is particularly useful when using C<ActionRole>s
+(L<Catalyst::Controller::ActionRole>) and custom C<ActionClass>es.
+
+ __PACKAGE__->config(
+ action_args => {
+ '*' => { globalarg1 => 'hello', globalarg2 => 'goodbye' },
+ 'specific_action' => { customarg => 'arg1' },
+ },
+ );
+
+In the case above the action class associated with C<specific_action> would get
+passed the following arguments, in addition to the normal action constructor
+arguments, when it is instantiated:
+
+ (globalarg1 => 'hello', globalarg2 => 'goodbye', customarg => 'arg1')
+
=head1 METHODS
=head2 BUILDARGS ($app, @args)
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Engine/CGI.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Engine/CGI.pm 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Engine/CGI.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -167,9 +167,9 @@
# incorrect.
if (substr($req_uri, 0, 1) ne '/') {
my ($match) = $req_uri =~ m|^([^/]+)|;
- my $idx = index($path_info, $match) + length($match);
- my $path_info_part = substr($path_info, 0, $idx);
- substr($req_uri, 0, length($match), $path_info_part);
+ my ($path_info_part) = $path_info =~ m|^(.*?\Q$match\E)|;
+ substr($req_uri, 0, length($match), $path_info_part)
+ if $path_info_part;
}
$path_info = $req_uri;
}
@@ -196,7 +196,7 @@
my $query = $ENV{QUERY_STRING} ? '?' . $ENV{QUERY_STRING} : '';
my $uri = $scheme . '://' . $host . '/' . $path . $query;
- $c->request->uri( bless \$uri, $uri_class );
+ $c->request->uri( bless(\$uri, $uri_class)->canonical );
# set the base URI
# base must end in a slash
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Engine/HTTP.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Engine/HTTP.pm 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Engine/HTTP.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -339,7 +339,7 @@
use Config;
$ENV{PERL5LIB} .= join $Config{path_sep}, @INC;
- exec $^X, $0, @{ $options->{argv} };
+ exec $^X, $0, @{ $options->{argv} || [] };
}
exit;
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Engine.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Engine.pm 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Engine.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -280,7 +280,8 @@
</html>
- # Trick IE
+ # Trick IE. Old versions of IE would display their own error page instead
+ # of ours if we'd give it less than 512 bytes.
$c->res->{body} .= ( ' ' x 512 );
# Return 500
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Runtime.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Runtime.pm 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Runtime.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -7,7 +7,7 @@
# Remember to update this in Catalyst as well!
-our $VERSION='5.80016';
+our $VERSION='5.80020';
$VERSION = eval $VERSION;
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Script/FastCGI.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Script/FastCGI.pm 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Script/FastCGI.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -27,7 +27,7 @@
traits => [qw(Getopt)],
isa => Bool,
is => 'ro',
- cmd_aliases => 'd',
+ cmd_aliases => [qw/d detach/], # Eww, detach is here as we fucked it up.. Deliberately not documented
documentation => 'Daemonize (go into the background)',
);
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Script/Server.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Script/Server.pm 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Script/Server.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -190,6 +190,7 @@
$self->port,
$self->host,
{
+ argv => $self->ARGV,
map { $_ => $self->$_ } qw/
fork
keepalive
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Test.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Test.pm 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst/Test.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -103,6 +103,12 @@
sub import {
my ($self, $class, $opts) = @_;
+ Carp::carp(
+qq{Importing Catalyst::Test without an application name is deprecated:\n
+Instead of saying: use Catalyst::Test;
+say: use Catalyst::Test (); # If you don't want to import a test app right now.
+or say: use Catalyst::Test 'MyApp'; # If you do want to import a test app.\n\n})
+ unless $class;
$import->($self, '-all' => { class => $class });
$opts = {} unless ref $opts eq 'HASH';
$default_host = $opts->{default_host} if exists $opts->{default_host};
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst.pm 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/lib/Catalyst.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -78,7 +78,7 @@
# Remember to update this in Catalyst::Runtime as well!
-our $VERSION = '5.80016';
+our $VERSION = '5.80020';
$VERSION = eval $VERSION;
sub import {
@@ -243,6 +243,9 @@
settings override the application, with <MYAPP>_DEBUG having the highest
priority.
+This sets the log level to 'debug' and enables full debug output on the
+error screen. If you only want the latter, see L<< $c->debug >>.
+
=head2 -Engine
Forces Catalyst to use a specific engine. Omit the
@@ -262,6 +265,14 @@
the name will be replaced with underscores, e.g. MyApp::Web should use
MYAPP_WEB_HOME. If both variables are set, the MYAPP_HOME one will be used.
+If none of these are set, Catalyst will attempt to automatically detect the
+home directory. If you are working in a development envirnoment, Catalyst
+will try and find the directory containing either Makefile.PL, Build.PL or
+dist.ini. If the application has been installed into the system (i.e.
+you have done C<make install>), then Catalyst will use the path to your
+application module, without the .pm extension (ie, /foo/MyApp if your
+application was installed at /foo/MyApp.pm)
+
=head2 -Log
use Catalyst '-Log=warn,fatal,error';
@@ -331,7 +342,7 @@
need to do something like:
$c->forward('foo');
- die $c->error if $c->error;
+ die join "\n", @{ $c->error } if @{ $c->error };
Or make sure to always return true values from your actions and write
your code like this:
@@ -923,6 +934,8 @@
=back
+The first three also set the log level to 'debug'.
+
Calling C<< $c->debug(1) >> has no effect.
=cut
@@ -1246,8 +1259,19 @@
$path .= '/';
}
+ undef($path) if (defined $path && $path eq '');
+
+ my $params =
+ ( scalar @args && ref $args[$#args] eq 'HASH' ? pop @args : {} );
+
+ carp "uri_for called with undef argument" if grep { ! defined $_ } @args;
+ s/([^$URI::uric])/$URI::Escape::escapes{$1}/go for @args;
+ if (blessed $path) { # Action object only.
+ s|/|%2F|g for @args;
+ }
+
if ( blessed($path) ) { # action object
- my $captures = [ map { s|/|%2F|; $_; }
+ my $captures = [ map { s|/|%2F|g; $_; }
( scalar @args && ref $args[0] eq 'ARRAY'
? @{ shift(@args) }
: ()) ];
@@ -1338,6 +1362,20 @@
You can also pass in a Catalyst::Action object, in which case it is passed to
C<< $c->uri_for >>.
+Note that although the path looks like a URI that dispatches to the wanted action, it is not a URI, but an internal path to that action.
+
+For example, if the action looks like:
+
+ package MyApp::Controller::Users;
+
+ sub lst : Path('the-list') {}
+
+You can use:
+
+ $c->uri_for_action('/users/lst')
+
+and it will create the URI /users/the-list.
+
=back
=cut
@@ -2219,8 +2257,11 @@
}
for my $component (@comps) {
- $class->components->{ $component } = $class->setup_component($component);
- for my $component ($class->expand_component_module( $component, $config )) {
+ my $instance = $class->components->{ $component } = $class->setup_component($component);
+ my @expanded_components = $instance->can('expand_modules')
+ ? $instance->expand_modules( $component, $config )
+ : $class->expand_component_module( $component, $config );
+ for my $component (@expanded_components) {
next if $comps{$component};
$class->_controller_init_base_classes($component); # Also cover inner packages
$class->components->{ $component } = $class->setup_component($component);
@@ -2953,6 +2994,8 @@
obra: Jesse Vincent
+Octavian Rasnita
+
omega: Andreas Marienborg
Oleg Kostyuk <cub.uanic at gmail.com>
Added: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/catalyst_test_utf8.t
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/catalyst_test_utf8.t (rev 0)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/catalyst_test_utf8.t 2010-02-08 20:58:18 UTC (rev 12833)
@@ -0,0 +1,27 @@
+use strict;
+use warnings;
+use FindBin qw/$Bin/;
+use lib "$Bin/../lib";
+
+use Test::More;
+# "binmode STDOUT, ':utf8'" is insufficient, see http://code.google.com/p/test-more/issues/detail?id=46#c1
+binmode Test::More->builder->output, ":utf8";
+binmode Test::More->builder->failure_output, ":utf8";
+
+use Catalyst::Test 'TestAppEncoding';
+
+plan skip_all => 'This test does not run live'
+ if $ENV{CATALYST_SERVER};
+
+{
+ # Test for https://rt.cpan.org/Ticket/Display.html?id=53678
+ # Catalyst::Test::get currently returns the raw octets, but it
+ # would be more useful if it decoded the content based on the
+ # Content-Type charset, as Test::WWW::Mechanize::Catalyst does
+ use utf8;
+ my $body = get('/utf8_non_ascii_content');
+ utf8::decode($body);
+ is $body, 'ʇsʎlɐʇɐɔ', 'Catalyst::Test::get returned content correctly UTF-8 encoded';
+}
+
+done_testing;
Added: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/deprecated_test_import.t
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/deprecated_test_import.t (rev 0)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/deprecated_test_import.t 2010-02-08 20:58:18 UTC (rev 12833)
@@ -0,0 +1,16 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Catalyst::Test ();
+
+my $warn;
+{
+ local $SIG{__WARN__} = sub { $warn = shift; };
+ Catalyst::Test->import();
+}
+ok $warn;
+like $warn, qr/deprecated/;
+
+done_testing;
+
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/live_component_controller_action_action.t
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/live_component_controller_action_action.t 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/live_component_controller_action_action.t 2010-02-08 20:58:18 UTC (rev 12833)
@@ -10,7 +10,7 @@
BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 1; }
-use Test::More tests => 42 * $iters;
+use Test::More;
use Catalyst::Test 'TestApp';
if ( $ENV{CAT_BENCHMARK} ) {
@@ -147,4 +147,25 @@
);
}
+ {
+ ok( my $response = request('http://localhost/action_action_seven'),
+ 'Request' );
+ ok( $response->is_success, 'Response Successful 2xx' );
+ is( $response->content_type, 'text/plain', 'Response Content-Type' );
+ is( $response->header('X-Catalyst-Action'),
+ 'action_action_seven', 'Test Action' );
+ is(
+ $response->header('X-Test-Class'),
+ 'TestApp::Controller::Action::Action',
+ 'Test Class'
+ );
+ is( $response->header('X-TestExtraArgsAction'), '42,23', 'Extra args get passed to action contstructor' );
+ like(
+ $response->content,
+ qr/^bless\( .* 'Catalyst::Request' \)$/s,
+ 'Content is a serialized Catalyst::Request'
+ );
+ }
}
+
+done_testing;
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/live_component_controller_action_chained.t
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/live_component_controller_action_chained.t 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/live_component_controller_action_chained.t 2010-02-08 20:58:18 UTC (rev 12833)
@@ -1087,7 +1087,7 @@
# Just check that the path matches, as who the hell knows or cares
# where the app is based (live tests etc)
ok( index($content, $path) > 1, 'uri can round trip through uri_for' )
- or diag "'$content' does not contain '$path'";
+ or diag("Expected $path, got $content");
}
}
Added: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_component_generating.t
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_component_generating.t (rev 0)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_component_generating.t 2010-02-08 20:58:18 UTC (rev 12833)
@@ -0,0 +1,10 @@
+use Test::More tests => 3;
+use strict;
+use warnings;
+
+use lib 't/lib';
+use TestApp;
+
+ok(TestApp->model('Generating'), 'knows about generating model');
+ok(TestApp->model('Generated'), 'knows about the generated model');
+is(TestApp->model('Generated')->foo, 'foo', 'can operate on generated model');
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_engine_cgi-prepare_path.t
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_engine_cgi-prepare_path.t 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_engine_cgi-prepare_path.t 2010-02-08 20:58:18 UTC (rev 12833)
@@ -62,8 +62,33 @@
is ''.$r->base, 'http://www.foo.com/';
}
+# nginx example from espent with path /"foo"
+{
+ my $r = get_req (
+ PATH_INFO => '"foo"',
+ SCRIPT_NAME => '/',
+ REQUEST_URI => '/%22foo%22',
+ );
+ is ''.$r->path, '%22foo%22';
+ is ''.$r->uri, 'http://www.foo.com/%22foo%22';
+ is ''.$r->base, 'http://www.foo.com/';
+}
+# nginx example from espent with path /"foo" and the app based at /oslobilder
+{
+ my $r = get_req (
+ PATH_INFO => 'oslobilder/"foo"',
+ SCRIPT_NAME => '/oslobilder/',
+ REQUEST_URI => '/oslobilder/%22foo%22',
+ );
+ is ''.$r->path, '%22foo%22';
+ is ''.$r->uri, 'http://www.foo.com/oslobilder/%22foo%22';
+ is ''.$r->base, 'http://www.foo.com/oslobilder/';
+}
+
+
+
# FIXME - Test proxy logic
# - Test query string
# - Test non standard port numbers
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_script_server.t
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_script_server.t 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_script_server.t 2010-02-08 20:58:18 UTC (rev 12833)
@@ -89,6 +89,8 @@
};
# First element of RUN_ARGS will be the script name, which we don't care about
shift @TestAppToTestScripts::RUN_ARGS;
+ # Mangle argv into the options..
+ $resultarray->[-1]->{argv} = $argstring;
is_deeply \@TestAppToTestScripts::RUN_ARGS, $resultarray, "is_deeply comparison " . join(' ', @$argstring);
}
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_uri_for.t
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_uri_for.t 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_core_uri_for.t 2010-02-08 20:58:18 UTC (rev 12833)
@@ -1,16 +1,17 @@
use strict;
use warnings;
-
-use Test::More tests => 20;
+use FindBin qw/$Bin/;
+use lib "$FindBin::Bin/../lib";
+use Test::More;
use URI;
-use_ok('Catalyst');
+use_ok('TestApp');
my $request = Catalyst::Request->new( {
base => URI->new('http://127.0.0.1/foo')
} );
-
-my $context = Catalyst->new( {
+my $dispatcher = TestApp->dispatcher;
+my $context = TestApp->new( {
request => $request,
namespace => 'yada',
} );
@@ -143,3 +144,21 @@
is_deeply($query_params_base, $query_params_test,
"uri_for() doesn't mess up query parameter hash in the caller");
}
+
+
+{
+ my $path_action = $dispatcher->get_action_by_path(
+ '/action/path/six'
+ );
+
+ # 5.80018 is only encoding the first of the / in the arg.
+ is(
+ Catalyst::uri_for( $context, $path_action, 'foo/bar/baz' )->as_string,
+ 'http://127.0.0.1/action/path/six/foo%2Fbar%2Fbaz',
+ 'Escape all forward slashes in args as %2F'
+ );
+}
+
+
+done_testing;
+
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_load_catalyst_test.t
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_load_catalyst_test.t 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/aggregate/unit_load_catalyst_test.t 2010-02-08 20:58:18 UTC (rev 12833)
@@ -3,9 +3,7 @@
use strict;
use warnings;
-use FindBin;
-use lib "$FindBin::Bin/../lib";
-use Test::More tests => 61;
+use Test::More;
use FindBin qw/$Bin/;
use lib "$Bin/../lib";
use Catalyst::Utils;
@@ -26,7 +24,7 @@
### make sure we're not trying to connect to a remote host -- these are local tests
local $ENV{CATALYST_SERVER};
-use_ok( $Class );
+use Catalyst::Test ();
### check available methods
{ ### turn of redefine warnings, we'll get new subs exported
@@ -155,3 +153,4 @@
request(GET('/dummy'), []);
} 'array additional param to request method ignored';
+done_testing;
Added: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp/Action/TestExtraArgsAction.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp/Action/TestExtraArgsAction.pm (rev 0)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp/Action/TestExtraArgsAction.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -0,0 +1,17 @@
+package TestApp::Action::TestExtraArgsAction;
+
+use Moose;
+use namespace::autoclean;
+
+extends 'Catalyst::Action';
+
+has [qw/extra_arg another_extra_arg/] => (is => 'ro');
+
+after execute => sub {
+ my ($self, $controller, $ctx) = @_;
+ $ctx->response->header('X-TestExtraArgsAction' => join q{,} => $self->extra_arg, $self->another_extra_arg);
+};
+
+__PACKAGE__->meta->make_immutable;
+
+1;
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp/Controller/Action/Action.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp/Controller/Action/Action.pm 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp/Controller/Action/Action.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -3,7 +3,15 @@
use strict;
use base 'TestApp::Controller::Action';
-__PACKAGE__->config( actions => { action_action_five => { ActionClass => '+Catalyst::Action::TestBefore' } } );
+__PACKAGE__->config(
+ actions => {
+ action_action_five => { ActionClass => '+Catalyst::Action::TestBefore' },
+ },
+ action_args => {
+ '*' => { extra_arg => 42 },
+ action_action_seven => { another_extra_arg => 23 },
+ },
+);
sub action_action_one : Global : ActionClass('TestBefore') {
my ( $self, $c ) = @_;
@@ -38,4 +46,9 @@
$c->forward('TestApp::View::Dump::Request');
}
+sub action_action_seven : Global : ActionClass('~TestExtraArgsAction') {
+ my ( $self, $c ) = @_;
+ $c->forward('TestApp::View::Dump::Request');
+}
+
1;
Added: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp/Model/Generating.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp/Model/Generating.pm (rev 0)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp/Model/Generating.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -0,0 +1,22 @@
+package TestApp::Model::Generating;
+use Moose;
+extends 'Catalyst::Model';
+
+sub BUILD {
+ Class::MOP::Class->create(
+ 'TestApp::Model::Generated' => (
+ methods => {
+ foo => sub { 'foo' }
+ }
+ )
+ );
+}
+
+sub expand_modules {
+ return ('TestApp::Model::Generated');
+}
+
+__PACKAGE__->meta->make_immutable;
+no Moose;
+
+1;
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp.pm 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestApp.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -20,7 +20,7 @@
TestApp->config( name => 'TestApp', root => '/some/dir' );
-if (eval { Class::MOP::load_class('CatalystX::LeakChecker'); 1 }) {
+if ($::setup_leakchecker && eval { Class::MOP::load_class('CatalystX::LeakChecker'); 1 }) {
with 'CatalystX::LeakChecker';
has leaks => (
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestAppEncoding/Controller/Root.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestAppEncoding/Controller/Root.pm 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/lib/TestAppEncoding/Controller/Root.pm 2010-02-08 20:58:18 UTC (rev 12833)
@@ -8,7 +8,11 @@
sub binary : Local {
my ($self, $c) = @_;
- $c->res->body(do { open(my $fh, '<', $c->path_to('..', '..', 'catalyst_130pix.gif')) or die $!; binmode($fh); local $/ = undef; <$fh>; });
+ $c->res->body(do {
+ open(my $fh, '<', $c->path_to('..', '..', 'catalyst_130pix.gif')) or die $!;
+ binmode($fh);
+ local $/ = undef; <$fh>;
+ });
}
sub binary_utf8 : Local {
@@ -20,6 +24,23 @@
$c->res->body($str);
}
+# called by t/aggregate/catalyst_test_utf8.t
+sub utf8_non_ascii_content : Local {
+ use utf8;
+ my ($self, $c) = @_;
+
+ my $str = 'ʇsʎlɐʇɐɔ'; # 'catalyst' flipped at http://www.revfad.com/flip.html
+ ok utf8::is_utf8($str), '$str is in UTF8 internally';
+
+ # encode $str into a sequence of octets and turn off the UTF-8 flag, so that
+ # we don't get the 'Wide character in syswrite' error in Catalyst::Engine
+ utf8::encode($str);
+ ok !utf8::is_utf8($str), '$str is a sequence of octets (byte string)';
+
+ $c->res->body($str);
+}
+
+
sub end : Private {
my ($self,$c) = @_;
}
Modified: Catalyst-Runtime/5.80/branches/uri_for_utf8/t/live_component_controller_context_closure.t
===================================================================
--- Catalyst-Runtime/5.80/branches/uri_for_utf8/t/live_component_controller_context_closure.t 2010-02-07 13:17:11 UTC (rev 12832)
+++ Catalyst-Runtime/5.80/branches/uri_for_utf8/t/live_component_controller_context_closure.t 2010-02-08 20:58:18 UTC (rev 12833)
@@ -13,6 +13,8 @@
use FindBin;
use lib "$FindBin::Bin/lib";
+BEGIN { $::setup_leakchecker = 1 }
+
use Catalyst::Test 'TestApp';
{
More information about the Catalyst-commits
mailing list