package Test::HTML::Tidy;
use strict;
use Test::Builder;
use Exporter;
use HTML::Tidy 1.00;
use vars qw( @ISA $VERSION @EXPORT );
@ISA = qw( Exporter );
=head1 NAME
Test::HTML::Tidy - Test::More-style wrapper around HTML::Tidy
=head1 VERSION
Version 1.28
$Header: /home/cvs/test-html-tidy/Tidy.pm,v 1.4 2004/02/26 06:12:36 andy Exp $
=cut
$VERSION = '1.00';
my $Tester = Test::Builder->new;
=head1 SYNOPSIS
use Test::HTML::Tidy tests => 4;
my $page = build_a_web_page();
html_tidy_ok( $page, 'Built page properly' );
=head1 DESCRIPTION
Handy way to check that HTML is valid, according to L.
It is built with L and plays happily with L
and friends.
If you are not already familiar with L now would be the time
to go take a look.
=head1 EXPORT
C
=cut
@EXPORT = qw( html_tidy_ok );
sub import {
my $self = shift;
my $pack = caller;
$Tester->exported_to($pack);
$Tester->plan(@_);
$self->export_to_level(1, $self, @EXPORT);
}
=head2 html_tidy_ok( [$tidy, ] $html, $name )
Checks to see if C<$html> contains valid HTML. C<$html> being blank is OK.
C<$html> being undef is not.
If you pass an HTML::Tidy object, C will use that for its
settings. The I<$html> will get passed through I<$tidy>.
my $tidy = new HTML::Tidy;
$tidy->ignore( type => TIDY_WARNING );
html_tidy_ok( $tidy, $content, "Web page passes without errors" );
Otherwise, C will use the default rules.
html_tidy_ok( $content, "Web page passes ALL tests" );
Note that if you pass in your own HTML::Tidy object, C
will clear its errors before using it.
=cut
sub html_tidy_ok {
my $tidy;
if ( ref($_[0]) eq "HTML::Tidy" ) {
$tidy = shift;
$tidy->clear_messages();
} else {
$tidy = HTML::Tidy->new;
}
my $html = shift;
my $name = shift;
my $ok = defined $html;
if ( !$ok ) {
$Tester->ok( 0, $name );
} else {
$tidy->parse( $0, $html );
my $nerr = scalar $tidy->messages;
$ok = !$nerr;
$Tester->ok( $ok, $name );
if ( !$ok ) {
my $msg = "Messages:";
$msg .= " $name" if $name;
$Tester->diag( $msg );
$Tester->diag( $_->as_string ) for $tidy->messages;
}
}
return $ok;
}
=head1 Bugs
Please report any bugs or feature requests to
C, or through the web interface at
L. I will be notified, and then you'll automatically
be notified of progress on your bug as I make changes.
=head1 Author
Andy Lester, C<< >>
=head1 Copyright & License
Copyright 2004 Andy Lester, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
Please note that these modules are not products of or supported by the
employers of the various contributors to the code.
=cut
1;