# Before `make install' is performed this script should be runnable # with `make test'. After `make install' it should work as `perl # PerlErrorHandler.t' ######################### We start with some black magic to print on failure. END {ok(0) unless $loaded;} use Carp; # use blib; use XML::Xerces; use Test::More tests => 6; use lib 't'; use TestUtils qw($PERSONAL); use subs qw(warning error fatal_error); use vars qw($error $loaded); $loaded = 1; ok($loaded, "module loaded"); ######################### End of black magic. my $document = <<\END; Boss Big chief@foo.com Worker One one@foo.com Worker Two two@foo.com END package MyErrorHandler; use strict; use vars qw(@ISA); @ISA = qw(XML::Xerces::PerlErrorHandler); sub warning { my $LINE = $_[1]->getLineNumber; my $COLUMN = $_[1]->getColumnNumber; my $MESSAGE = $_[1]->getMessage; $::error = <<"EOE"; WARNING: LINE: $LINE COLUMN: $COLUMN MESSAGE: $MESSAGE EOE die "\n"; } sub error { my $LINE = $_[1]->getLineNumber; my $COLUMN = $_[1]->getColumnNumber; my $MESSAGE = $_[1]->getMessage; $::error = <<"EOE"; ERROR: LINE: $LINE COLUMN: $COLUMN MESSAGE: $MESSAGE EOE die "\n"; } sub fatal_error { my $LINE = $_[1]->getLineNumber; my $COLUMN = $_[1]->getColumnNumber; my $MESSAGE = $_[1]->getMessage; $::error = <<"EOE"; FATAL ERROR: LINE: $LINE COLUMN: $COLUMN MESSAGE: $MESSAGE EOE die "\n"; } 1; package main; { $error = ""; my $dom = XML::Xerces::XercesDOMParser->new(); my $error_handler = MyErrorHandler->new(); $dom->setErrorHandler($error_handler); eval { $dom->parse(XML::Xerces::MemBufInputSource->new($document, 'foo') ); }; my $expected_error = <new(); my $error_handler = MyErrorHandler->new(); $dom->setErrorHandler($error_handler); $dom->setValidationScheme($XML::Xerces::AbstractDOMParser::Val_Always); eval { $dom->parse(XML::Xerces::MemBufInputSource->new($document, 'foo') ); }; my $expected_error = <new(); my $error_handler = MyErrorHandler->new(); my $error_handler2 = MyErrorHandler->new(); my $tmp = $dom->setErrorHandler($error_handler); ok(!defined $tmp); $tmp = $dom->setErrorHandler($error_handler2); SKIP : { skip "temporarily not returning old handler", 1 unless defined($tmp); ok(defined $tmp); } $dom->setValidationScheme($XML::Xerces::AbstractDOMParser::Val_Always); eval { $dom->parse(XML::Xerces::MemBufInputSource->new($document, 'foo') ); }; my $expected_error = <