File: 13error.t

package info (click to toggle)
libxml-libxslt-perl 1.66-1
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 468 kB
  • ctags: 733
  • sloc: perl: 798; ansic: 425; makefile: 51; xml: 21
file content (121 lines) | stat: -rw-r--r-- 2,634 bytes parent folder | download | duplicates (2)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
use Test;
BEGIN { plan tests => 28 };

use warnings;
use strict;
$|=1;

use XML::LibXSLT;
ok(1);

my $bad_xsl1 = 'example/bad1.xsl';
my $bad_xsl2 = 'example/bad2.xsl';
my $bad_xsl3 = 'example/bad3.xsl';
my $fatal_xsl = 'example/fatal.xsl';
my $nonfatal_xsl = 'example/nonfatal.xsl';
my $good_xsl = 'example/1.xsl';
my $good_xml = 'example/1.xml';
my $bad_xml  = 'example/bad2.xsl';

my $xslt = XML::LibXSLT->new;
ok($xslt);

{
  my $stylesheet = XML::LibXML->new->parse_file($bad_xsl1);
  undef $@;
  eval { $xslt->parse_stylesheet($stylesheet) };
  ok( $@ );
}

{
  undef $@;
  eval { XML::LibXML->new->parse_file($bad_xsl2) };
  ok( $@ );
}

{
  my $stylesheet = XML::LibXML->new->parse_file($good_xsl);
  ok( $stylesheet );
  my $parsed = $xslt->parse_stylesheet( $stylesheet );
  ok( $parsed );
  undef $@;
  eval { $parsed->transform_file( $bad_xml ); };
  ok( $@ );
}

{
  my $stylesheet = XML::LibXML->new->parse_file($nonfatal_xsl);
  ok( $stylesheet );
  my $parsed = $xslt->parse_stylesheet( $stylesheet );
  ok( $parsed );
  undef $@;
  my $warn;
  local $SIG{__WARN__} = sub { $warn = shift; };
  eval { $parsed->transform_file( $good_xml ); };
  ok( !$@ );
  ok( $warn , "Non-fatal message.\n" );
}

{
  my $parser = XML::LibXML->new;
  my $stylesheet = $parser->parse_file($bad_xsl3);
  ok( $stylesheet );
  my $parsed = $xslt->parse_stylesheet( $stylesheet );
  ok( $parsed );
  undef $@;
  eval { $parsed->transform_file( $good_xml ); };
  ok( $@ );
  my $dom = $parser->parse_file( $good_xml );
  ok( $dom );
  undef $@;
  eval { $parsed->transform( $dom ); };
  ok( $@ );
}

{
  my $parser = XML::LibXML->new;
  my $stylesheet = $parser->parse_file($fatal_xsl);
  ok( $stylesheet );
  my $parsed = $xslt->parse_stylesheet( $stylesheet );
  ok( $parsed );
  undef $@;
  eval { $parsed->transform_file( $good_xml ); };
  ok( $@ );
  my $dom = $parser->parse_file( $good_xml );
  ok( $dom );
  undef $@;
  eval { $parsed->transform( $dom ); };
  ok( $@ );
}

{
my $parser = XML::LibXML->new();
ok( $parser );

my $doc = $parser->parse_string(<<XML);
<doc/>
XML
ok( $doc );

my $xslt = XML::LibXSLT->new();
my $style_doc = $parser->parse_string(<<XSLT);
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:value-of select="\$foo"/>
  </xsl:template>
</xsl:stylesheet>
XSLT
ok( $style_doc );

my $stylesheet = $xslt->parse_stylesheet($style_doc);
ok( $stylesheet );

my $results;
eval { $results = $stylesheet->transform($doc); };
ok( $@ );

ok( $@ =~ /unregistered variable foo|variable 'foo' has not been declared/i );
ok( $@ =~ /element value-of/ );

}