#!/usr/bin/perl =pod =head1 NAME validate.pl - W3C validate markup from Wala.pm =head1 SYNOPSIS Given a working installation and configuration file: ./validate.pl =head1 DESCRIPTION These tests are aimed at a working installation with several files in place, and require Test::HTML::W3C as well as Test::Simple. For the time being, I'm using "valid W3C HTML" as a proxy for "not broken", and a number of larger pages as a proxy for their component features. This works surprisingly well for much of what the module does. What these tests don't validate in any way is the handling of user input, writing of pages, change logging, or edit conflict resolution. I'll do something about this, eventually. There are also be some issues around testing with different configurations. Nothing here should be destructive. =head1 SEE ALSO test.pl in Wala Wiki distribution, Test::HTML::W3C. =cut use strict; use warnings; use lib 'lib'; use Test::HTML::W3C 'show_detail'; use Test::Simple tests => 13; use Wala qw(%DISPLAY_CONF); # TESTS section ('configuration'); our (%WalaConf, %DISPLAY_CONF); ok (do 'p1k3.conf.pl', "do conf.pl"); ok (defined %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 ('starting markup validation'); render('HomePage', 'complete rendered HomePage validates'); render('PageIndex', 'PageIndex validates' ); render('M', 'Specific letter index validates' ); render('RecentChanges', 'RecentChanges validates' ); render('PageChangeTimes', 'PageChangeTimes validates' ); render('WalaCode', 'WalaCode validates' ); is_valid_markup ( $w->get_header('SandBox') . $w->edit_form('SandBox') . '', "Edit form validates" ) or diag_html(); pause(1); is_valid_markup ( $w->get_header('Preferences') . $w->get_preferences_form('HomePage') . '', "Preferences form validates" ) or diag_html(); pause(1); my $cacheval = $w->UseCache; USECACHE: { $w->UseCache(1); render('SandBox', 'SandBox validates with caching explicitly enabled.'); } NOCACHE: { $w->UseCache(0); render('SandBox', 'SandBox validates with caching explicitly disabled.' ); } $w->UseCache($cacheval); # END OF TESTS # Utility routines. sub pause { my $time = shift; #print " pausing $time seconds\n"; sleep $time; } sub section { my $msg = shift; print "\n-- $msg --\n\n"; } sub render { my $page = shift; my $msg = shift; my $markup = $w->get_header($page) . $w->print_page($page) . $w->get_footer($page); is_valid_markup ( $markup, $msg ) or diag_html(); #print $markup; pause(1); }