Almost-minimal filesystem based blog.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

128 lines
2.9 KiB

#!/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);
}