From: Tomas Doran Date: Wed, 25 Nov 2009 22:32:11 +0000 (+0000) Subject: Fix warnings from ScriptRunner X-Git-Tag: 5.80014_02~32 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=1beae7ed73fa0e91a39ab4b1b8b181aee4039535;hp=0a33c6d347b1f545a3b573eee8056fae6ccb0829;p=catagits%2FCatalyst-Runtime.git Fix warnings from ScriptRunner --- diff --git a/TODO.scripts b/TODO.scripts index 1096520..99f8300 100644 --- a/TODO.scripts +++ b/TODO.scripts @@ -1,5 +1,3 @@ * $ARGV[0] has slipped to $ARGV[1] in ::Test -* ScriptRunner tests for MyApp::Script::DoesNotCompile * Sort out help so that it shows what you fucked up. * Fix horrible hacking around MX::Getopt's help display - probably by fixing MX::Getopt. -* Tests for ::Create diff --git a/lib/Catalyst/ScriptRunner.pm b/lib/Catalyst/ScriptRunner.pm index 63d153d..de3c8bb 100644 --- a/lib/Catalyst/ScriptRunner.pm +++ b/lib/Catalyst/ScriptRunner.pm @@ -11,10 +11,12 @@ sub run { lib->import(File::Spec->catdir($FindBin::Bin, '..', 'lib')); + warn("load $classtoload or Catalyst::Script::$scriptclass"); + # FIXME - Error handling / reporting - if ( eval { Class::MOP::load_class($classtoload) } ) { - } - else { + unless ( eval { Class::MOP::load_class($classtoload) } ) { + warn("Could not load $classtoload - falling back to Catalyst::Script::$scriptclass : $@\n") + if $@ !~ /Can't locate/; $classtoload = "Catalyst::Script::$scriptclass"; Class::MOP::load_class($classtoload); } diff --git a/t/aggregate/unit_core_scriptrunner.t b/t/aggregate/unit_core_scriptrunner.t index 1dfe255..d9af3bc 100644 --- a/t/aggregate/unit_core_scriptrunner.t +++ b/t/aggregate/unit_core_scriptrunner.t @@ -1,6 +1,6 @@ use strict; use warnings; -use Test::More tests => 5; +use Test::More; use FindBin qw/$Bin/; use lib "$Bin/../lib"; @@ -13,4 +13,12 @@ is Catalyst::ScriptRunner->run('ScriptTestApp', 'Bar'), 'ScriptTestApp::Script:: is Catalyst::ScriptRunner->run('ScriptTestApp', 'Baz'), 'Catalyst::Script::Baz', 'Script existing only in Catalyst'; # +1 test for the params passed to new_with_options in t/lib/Catalyst/Script/Baz.pm +{ + my $warnings = ''; + local $SIG{__WARN__} = sub { $warnings .= shift }; + is 'Catalyst::Script::CompileTest', Catalyst::ScriptRunner->run('ScriptTestApp', 'CompileTest'); + like $warnings, qr/Does not compile/; + like $warnings, qr/Could not load ScriptTestApp::Script::CompileTest - falling back to Catalyst::Script::CompileTest/; +} +done_testing;