[OGDev] A couple of recent hacks.
Kake L Pugh
kake at earth.li
Wed Feb 28 02:25:14 GMT 2007
Oh, I just noticed that the Tube stations thing mentions hacking
around a bug in Wiki::Toolkit::Plugin::Categoriser. I attach a patch
including a test which exposes the bug, and a fix (it's pretty
simple). Sorry Dom, wasn't quite sure where Wiki::Toolkit bugreps go
these days.
Kake
-------------- next part --------------
diff -ru Wiki-Toolkit-Plugin-Categoriser-0.04/Changes Wiki-Toolkit-Plugin-Categoriser-0.05/Changes
--- Wiki-Toolkit-Plugin-Categoriser-0.04/Changes Sat May 13 15:33:34 2006
+++ Wiki-Toolkit-Plugin-Categoriser-0.05/Changes Wed Feb 28 02:17:23 2007
@@ -1,3 +1,6 @@
+0.05
+ Fix bug - ->categories was picking up out-of-date categories.
+
0.04 13 May 2006
Renamed Wiki::Toolkit::Plugin::Categoriser
Common subdirectories: Wiki-Toolkit-Plugin-Categoriser-0.04/lib and Wiki-Toolkit-Plugin-Categoriser-0.05/lib
Common subdirectories: Wiki-Toolkit-Plugin-Categoriser-0.04/t and Wiki-Toolkit-Plugin-Categoriser-0.05/t
Common subdirectories: Wiki-Toolkit-Plugin-Categoriser-0.04/lib/Wiki and Wiki-Toolkit-Plugin-Categoriser-0.05/lib/Wiki
Common subdirectories: Wiki-Toolkit-Plugin-Categoriser-0.04/lib/Wiki/Toolkit and Wiki-Toolkit-Plugin-Categoriser-0.05/lib/Wiki/Toolkit
Common subdirectories: Wiki-Toolkit-Plugin-Categoriser-0.04/lib/Wiki/Toolkit/Plugin and Wiki-Toolkit-Plugin-Categoriser-0.05/lib/Wiki/Toolkit/Plugin
diff -ru Wiki-Toolkit-Plugin-Categoriser-0.04/lib/Wiki/Toolkit/Plugin/Categoriser.pm Wiki-Toolkit-Plugin-Categoriser-0.05/lib/Wiki/Toolkit/Plugin/Categoriser.pm
--- Wiki-Toolkit-Plugin-Categoriser-0.04/lib/Wiki/Toolkit/Plugin/Categoriser.pm Sat May 13 16:03:51 2006
+++ Wiki-Toolkit-Plugin-Categoriser-0.05/lib/Wiki/Toolkit/Plugin/Categoriser.pm Wed Feb 28 02:16:42 2007
@@ -3,7 +3,7 @@
use Wiki::Toolkit::Plugin;
use vars qw( $VERSION @ISA );
-$VERSION = '0.04';
+$VERSION = '0.05';
@ISA = qw( Wiki::Toolkit::Plugin );
=head1 NAME
@@ -124,7 +124,7 @@
sub categories {
my ($self, %args) = @_;
my $dbh = $self->datastore->dbh;
- my $sth = $dbh->prepare( "SELECT metadata_value FROM node INNER JOIN metadata ON (node_id = id) WHERE name = ? AND metadata_type = 'category'" );
+ my $sth = $dbh->prepare( "SELECT metadata_value FROM node INNER JOIN metadata ON (node.id = metadata.node_id AND node.version = metadata.version) WHERE name = ? AND metadata_type = 'category'" );
$sth->execute( $args{node} );
my @categories;
while ( my ($cat) = $sth->fetchrow_array ) {
diff -ru Wiki-Toolkit-Plugin-Categoriser-0.04/t/categoriser.t Wiki-Toolkit-Plugin-Categoriser-0.05/t/categoriser.t
--- Wiki-Toolkit-Plugin-Categoriser-0.04/t/categoriser.t Sat May 13 15:30:56 2006
+++ Wiki-Toolkit-Plugin-Categoriser-0.05/t/categoriser.t Wed Feb 28 02:14:29 2007
@@ -3,7 +3,7 @@
use Test::More;
my $iterator = Wiki::Toolkit::TestLib->new_wiki_maker;
-plan tests => ( 1 + $iterator->number * 6 );
+plan tests => ( 1 + $iterator->number * 7 );
use_ok( "Wiki::Toolkit::Plugin::Categoriser" );
@@ -41,4 +41,15 @@
my @categories = $categoriser->categories( node => "Calthorpe Arms" );
is_deeply( [ sort @categories ], [ "Pub Food", "Pubs" ],
"...->categories returns all categories" );
+
+ # Make sure we only look at current category data.
+ my %node_data = $wiki->retrieve_node( "Calthorpe Arms" );
+ $wiki->write_node( "Calthorpe Arms",
+ "Oh noes, they stopped doing food!",
+ $node_data{checksum},
+ { category => [ "Pubs" ] } )
+ or die "Can't write node";
+ @categories = $categoriser->categories( node => "Calthorpe Arms" );
+ is_deeply( \@categories, [ "Pubs" ],
+ "->categories ignores out-of-date data" );
}
More information about the OpenGuides-Dev
mailing list