File: 07locator.t

package info (click to toggle)
libxml-validator-schema-perl 1.10-2.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 708 kB
  • sloc: perl: 3,682; xml: 16; makefile: 2
file content (38 lines) | stat: -rw-r--r-- 1,150 bytes parent folder | download | duplicates (3)
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
#!/usr/bin/perl
use strict;
use warnings;
use Test::More qw(no_plan);
use_ok('XML::Validator::Schema') or exit;

use XML::SAX::ParserFactory;
$XML::SAX::ParserPackage = 'XML::SAX::ExpatXS';

# test requires XML::SAX::ExpatXS and XML::Filter::ExceptionLocator
eval { require XML::SAX::ExpatXS };
my $has_expatxs = $@ ? 0 : 1;
eval { require XML::Filter::ExceptionLocator };
my $has_el = $@ ? 0 : 1;

SKIP: {
    skip 'These tests require XML::SAX::ExpatXS', 1 unless $has_expatxs;
    skip 'These tests require XML::Filter::ExceptionLocator', 1 unless $has_el;
    
    my $v = XML::Validator::Schema->new(file => 't/test.xsd');
    ok($v);
    my $p = XML::SAX::ParserFactory->parser(Handler => $v);
    ok($p);
    
    # parse a file with an error on line 6
    eval { $p->parse_uri('t/bad.xml') };
    isa_ok($@, 'XML::SAX::Exception');
    is($@->{LineNumber}, 6);
    ok($@->{ColumnNumber} >= 11);
    like($@, qr/\[Ln: 6/);

    # now a bad XSD
    eval { $v = XML::Validator::Schema->new(file => 't/bad.xsd') };
    isa_ok($@, 'XML::SAX::Exception');
    is($@->{LineNumber}, 4);
    ok($@->{ColumnNumber} >= 6);
    like($@, qr/\[Ln: 4/);
};