I've recently started Doing The Right Thing and have starting fleshing out the test suite for one of my projects.
In the last day or three I've added Test::WWW::Mechanize::Catalyst based tests. I seem to be having a problem with the value set for <base> in the tests; I'm using: <base href="[%c.req.base%]" /> and all of my links are of the form: <a href="somewhere/interesting">...</a> When I run the foo_server.pl script, viewing the page source reveals that the <base> is (as expected) set to 'http://localhost:3000'. When I'm running Mechanize based tests the base appears to always be set to the URL that's being requested. This causes problems with things like $mech->links_ok(). I've had no day-to-day problems using <base> and relative hrefs; I went this route because I didn't want to have to add [%c.req.base%] to _every_ URL in the app. It's fairly easy to reproduce with a small catalyst application, and I've all written a test for Test::WWW::Mechanize::Catalyst that demonstrates the behaviour I'm having trouble with. I don't know where the problem originates, but this seemed to be the easiest place to demonstrate it. As far as I can tell, all of the relevant modules are up-to-date: Module = Test::WWW::Mechanize (PETDANCE/Test-WWW-Mechanize-1.16.tar.gz) Module = Test::WWW::Mechanize::Catalyst (LBROCARD/Test-WWW-Mechanize-Catalyst-0.41.tar.gz) Module = WWW::Mechanize (PETDANCE/WWW-Mechanize-1.32.tar.gz) Module = Catalyst (MRAMBERG/Catalyst-Runtime-5.7011.tar.gz) Also all /^Catalyst/ extras are up-to-date. Does anyone have any idea if this is a bug, or if I'm just going about things the wrong way? Chisel ---- cut here ---- $ catalyst.pl BaseTag $ ./script/basetag_create.pl controller Lemon $ ./script/basetag_create.pl view TT TT $ vi lib/BaseTag/Controller/Lemon.pm sub juice :Local { my ($self, $c) = @_; } $ mkdir -p root/base/lemon $ vi root/base/lemon/juice.tt <?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <base href="[%c.req.base%]" /> <title>[%c.req.base%]</title> </head> <body> [%c.req.base%] </body> </html> $ vi t/00.base.t use Test::More tests => 3; use_ok( 'Test::WWW::Mechanize::Catalyst', 'BaseTag' ); my $mech = Test::WWW::Mechanize::Catalyst->new; $mech->get_ok("http://localhost/lemon/juice", 'Got lemon/juice'); $mech->base_is('http://localhost/'); $ CATALYST_DEBUG=0 ./script/basetag_test.pl /lemon/juice |grep '<base' <base href="http://localhost/" /> $ CATALYST_DEBUG=0 prove -l ./t/00.base.t ./t/00.base....ok 1/3 # Failed test at ./t/00.base.t line 5. # got: "http://localhost/lemon/juice" # length: 28 # expected: "http://localhost/" # length: 17 # strings begin to differ at char 18 ./t/00.base....NOK 3/3# Looks like you failed 1 test of 3. ./t/00.base....dubious Test returned status 1 (wstat 256, 0x100) DIED. FAILED test 3 Failed 1/3 tests, 66.67% okay Failed Test Stat Wstat Total Fail List of Failed ------------------------------------------------------------------------------- ./t/00.base.t 1 256 3 1 3 Failed 1/1 test scripts. 1/3 subtests failed. Files=1, Tests=3, 1 wallclock secs ( 1.07 cusr + 0.15 csys = 1.22 CPU) Failed 1/1 test programs. 1/3 subtests failed. ---- cut here ---- -- Chisel Wright e: [EMAIL PROTECTED] w: http://www.herlpacker.co.uk/ It's like ingenuity wrapped in stupidity wrapped in a function.
bug-base-tag.t
Description: Troff document
_______________________________________________ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/[EMAIL PROTECTED]/ Dev site: http://dev.catalyst.perl.org/