#!/usr/bin/perl =pod =head1 NAME test.pl - a set of basic tests for Wala.pm =head1 SYNOPSIS Given a working installation and configuration file: ./test.pl =head1 DESCRIPTION This section to-come. =head1 MISSING TESTS These items aren't tested at all, at the moment. A number of them aren't particularly trivial to test. sub get_diff sub get_latest_diff_date sub write_page sub add_to_page sub log_page_edit sub parse_cookies sub set_cookies sub setup sub parse_parameters sub write_diff sub merge_diff =head1 SEE ALSO validate.pl in the WalaWiki distribution. =cut use strict; use warnings; use lib 'lib'; #use Test::HTML::W3C 'show_detail'; use Test::Simple tests => 11; use Wala; # TESTS section ('configuration'); our (%WalaConf, %DISPLAY_CONF); do 'p1k3.conf.pl'; ok (%WalaConf, 'External configuration hash defined.'); ok (my $w = Wala->new(%WalaConf), 'Got Wala object.'); # This will turn off stuff that breaks testing. $w->TestMode(1); section ('individual subroutine tests'); my $username = $w->get_username; ok ($username eq 'Anonymous', "get_username returns $username."); ok (Wala::get_mtime('Wala.pm') =~ m/\d+/, 'get_mtime returns digits.'); ok (Wala::mygmtime(0) eq 'Thu, 01-Jan-1970 00:00:00 GMT', 'mygmtime(0) returns epoch'); # Hack. Depends on ./log LOGFILE: { my $tmp = $w->LogFile; $w->LogFile("./log"); ok ($w->recent_changes(1) =~ m/\d+ \w+ \w+.*$/, 'recent_changes(1) returns an appropriate logfile line.'); $w->LogFile($tmp); } ok ($w->spamcheck("http://spamcheckfunction.com", "TEST", "TEST") == 1, 'spamcheck trips on a URL'); section ('starting link code testing'); my $scriptname = $w->ScriptName; ok ( $w->convert_wikiwords('TestWord') =~ m/convert_wikiwords('[TestWord|T Word]') =~ m/T Wordp1k3}, 'Return bracketed link' ); # this isn't doing what I'd like it to. ok ( Wala::pagelinks('PageLink [other page link]'), 'Pagelinks sub finds ' . Wala::pagelinks('PageLink [other page link]') . ' links' ); # END OF TESTS # Utility routines. sub hash_print { my %hash = @_; my $string; for my $key (keys %hash) { $string .= "\n$key: $hash{$key}"; } return $string; } sub pause { my $time = shift; #print " pausing $time seconds\n"; sleep $time; } sub section { my $msg = shift; print "\n-- $msg --\n\n"; }