libxml-ruby 3.0.0-x64-mingw32 → 3.2.2-x64-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. checksums.yaml +5 -5
  2. data/HISTORY +37 -0
  3. data/MANIFEST +34 -34
  4. data/README.rdoc +65 -36
  5. data/Rakefile +21 -3
  6. data/ext/libxml/extconf.rb +30 -26
  7. data/ext/libxml/ruby_libxml.h +0 -8
  8. data/ext/libxml/ruby_xml.c +40 -0
  9. data/ext/libxml/ruby_xml_document.c +1 -5
  10. data/ext/libxml/ruby_xml_dtd.c +6 -8
  11. data/ext/libxml/ruby_xml_encoding.c +1 -13
  12. data/ext/libxml/ruby_xml_encoding.h +0 -3
  13. data/ext/libxml/ruby_xml_error.c +1 -1
  14. data/ext/libxml/ruby_xml_error.h +1 -1
  15. data/ext/libxml/ruby_xml_io.c +14 -18
  16. data/ext/libxml/ruby_xml_io.h +1 -1
  17. data/ext/libxml/ruby_xml_node.c +16 -17
  18. data/ext/libxml/ruby_xml_parser_context.c +1 -1
  19. data/ext/libxml/ruby_xml_reader.c +7 -2
  20. data/ext/libxml/ruby_xml_schema.c +44 -66
  21. data/ext/libxml/ruby_xml_schema_element.c +15 -14
  22. data/ext/libxml/ruby_xml_schema_type.c +66 -93
  23. data/ext/libxml/ruby_xml_version.h +4 -4
  24. data/ext/libxml/ruby_xml_writer.c +189 -192
  25. data/lib/3.0/libxml_ruby.so +0 -0
  26. data/lib/libxml/schema/element.rb +0 -8
  27. data/lib/libxml/schema/type.rb +0 -8
  28. data/lib/libxml/schema.rb +0 -19
  29. data/lib/libxml-ruby.rb +30 -0
  30. data/lib/libxml.rb +3 -28
  31. data/libxml-ruby.gemspec +5 -4
  32. data/setup.rb +0 -1
  33. data/test/model/cwm_1_0.xml +11336 -0
  34. data/test/{tc_attr.rb → test_attr.rb} +18 -18
  35. data/test/{tc_attr_decl.rb → test_attr_decl.rb} +8 -8
  36. data/test/{tc_attributes.rb → test_attributes.rb} +10 -10
  37. data/test/{tc_canonicalize.rb → test_canonicalize.rb} +35 -39
  38. data/test/test_deprecated_require.rb +12 -0
  39. data/test/{tc_document.rb → test_document.rb} +31 -24
  40. data/test/test_document_write.rb +146 -0
  41. data/test/{tc_dtd.rb → test_dtd.rb} +26 -25
  42. data/test/{tc_encoding.rb → test_encoding.rb} +20 -17
  43. data/test/{tc_encoding_sax.rb → test_encoding_sax.rb} +3 -3
  44. data/test/test_error.rb +178 -0
  45. data/test/test_helper.rb +4 -11
  46. data/test/{tc_html_parser.rb → test_html_parser.rb} +31 -30
  47. data/test/test_html_parser_context.rb +23 -0
  48. data/test/test_namespace.rb +60 -0
  49. data/test/{tc_namespaces.rb → test_namespaces.rb} +29 -38
  50. data/test/{tc_node.rb → test_node.rb} +37 -31
  51. data/test/{tc_node_cdata.rb → test_node_cdata.rb} +10 -10
  52. data/test/{tc_node_comment.rb → test_node_comment.rb} +6 -6
  53. data/test/{tc_node_copy.rb → test_node_copy.rb} +3 -4
  54. data/test/{tc_node_edit.rb → test_node_edit.rb} +20 -21
  55. data/test/{tc_node_pi.rb → test_node_pi.rb} +8 -10
  56. data/test/{tc_node_text.rb → test_node_text.rb} +8 -9
  57. data/test/{tc_node_write.rb → test_node_write.rb} +16 -26
  58. data/test/test_node_xlink.rb +28 -0
  59. data/test/{tc_parser.rb → test_parser.rb} +72 -75
  60. data/test/{tc_parser_context.rb → test_parser_context.rb} +38 -44
  61. data/test/{tc_properties.rb → test_properties.rb} +5 -5
  62. data/test/test_reader.rb +364 -0
  63. data/test/{tc_relaxng.rb → test_relaxng.rb} +11 -11
  64. data/test/{tc_sax_parser.rb → test_sax_parser.rb} +38 -31
  65. data/test/{tc_schema.rb → test_schema.rb} +40 -33
  66. data/test/test_suite.rb +39 -40
  67. data/test/{tc_traversal.rb → test_traversal.rb} +4 -4
  68. data/test/{tc_writer.rb → test_writer.rb} +95 -74
  69. data/test/{tc_xinclude.rb → test_xinclude.rb} +3 -3
  70. data/test/test_xml.rb +263 -0
  71. data/test/{tc_xpath.rb → test_xpath.rb} +25 -25
  72. data/test/{tc_xpath_context.rb → test_xpath_context.rb} +5 -5
  73. data/test/{tc_xpath_expression.rb → test_xpath_expression.rb} +7 -7
  74. data/test/{tc_xpointer.rb → test_xpointer.rb} +15 -15
  75. metadata +92 -106
  76. data/lib/2.4/libxml_ruby.so +0 -0
  77. data/lib/libs/libiconv-2.dll +0 -0
  78. data/lib/libs/libxml2-2.dll +0 -0
  79. data/lib/libs/zlib1.dll +0 -0
  80. data/test/tc_deprecated_require.rb +0 -12
  81. data/test/tc_document_write.rb +0 -195
  82. data/test/tc_error.rb +0 -178
  83. data/test/tc_html_parser_context.rb +0 -23
  84. data/test/tc_namespace.rb +0 -61
  85. data/test/tc_node_xlink.rb +0 -28
  86. data/test/tc_reader.rb +0 -358
  87. data/test/tc_xml.rb +0 -225
@@ -0,0 +1,364 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+ require 'stringio'
5
+
6
+ class TestReader < Minitest::Test
7
+ XML_FILE = File.join(File.dirname(__FILE__), 'model/atom.xml')
8
+
9
+ def verify_simple(reader)
10
+ node_types = []
11
+
12
+ # Read each node
13
+ 26.times do
14
+ assert(reader.read)
15
+ node_types << reader.node_type
16
+ end
17
+
18
+ # There are no more nodes
19
+ assert(!reader.read)
20
+
21
+ # Check what was read
22
+ expected = [LibXML::XML::Reader::TYPE_PROCESSING_INSTRUCTION,
23
+ LibXML::XML::Reader::TYPE_ELEMENT,
24
+ LibXML::XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
25
+ LibXML::XML::Reader::TYPE_COMMENT,
26
+ LibXML::XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
27
+ LibXML::XML::Reader::TYPE_ELEMENT,
28
+ LibXML::XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
29
+ LibXML::XML::Reader::TYPE_ELEMENT,
30
+ LibXML::XML::Reader::TYPE_CDATA,
31
+ LibXML::XML::Reader::TYPE_END_ELEMENT,
32
+ LibXML::XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
33
+ LibXML::XML::Reader::TYPE_ELEMENT,
34
+ LibXML::XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
35
+ LibXML::XML::Reader::TYPE_ELEMENT,
36
+ LibXML::XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
37
+ LibXML::XML::Reader::TYPE_ELEMENT,
38
+ LibXML::XML::Reader::TYPE_TEXT,
39
+ LibXML::XML::Reader::TYPE_END_ELEMENT,
40
+ LibXML::XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
41
+ LibXML::XML::Reader::TYPE_END_ELEMENT,
42
+ LibXML::XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
43
+ LibXML::XML::Reader::TYPE_END_ELEMENT,
44
+ LibXML::XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
45
+ LibXML::XML::Reader::TYPE_END_ELEMENT,
46
+ LibXML::XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
47
+ LibXML::XML::Reader::TYPE_END_ELEMENT]
48
+
49
+ assert_equal(expected, node_types)
50
+ end
51
+
52
+ def test_document
53
+ reader = LibXML::XML::Reader.document(LibXML::XML::Document.file(XML_FILE))
54
+ verify_simple(reader)
55
+ end
56
+
57
+ def test_file
58
+ reader = LibXML::XML::Reader.file(XML_FILE)
59
+ verify_simple(reader)
60
+ end
61
+
62
+ def test_invalid_file
63
+ assert_raises(LibXML::XML::Error) do
64
+ LibXML::XML::Reader.file('/does/not/exist')
65
+ end
66
+ end
67
+
68
+ def test_string
69
+ reader = LibXML::XML::Reader.string(File.read(XML_FILE))
70
+ verify_simple(reader)
71
+ end
72
+
73
+ def test_io
74
+ File.open(XML_FILE, 'rb') do |io|
75
+ reader = LibXML::XML::Reader.io(io)
76
+ verify_simple(reader)
77
+ end
78
+ end
79
+
80
+ def test_io_gc
81
+ # Test that the reader keeps a reference
82
+ # to the io object
83
+ file = File.open(XML_FILE, 'rb')
84
+ reader = LibXML::XML::Reader.io(file)
85
+ file = nil
86
+ GC.start
87
+ assert(reader.read)
88
+ end
89
+
90
+ def test_string_io
91
+ data = File.read(XML_FILE)
92
+ string_io = StringIO.new(data)
93
+ reader = LibXML::XML::Reader.io(string_io)
94
+ verify_simple(reader)
95
+ end
96
+
97
+ def test_error
98
+ reader = LibXML::XML::Reader.string('<foo blah')
99
+
100
+ error = assert_raises(LibXML::XML::Error) do
101
+ reader.read
102
+ end
103
+ assert_equal("Fatal error: Couldn't find end of Start Tag foo at :1.", error.to_s)
104
+ end
105
+
106
+ def test_attr
107
+ parser = LibXML::XML::Reader.string("<foo x='1' y='2'/>")
108
+ assert(parser.read)
109
+ assert_equal('foo', parser.name)
110
+ assert_equal('1', parser['x'])
111
+ assert_equal('1', parser[0])
112
+ assert_equal('2', parser['y'])
113
+ assert_equal('2', parser[1])
114
+ assert_nil(parser['z'])
115
+ assert_nil(parser[2])
116
+ end
117
+
118
+ def test_move_attr
119
+ reader = LibXML::XML::Reader.string('<root xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xhtml="http://www.w3.org/1999/xhtml"><link xml:id="abc" xlink:href="def" xhtml:class="ghi" bar="jkl" /></root>')
120
+ assert(reader.read) # <root/>
121
+ assert(reader.read) # <link/>
122
+
123
+ assert(reader.move_to_attribute_no(1))
124
+ assert_equal(reader.value, 'def')
125
+ assert(reader.move_to_attribute_ns('id', 'http://www.w3.org/XML/1998/namespace'))
126
+ assert_equal(reader.value, 'abc')
127
+ assert(reader.move_to_attribute('bar'))
128
+ assert_equal(reader.value, 'jkl')
129
+
130
+ # 1 in case of success, -1 in case of error, 0 if not found
131
+ assert_equal(reader.move_to_attribute_no(12), 0)
132
+ assert_equal(reader.move_to_attribute('baz'), 0)
133
+ assert_equal(reader.move_to_attribute_ns('baz', 'http://ruby/namespace'), 0)
134
+ end
135
+
136
+ def test_get_attr
137
+ reader = LibXML::XML::Reader.string('<root xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xhtml="http://www.w3.org/1999/xhtml"><link xml:id="abc" xlink:href="def" xhtml:class="ghi" bar="jkl" /></root>')
138
+ assert(reader.read) # <root/>
139
+ assert(reader.read) # <link/>
140
+
141
+ assert_equal(reader.get_attribute_no(1), 'def')
142
+ assert_equal(reader.get_attribute_ns('id', 'http://www.w3.org/XML/1998/namespace'), 'abc')
143
+ assert_equal(reader.get_attribute('bar'), 'jkl')
144
+
145
+ assert_nil(reader.get_attribute_no(12))
146
+ assert_nil(reader.get_attribute('baz'))
147
+ assert_nil(reader.get_attribute_ns('baz', 'http://ruby/namespace'))
148
+ end
149
+
150
+ def test_value
151
+ parser = LibXML::XML::Reader.string("<foo><bar>1</bar><bar>2</bar><bar>3</bar></foo>")
152
+ assert(parser.read)
153
+ assert_equal('foo', parser.name)
154
+ assert_nil(parser.value)
155
+ 3.times do |i|
156
+ assert(parser.read)
157
+ assert_equal(LibXML::XML::Reader::TYPE_ELEMENT, parser.node_type)
158
+ assert_equal('bar', parser.name)
159
+ assert(parser.read)
160
+ assert_equal(LibXML::XML::Reader::TYPE_TEXT, parser.node_type)
161
+ assert_equal((i + 1).to_s, parser.value)
162
+ assert(parser.read)
163
+ assert_equal(LibXML::XML::Reader::TYPE_END_ELEMENT, parser.node_type)
164
+ end
165
+ end
166
+
167
+ def test_expand
168
+ reader = LibXML::XML::Reader.file(XML_FILE)
169
+ reader.read.to_s
170
+ reader.read
171
+
172
+ # Read a node
173
+ node = reader.expand
174
+ refute_nil(node.doc)
175
+ assert_equal('feed', node.name)
176
+ assert_equal(::Encoding::UTF_8, node.name.encoding) if defined?(::Encoding)
177
+ end
178
+
179
+ def test_expand_find
180
+ reader = LibXML::XML::Reader.file(XML_FILE)
181
+ reader.read.to_s
182
+ reader.read
183
+
184
+ # Read first node which
185
+ node = reader.expand
186
+ assert_equal('feed', node.name)
187
+
188
+ # We need to create document to use xpath
189
+ reader.doc
190
+
191
+ # Search for entries
192
+ entries = node.find('atom:entry', 'atom:http://www.w3.org/2005/Atom')
193
+
194
+ assert_equal(1, entries.length)
195
+ end
196
+
197
+ def test_expand_invalid
198
+ reader = LibXML::XML::Reader.file(XML_FILE)
199
+
200
+ # Expand a node before one has been read
201
+ node = reader.expand
202
+ assert_nil(node)
203
+ end
204
+
205
+ def test_expand_should_be_invalid
206
+ reader = LibXML::XML::Reader.file(XML_FILE)
207
+
208
+ # Read a couple of nodes
209
+ reader.read
210
+ reader.read
211
+
212
+ # Expand the node
213
+ node = reader.expand
214
+ assert_equal('feed', node.name)
215
+
216
+ # Read another node, this makes the last node invalid
217
+ reader.next
218
+
219
+ # The previous node is now invalid - this should be an error but isn't
220
+ assert_equal('feed', node.name)
221
+ end
222
+
223
+ def test_expand_incorrectly_use_returned_node
224
+ file = File.join(File.dirname(__FILE__), 'model/cwm_1_0.xml')
225
+ reader = LibXML::XML::Reader.file(file)
226
+
227
+ nodes = Array.new
228
+ while reader.read
229
+ node = reader.expand
230
+ refute_nil(node)
231
+ refute_nil(node.doc)
232
+
233
+ # NOTE - DO NOT do this in real code, these nodes are invalid after the next read. This *will* cause
234
+ # a segmentation fault next time the garbage collector runs. The reason is the parent node will be
235
+ # called in the mark phase, but its underlying xml node will be gone. Same goes for calling children,
236
+ # attributes, etc. You must let go of the expanded node *before* calling xml reader again and
237
+ # call the garbage collector to be safe.
238
+ #refute_nil(node.parent)
239
+ nodes << node
240
+ end
241
+ assert(true)
242
+ end
243
+
244
+ def test_mode
245
+ reader = LibXML::XML::Reader.string('<xml/>')
246
+ assert_equal(LibXML::XML::Reader::MODE_INITIAL, reader.read_state)
247
+ reader.read
248
+ assert_equal(LibXML::XML::Reader::MODE_EOF, reader.read_state)
249
+ end
250
+
251
+ def test_bytes_consumed
252
+ ending_are_rn = File.binread(XML_FILE).include? "\r\n"
253
+ reader = LibXML::XML::Reader.file(XML_FILE)
254
+ reader.read
255
+ assert_equal(ending_are_rn ? 428 : 416, reader.byte_consumed)
256
+ end
257
+
258
+ def test_node
259
+ LibXML::XML.default_line_numbers = true
260
+ reader = LibXML::XML::Reader.file(XML_FILE)
261
+
262
+ # first try to get a node
263
+ assert_nil(reader.node)
264
+
265
+ reader.read
266
+ assert_instance_of(LibXML::XML::Node, reader.node)
267
+ end
268
+
269
+ def test_base_uri
270
+ # UTF8:
271
+ # ö - c3 b6 in hex, \303\266 in octal
272
+ # ü - c3 bc in hex, \303\274 in octal
273
+ xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><bands genre=\"metal\">\n <m\303\266tley_cr\303\274e country=\"us\">An American heavy metal band formed in Los Angeles, California in 1981.</m\303\266tley_cr\303\274e>\n <iron_maiden country=\"uk\">British heavy metal band formed in 1975.</iron_maiden>\n</bands>"
274
+ reader = LibXML::XML::Reader.string(xml, :base_uri => "http://libxml.rubyforge.org")
275
+
276
+ reader.read
277
+ assert_equal(reader.base_uri, "http://libxml.rubyforge.org")
278
+ assert_equal(::Encoding::UTF_8, reader.base_uri.encoding) if defined?(::Encoding)
279
+ end
280
+
281
+ def test_options
282
+ xml = <<-EOS
283
+ <!DOCTYPE foo [<!ENTITY foo 'bar'>]>
284
+ <test>
285
+ <cdata><![CDATA[something]]></cdata>
286
+ <entity>&foo;</entity>
287
+ </test>
288
+ EOS
289
+
290
+ # Parse normally
291
+ reader = LibXML::XML::Reader.string(xml)
292
+ reader.read # foo
293
+ reader.read # test
294
+ reader.read # text
295
+ reader.read # cdata
296
+ reader.read # cdata-section
297
+ assert_equal(LibXML::XML::Node::CDATA_SECTION_NODE, reader.node_type)
298
+
299
+ # Convert cdata section to text
300
+ reader = LibXML::XML::Reader.string(xml, :options => LibXML::XML::Parser::Options::NOCDATA)
301
+ reader.read # foo
302
+ reader.read # test
303
+ reader.read # text
304
+ reader.read # cdata
305
+ reader.read # cdata-section
306
+ assert_equal(LibXML::XML::Node::TEXT_NODE, reader.node_type)
307
+ end
308
+
309
+ def test_encoding
310
+ # ISO_8859_1:
311
+ # ö - f6 in hex, \366 in octal
312
+ # ü - fc in hex, \374 in octal
313
+ xml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><bands genre=\"metal\">\n <m\366tley_cr\374e country=\"us\">An American heavy metal band formed in Los Angeles, California in 1981.</m\366tley_cr\374e>\n <iron_maiden country=\"uk\">British heavy metal band formed in 1975.</iron_maiden>\n</bands>"
314
+
315
+ reader = LibXML::XML::Reader.string(xml, :encoding => LibXML::XML::Encoding::ISO_8859_1)
316
+ reader.read
317
+
318
+ assert_equal(Encoding::ISO8859_1, reader.read_outer_xml.encoding)
319
+ assert_equal(Encoding::ISO8859_1, reader.read_inner_xml.encoding)
320
+ assert_equal(Encoding::ISO8859_1, reader.read_string.encoding)
321
+
322
+ assert_equal("<bands genre=\"metal\">\n <m\xC3\xB6tley_cr\xC3\xBCe country=\"us\">An American heavy metal band formed in Los Angeles, California in 1981.</m\xC3\xB6tley_cr\xC3\xBCe>\n <iron_maiden country=\"uk\">British heavy metal band formed in 1975.</iron_maiden>\n</bands>".force_encoding(Encoding::ISO8859_1),
323
+ reader.read_outer_xml)
324
+ assert_equal("\n <m\xC3\xB6tley_cr\xC3\xBCe country=\"us\">An American heavy metal band formed in Los Angeles, California in 1981.</m\xC3\xB6tley_cr\xC3\xBCe>\n <iron_maiden country=\"uk\">British heavy metal band formed in 1975.</iron_maiden>\n".force_encoding(Encoding::ISO8859_1),
325
+ reader.read_inner_xml)
326
+ assert_equal("\n An American heavy metal band formed in Los Angeles, California in 1981.\n British heavy metal band formed in 1975.\n".force_encoding(Encoding::ISO8859_1),
327
+ reader.read_string)
328
+ end
329
+
330
+ def test_invalid_encoding
331
+ # ISO_8859_1:
332
+ # ö - f6 in hex, \366 in octal
333
+ # ü - fc in hex, \374 in octal
334
+ xml = "<bands genre=\"metal\">\n <m\366tley_cr\374e country=\"us\">An American heavy metal band formed in Los Angeles, California in 1981.</m\366tley_cr\374e>\n <iron_maiden country=\"uk\">British heavy metal band formed in 1975.</iron_maiden>\n</bands>"
335
+
336
+ reader = LibXML::XML::Reader.string(xml)
337
+ error = assert_raises(LibXML::XML::Error) do
338
+ reader.read
339
+ end
340
+
341
+ assert_equal("Fatal error: Input is not proper UTF-8, indicate encoding !\nBytes: 0xF6 0x74 0x6C 0x65 at :2.",
342
+ error.to_s)
343
+
344
+ end
345
+
346
+ def test_file_encoding
347
+ reader = LibXML::XML::Reader.file(XML_FILE)
348
+ reader.read
349
+ assert_equal(LibXML::XML::Encoding::UTF_8, reader.encoding)
350
+ assert_equal(Encoding::UTF_8, reader.value.encoding)
351
+ end
352
+
353
+ def test_string_encoding
354
+ # ISO_8859_1:
355
+ # ö - f6 in hex, \366 in octal
356
+ # ü - fc in hex, \374 in octal
357
+ xml = "<bands genre=\"metal\">\n <m\366tley_cr\374e country=\"us\">An American heavy metal band formed in Los Angeles, California in 1981.</m\366tley_cr\374e>\n <iron_maiden country=\"uk\">British heavy metal band formed in 1975.</iron_maiden>\n</bands>"
358
+ reader = LibXML::XML::Reader.string(xml, :encoding => LibXML::XML::Encoding::ISO_8859_1)
359
+ reader.read
360
+
361
+ # Encoding is always null for strings, very annoying!
362
+ assert_equal(reader.encoding, LibXML::XML::Encoding::NONE)
363
+ end
364
+ end
@@ -1,12 +1,12 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
3
+ require_relative './test_helper'
4
4
 
5
5
 
6
6
  class TestRelaxNG < Minitest::Test
7
7
  def setup
8
8
  file = File.join(File.dirname(__FILE__), 'model/shiporder.xml')
9
- @doc = XML::Document.file(file)
9
+ @doc = LibXML::XML::Document.file(file)
10
10
  end
11
11
 
12
12
  def teardown
@@ -14,12 +14,12 @@ class TestRelaxNG < Minitest::Test
14
14
  end
15
15
 
16
16
  def relaxng
17
- document = XML::Document.file(File.join(File.dirname(__FILE__), 'model/shiporder.rng'))
18
- relaxng = XML::RelaxNG.document(document)
17
+ document = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/shiporder.rng'))
18
+ LibXML::XML::RelaxNG.document(document)
19
19
  end
20
20
 
21
21
  def test_from_doc
22
- assert_instance_of(XML::RelaxNG, relaxng)
22
+ assert_instance_of(LibXML::XML::RelaxNG, relaxng)
23
23
  end
24
24
 
25
25
  def test_valid
@@ -27,19 +27,19 @@ class TestRelaxNG < Minitest::Test
27
27
  end
28
28
 
29
29
  def test_invalid
30
- new_node = XML::Node.new('invalid', 'this will mess up validation')
30
+ new_node = LibXML::XML::Node.new('invalid', 'this will mess up validation')
31
31
  @doc.root << new_node
32
32
 
33
- error = assert_raises(XML::Error) do
33
+ error = assert_raises(LibXML::XML::Error) do
34
34
  @doc.validate_relaxng(relaxng)
35
35
  end
36
36
 
37
37
  refute_nil(error)
38
- assert_kind_of(XML::Error, error)
38
+ assert_kind_of(LibXML::XML::Error, error)
39
39
  assert(error.message.match(/Error: Did not expect element invalid there/))
40
- assert_equal(XML::Error::RELAXNGV, error.domain)
41
- assert_equal(XML::Error::LT_IN_ATTRIBUTE, error.code)
42
- assert_equal(XML::Error::ERROR, error.level)
40
+ assert_equal(LibXML::XML::Error::RELAXNGV, error.domain)
41
+ assert_equal(LibXML::XML::Error::LT_IN_ATTRIBUTE, error.code)
42
+ assert_equal(LibXML::XML::Error::ERROR, error.level)
43
43
  assert(error.file.match(/shiporder\.xml/))
44
44
  assert_nil(error.line)
45
45
  assert_equal('invalid', error.str1)
@@ -1,16 +1,16 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
3
+ require_relative './test_helper'
4
4
  require 'stringio'
5
5
 
6
6
  class DocTypeCallback
7
- include XML::SaxParser::Callbacks
7
+ include LibXML::XML::SaxParser::Callbacks
8
8
  def on_start_element(element, attributes)
9
9
  end
10
10
  end
11
11
 
12
12
  class TestCaseCallbacks
13
- include XML::SaxParser::Callbacks
13
+ include LibXML::XML::SaxParser::Callbacks
14
14
 
15
15
  attr_accessor :result
16
16
 
@@ -119,20 +119,20 @@ class TestSaxParser < Minitest::Test
119
119
  end
120
120
 
121
121
  def test_file
122
- parser = XML::SaxParser.file(saxtest_file)
122
+ parser = LibXML::XML::SaxParser.file(saxtest_file)
123
123
  parser.callbacks = TestCaseCallbacks.new
124
124
  parser.parse
125
125
  verify(parser)
126
126
  end
127
127
 
128
128
  def test_file_no_callbacks
129
- parser = XML::SaxParser.file(saxtest_file)
129
+ parser = LibXML::XML::SaxParser.file(saxtest_file)
130
130
  assert_equal true, parser.parse
131
131
  end
132
132
 
133
133
  def test_noexistent_file
134
- error = assert_raises(XML::Error) do
135
- XML::SaxParser.file('i_dont_exist.xml')
134
+ error = assert_raises(LibXML::XML::Error) do
135
+ LibXML::XML::SaxParser.file('i_dont_exist.xml')
136
136
  end
137
137
 
138
138
  assert_equal('Warning: failed to load external entity "i_dont_exist.xml".', error.to_s)
@@ -140,7 +140,7 @@ class TestSaxParser < Minitest::Test
140
140
 
141
141
  def test_nil_file
142
142
  error = assert_raises(TypeError) do
143
- XML::SaxParser.file(nil)
143
+ LibXML::XML::SaxParser.file(nil)
144
144
  end
145
145
 
146
146
  assert_match(/nil into String/, error.to_s)
@@ -148,7 +148,7 @@ class TestSaxParser < Minitest::Test
148
148
 
149
149
  def test_io
150
150
  File.open(saxtest_file) do |file|
151
- parser = XML::SaxParser.io(file)
151
+ parser = LibXML::XML::SaxParser.io(file)
152
152
  parser.callbacks = TestCaseCallbacks.new
153
153
  parser.parse
154
154
  verify(parser)
@@ -157,7 +157,7 @@ class TestSaxParser < Minitest::Test
157
157
 
158
158
  def test_nil_io
159
159
  error = assert_raises(TypeError) do
160
- XML::HTMLParser.io(nil)
160
+ LibXML::XML::HTMLParser.io(nil)
161
161
  end
162
162
 
163
163
  assert_equal("Must pass in an IO object", error.to_s)
@@ -165,13 +165,13 @@ class TestSaxParser < Minitest::Test
165
165
 
166
166
  def test_string_no_callbacks
167
167
  xml = File.read(saxtest_file)
168
- parser = XML::SaxParser.string(xml)
168
+ parser = LibXML::XML::SaxParser.string(xml)
169
169
  assert_equal true, parser.parse
170
170
  end
171
171
 
172
172
  def test_string
173
173
  xml = File.read(saxtest_file)
174
- parser = XML::SaxParser.string(xml)
174
+ parser = LibXML::XML::SaxParser.string(xml)
175
175
  parser.callbacks = TestCaseCallbacks.new
176
176
  parser.parse
177
177
  verify(parser)
@@ -180,8 +180,8 @@ class TestSaxParser < Minitest::Test
180
180
  def test_string_io
181
181
  xml = File.read(saxtest_file)
182
182
  io = StringIO.new(xml)
183
- parser = XML::SaxParser.io(io)
184
-
183
+ parser = LibXML::XML::SaxParser.io(io)
184
+
185
185
  parser.callbacks = TestCaseCallbacks.new
186
186
  parser.parse
187
187
  verify(parser)
@@ -189,7 +189,7 @@ class TestSaxParser < Minitest::Test
189
189
 
190
190
  def test_nil_string
191
191
  error = assert_raises(TypeError) do
192
- XML::SaxParser.string(nil)
192
+ LibXML::XML::SaxParser.string(nil)
193
193
  end
194
194
 
195
195
  assert_equal("wrong argument type nil (expected String)", error.to_s)
@@ -203,7 +203,7 @@ class TestSaxParser < Minitest::Test
203
203
  <a>a1</a>
204
204
  </Results>
205
205
  EOS
206
- parser = XML::SaxParser.string(xml)
206
+ parser = LibXML::XML::SaxParser.string(xml)
207
207
  parser.callbacks = DocTypeCallback.new
208
208
  doc = parser.parse
209
209
  refute_nil(doc)
@@ -217,7 +217,7 @@ EOS
217
217
  <Test/>
218
218
  EOS
219
219
 
220
- parser = XML::SaxParser.string(xml)
220
+ parser = LibXML::XML::SaxParser.string(xml)
221
221
  parser.callbacks = TestCaseCallbacks.new
222
222
 
223
223
  parser.parse
@@ -239,36 +239,43 @@ EOS
239
239
  xml = <<-EOS
240
240
  <Results>
241
241
  EOS
242
- parser = XML::SaxParser.string(xml)
242
+ parser = LibXML::XML::SaxParser.string(xml)
243
243
  parser.callbacks = TestCaseCallbacks.new
244
244
 
245
- error = assert_raises(XML::Error) do
246
- doc = parser.parse
245
+ error = assert_raises(LibXML::XML::Error) do
246
+ parser.parse
247
247
  end
248
248
 
249
249
  # Check callbacks
250
250
  result = parser.callbacks.result
251
251
 
252
252
  i = -1
253
+
254
+ base_err_msg = "Fatal error: (Premature end of data in tag Results line 1|EndTag: '<\\/' not found) at :2\\."
255
+ re_err_msg1 = /\A(error: )#{base_err_msg}\z/
256
+ re_err_msg2 = /\A#{base_err_msg}\z/
257
+
253
258
  assert_equal("startdoc", result[i+=1])
254
259
  assert_equal("start_element: Results, attr: {}", result[i+=1])
255
260
  assert_equal("start_element_ns: Results, attr: {}, prefix: , uri: , ns: {}", result[i+=1])
256
261
  assert_equal("characters: \n", result[i+=1])
257
- assert_equal("error: Fatal error: Premature end of data in tag Results line 1 at :2.", result[i+=1])
262
+ assert_match(re_err_msg1, result[i+=1])
258
263
  assert_equal("end_document", result[i+=1])
259
264
 
260
265
  refute_nil(error)
261
- assert_kind_of(XML::Error, error)
262
- assert_equal("Fatal error: Premature end of data in tag Results line 1 at :2.", error.message)
263
- assert_equal(XML::Error::PARSER, error.domain)
264
- assert_equal(XML::Error::TAG_NOT_FINISHED, error.code)
265
- assert_equal(XML::Error::FATAL, error.level)
266
+ assert_kind_of(LibXML::XML::Error, error)
267
+ assert_match(re_err_msg2, error.message)
268
+ assert_equal(LibXML::XML::Error::PARSER, error.domain)
269
+
270
+ assert([LibXML::XML::Error::TAG_NOT_FINISHED, LibXML::XML::Error::LTSLASH_REQUIRED].include?(error.code))
271
+ assert_equal(LibXML::XML::Error::FATAL, error.level)
266
272
  assert_nil(error.file)
267
273
  assert_equal(2, error.line)
268
- assert_equal('Results', error.str1)
274
+ # Sometimes this is nil and sometimes its not depending on OS and libxlm version
275
+ # assert_nil(error.str1)
269
276
  assert_nil(error.str2)
270
277
  assert_nil(error.str3)
271
- assert_equal(1, error.int1)
278
+ assert([0, 1].include?(error.int1))
272
279
  assert_equal(1, error.int2)
273
280
  assert_nil(error.node)
274
281
  end
@@ -305,15 +312,15 @@ EOS
305
312
  </Products>
306
313
  EOS
307
314
 
308
- parser = XML::SaxParser.string(xml)
315
+ parser = LibXML::XML::SaxParser.string(xml)
309
316
  parser.callbacks = TestCaseCallbacks.new
310
317
 
311
- error = assert_raises(XML::Error) do
318
+ error = assert_raises(LibXML::XML::Error) do
312
319
  parser.parse
313
320
  end
314
321
  assert_equal("Fatal error: xmlParseEntityRef: no name at :5.", error.to_s)
315
322
 
316
323
  # Check callbacks
317
- result = parser.callbacks.result
324
+ parser.callbacks.result
318
325
  end
319
326
  end