/
Class.pm
85 lines (66 loc) · 2.01 KB
/
Class.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# $Id$
package Mango::Test::Class;
use strict;
use warnings;
BEGIN {
use base 'Test::Class';
use Test::More;
use Mango::Test ();
use Path::Class ();
}
sub startup : Test(startup) {
my $self = shift;
my $app = Mango::Test->mk_app( undef, $self->config || {} );
my $lib = Path::Class::dir( $app, 'lib' );
eval "use lib '$lib';";
$self->application($app);
$ENV{'CATALYST_DEBUG'} = 0;
$self->config_application;
{
local $SIG{__WARN__} = sub { };
require Test::WWW::Mechanize::Catalyst;
Test::WWW::Mechanize::Catalyst->import('TestApp');
};
}
sub application {
my ( $self, $application ) = @_;
if ($application) {
$self->{'application'} = $application;
}
return $self->{'application'};
}
sub config {};
sub config_application {};
sub client {
return Test::WWW::Mechanize::Catalyst->new;
}
sub path {};
sub validate_markup {
my ($self, $content) = @_;
## stop fighting Test::HTML::W3C plan issues for now
SKIP: {
eval 'require WebService::Validator::HTML::W3C';
skip 'WebService::Validator::HTML::W3C not installed', 1 if $@;
my $v = WebService::Validator::HTML::W3C->new(
detailed => 1
);
if ( $v->validate_markup($content) ) {
if ( $v->is_valid ) {
pass('content is valid');
} else {
my ($package, $filename, $line) = caller;
my $message;
foreach my $error ( @{$v->errors} ) {
$message .= sprintf("line: %s, column: %s error: %s\n",
$error->line, $error->col, $error->msg);
my @lines = split(/\n/, $content);
$message .= ' ' . $lines[$error->line - 1] . "\n";
}
fail "content is not valid at $package line $line" or diag $message;;
}
} else {
fail('Failed to validate the content: ' . $v->validator_error);
}
};
}
1;