#!/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') .
|
|
'</body></html>',
|
|
"Edit form validates"
|
|
) or diag_html();
|
|
|
|
pause(1);
|
|
|
|
is_valid_markup (
|
|
$w->get_header('Preferences') . $w->get_preferences_form('HomePage') .
|
|
'</body></html>',
|
|
"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);
|
|
|
|
}
|
|
|