libxml-ruby 4.1.2 → 6.0.0

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 (172) hide show
  1. checksums.yaml +4 -4
  2. data/{HISTORY → CHANGELOG.md} +875 -887
  3. data/LICENSE +20 -20
  4. data/README.md +67 -0
  5. data/Rakefile +77 -98
  6. data/ext/libxml/extconf.rb +39 -20
  7. data/ext/libxml/libxml.c +67 -79
  8. data/ext/libxml/ruby_libxml.h +43 -44
  9. data/ext/libxml/ruby_xml.c +556 -899
  10. data/ext/libxml/ruby_xml.h +9 -10
  11. data/ext/libxml/ruby_xml_attr.c +338 -333
  12. data/ext/libxml/ruby_xml_attr.h +13 -12
  13. data/ext/libxml/ruby_xml_attr_decl.c +19 -12
  14. data/ext/libxml/ruby_xml_attr_decl.h +11 -11
  15. data/ext/libxml/ruby_xml_attributes.c +18 -9
  16. data/ext/libxml/ruby_xml_attributes.h +17 -15
  17. data/ext/libxml/ruby_xml_document.c +1142 -1129
  18. data/ext/libxml/ruby_xml_document.h +12 -11
  19. data/ext/libxml/ruby_xml_dtd.c +287 -248
  20. data/ext/libxml/ruby_xml_dtd.h +10 -9
  21. data/ext/libxml/ruby_xml_encoding.c +250 -250
  22. data/ext/libxml/ruby_xml_encoding.h +20 -18
  23. data/ext/libxml/ruby_xml_error.c +1003 -996
  24. data/ext/libxml/ruby_xml_error.h +14 -14
  25. data/ext/libxml/ruby_xml_html_parser.c +91 -91
  26. data/ext/libxml/ruby_xml_html_parser.h +10 -10
  27. data/ext/libxml/ruby_xml_html_parser_context.c +364 -337
  28. data/ext/libxml/ruby_xml_html_parser_context.h +11 -10
  29. data/ext/libxml/ruby_xml_html_parser_options.c +48 -48
  30. data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
  31. data/ext/libxml/ruby_xml_input_cbg.c +216 -188
  32. data/ext/libxml/ruby_xml_input_cbg.h +20 -20
  33. data/ext/libxml/ruby_xml_io.c +49 -47
  34. data/ext/libxml/ruby_xml_io.h +10 -10
  35. data/ext/libxml/ruby_xml_namespace.c +159 -154
  36. data/ext/libxml/ruby_xml_namespace.h +11 -10
  37. data/ext/libxml/ruby_xml_namespaces.c +313 -293
  38. data/ext/libxml/ruby_xml_namespaces.h +9 -9
  39. data/ext/libxml/ruby_xml_node.c +1433 -1398
  40. data/ext/libxml/ruby_xml_node.h +15 -13
  41. data/ext/libxml/ruby_xml_parser.c +91 -91
  42. data/ext/libxml/ruby_xml_parser.h +10 -10
  43. data/ext/libxml/ruby_xml_parser_context.c +1016 -1001
  44. data/ext/libxml/ruby_xml_parser_context.h +11 -10
  45. data/ext/libxml/ruby_xml_parser_options.c +74 -66
  46. data/ext/libxml/ruby_xml_parser_options.h +10 -10
  47. data/ext/libxml/ruby_xml_reader.c +40 -31
  48. data/ext/libxml/ruby_xml_reader.h +14 -14
  49. data/ext/libxml/ruby_xml_registry.c +31 -0
  50. data/ext/libxml/ruby_xml_registry.h +22 -0
  51. data/ext/libxml/ruby_xml_relaxng.c +21 -5
  52. data/ext/libxml/ruby_xml_relaxng.h +9 -8
  53. data/ext/libxml/ruby_xml_sax2_handler.c +326 -326
  54. data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
  55. data/ext/libxml/ruby_xml_sax_parser.c +108 -116
  56. data/ext/libxml/ruby_xml_sax_parser.h +10 -10
  57. data/ext/libxml/ruby_xml_schema.c +22 -15
  58. data/ext/libxml/ruby_xml_schema.h +26 -25
  59. data/ext/libxml/ruby_xml_schema_attribute.c +7 -7
  60. data/ext/libxml/ruby_xml_schema_attribute.h +37 -37
  61. data/ext/libxml/ruby_xml_schema_element.c +8 -8
  62. data/ext/libxml/ruby_xml_schema_element.h +11 -11
  63. data/ext/libxml/ruby_xml_schema_facet.c +50 -50
  64. data/ext/libxml/ruby_xml_schema_facet.h +9 -9
  65. data/ext/libxml/ruby_xml_schema_type.c +12 -19
  66. data/ext/libxml/ruby_xml_schema_type.h +9 -9
  67. data/ext/libxml/ruby_xml_version.h +9 -9
  68. data/ext/libxml/ruby_xml_writer.c +183 -185
  69. data/ext/libxml/ruby_xml_writer.h +6 -6
  70. data/ext/libxml/ruby_xml_xinclude.c +20 -20
  71. data/ext/libxml/ruby_xml_xinclude.h +11 -11
  72. data/ext/libxml/ruby_xml_xpath.c +195 -195
  73. data/ext/libxml/ruby_xml_xpath.h +15 -15
  74. data/ext/libxml/ruby_xml_xpath_context.c +408 -362
  75. data/ext/libxml/ruby_xml_xpath_context.h +9 -9
  76. data/ext/libxml/ruby_xml_xpath_expression.c +12 -6
  77. data/ext/libxml/ruby_xml_xpath_expression.h +11 -10
  78. data/ext/libxml/ruby_xml_xpath_object.c +69 -54
  79. data/ext/libxml/ruby_xml_xpath_object.h +19 -17
  80. data/ext/vc/libxml_ruby/libxml_ruby.vcxproj +271 -0
  81. data/ext/xcode/libxml-ruby.xcodeproj/project.pbxproj +633 -0
  82. data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  83. data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  84. data/ext/xcode/libxml-ruby.xcodeproj/xcshareddata/xcschemes/libxml-ruby.xcscheme +80 -0
  85. data/lib/libxml/attr.rb +122 -122
  86. data/lib/libxml/attr_decl.rb +80 -80
  87. data/lib/libxml/attributes.rb +13 -13
  88. data/lib/libxml/document.rb +165 -194
  89. data/lib/libxml/error.rb +122 -95
  90. data/lib/libxml/html_parser.rb +80 -96
  91. data/lib/libxml/namespace.rb +61 -61
  92. data/lib/libxml/namespaces.rb +37 -37
  93. data/lib/libxml/node.rb +321 -323
  94. data/lib/libxml/parser.rb +94 -100
  95. data/lib/libxml/sax_callbacks.rb +179 -179
  96. data/lib/libxml/sax_parser.rb +40 -40
  97. data/lib/libxml/schema/attribute.rb +27 -19
  98. data/lib/libxml/schema/element.rb +20 -0
  99. data/lib/libxml/schema/type.rb +44 -21
  100. data/lib/libxml/schema.rb +47 -47
  101. data/lib/libxml/tree.rb +28 -28
  102. data/lib/libxml-ruby.rb +30 -30
  103. data/libxml-ruby.gemspec +46 -48
  104. data/test/c14n/result/1-1-without-comments/example-1 +3 -3
  105. data/test/c14n/result/1-1-without-comments/example-2 +10 -10
  106. data/test/c14n/result/1-1-without-comments/example-3 +13 -13
  107. data/test/c14n/result/1-1-without-comments/example-4 +8 -8
  108. data/test/c14n/result/1-1-without-comments/example-5 +2 -2
  109. data/test/c14n/result/with-comments/example-1 +5 -5
  110. data/test/c14n/result/with-comments/example-2 +10 -10
  111. data/test/c14n/result/with-comments/example-3 +13 -13
  112. data/test/c14n/result/with-comments/example-4 +8 -8
  113. data/test/c14n/result/with-comments/example-5 +3 -3
  114. data/test/c14n/result/without-comments/example-1 +3 -3
  115. data/test/c14n/result/without-comments/example-2 +10 -10
  116. data/test/c14n/result/without-comments/example-3 +13 -13
  117. data/test/c14n/result/without-comments/example-4 +8 -8
  118. data/test/c14n/result/without-comments/example-5 +2 -2
  119. data/test/test_attr.rb +179 -180
  120. data/test/test_attr_decl.rb +131 -131
  121. data/test/test_attributes.rb +135 -135
  122. data/test/test_canonicalize.rb +122 -120
  123. data/test/test_document.rb +138 -132
  124. data/test/test_document_write.rb +142 -145
  125. data/test/test_dtd.rb +134 -129
  126. data/test/test_encoding.rb +126 -129
  127. data/test/test_encoding_sax.rb +114 -114
  128. data/test/test_error.rb +197 -194
  129. data/test/test_helper.rb +21 -13
  130. data/test/test_html_parser.rb +166 -162
  131. data/test/test_html_parser_context.rb +22 -22
  132. data/test/test_input_callbacks.rb +36 -0
  133. data/test/test_namespace.rb +58 -60
  134. data/test/test_namespaces.rb +200 -200
  135. data/test/test_node.rb +251 -237
  136. data/test/test_node_cdata.rb +50 -50
  137. data/test/test_node_comment.rb +32 -32
  138. data/test/test_node_copy.rb +40 -40
  139. data/test/test_node_edit.rb +176 -158
  140. data/test/test_node_pi.rb +37 -37
  141. data/test/test_node_text.rb +69 -69
  142. data/test/test_node_write.rb +93 -96
  143. data/test/test_node_xlink.rb +28 -28
  144. data/test/test_parser.rb +297 -324
  145. data/test/test_parser_context.rb +198 -198
  146. data/test/test_properties.rb +38 -38
  147. data/test/test_reader.rb +413 -364
  148. data/test/test_relaxng.rb +59 -53
  149. data/test/test_sax_parser.rb +345 -326
  150. data/test/test_schema.rb +28 -0
  151. data/test/test_traversal.rb +152 -152
  152. data/test/test_writer.rb +469 -468
  153. data/test/test_xinclude.rb +20 -20
  154. data/test/test_xml.rb +164 -267
  155. data/test/test_xpath.rb +244 -244
  156. data/test/test_xpath_context.rb +87 -87
  157. data/test/test_xpath_expression.rb +37 -37
  158. metadata +49 -31
  159. data/README.rdoc +0 -217
  160. data/ext/libxml/extconf.h +0 -3
  161. data/ext/libxml/ruby_xml_cbg.c +0 -85
  162. data/lib/libxml/hpricot.rb +0 -78
  163. data/lib/libxml.rb +0 -5
  164. data/lib/xml/libxml.rb +0 -10
  165. data/lib/xml.rb +0 -14
  166. data/script/benchmark/depixelate +0 -634
  167. data/script/benchmark/hamlet.xml +0 -9055
  168. data/script/benchmark/parsecount +0 -170
  169. data/script/benchmark/sock_entries.xml +0 -507
  170. data/script/benchmark/throughput +0 -41
  171. data/script/test +0 -6
  172. data/test/test_deprecated_require.rb +0 -12
data/test/test_error.rb CHANGED
@@ -1,194 +1,197 @@
1
- # encoding: UTF-8
2
-
3
- require_relative './test_helper'
4
- require 'stringio'
5
-
6
- class TestError < Minitest::Test
7
- def test_error_codes
8
- assert_equal(4, LibXML::XML::Error::DTD)
9
- assert_equal(4, LibXML::XML::Error.const_get('DTD'))
10
-
11
- assert_equal(4, LibXML::XML::Error::DOCUMENT_EMPTY)
12
- assert_equal(4, LibXML::XML::Error.const_get('DOCUMENT_EMPTY'))
13
- end
14
-
15
- def test_invalid_handler
16
- assert_raises(RuntimeError) do
17
- LibXML::XML::Error.set_handler
18
- end
19
- end
20
-
21
- def test_handler
22
- exception = nil
23
- LibXML::XML::Error.set_handler do |error|
24
- exception = error
25
- end
26
-
27
- # Raise the error
28
- error = assert_raises(LibXML::XML::Error) do
29
- LibXML::XML::Reader.string('<foo').read
30
- end
31
- assert_equal(exception, error)
32
-
33
- # Check the handler worked
34
- refute_nil(exception)
35
- assert_kind_of(LibXML::XML::Error, exception)
36
- assert_equal("Fatal error: Couldn't find end of Start Tag foo at :1.", exception.message)
37
- assert_equal(LibXML::XML::Error::PARSER, exception.domain)
38
- assert_equal(LibXML::XML::Error::GT_REQUIRED, exception.code)
39
- assert_equal(LibXML::XML::Error::FATAL, exception.level)
40
- assert_nil(exception.file)
41
- assert_equal(1, exception.line)
42
- assert_equal('foo', exception.str1)
43
- assert_nil(exception.str2)
44
- assert_nil(exception.str3)
45
- assert_equal(0, exception.int1)
46
- assert_equal(5, exception.int2)
47
- assert_nil(exception.node)
48
- end
49
-
50
- def test_reset_handler
51
- exception = nil
52
- LibXML::XML::Error.set_handler do |error|
53
- exception = error
54
- end
55
-
56
- LibXML::XML::Error.reset_handler
57
- LibXML::XML::Reader.string('<foo')
58
- assert_nil(exception)
59
- end
60
-
61
- def test_get_handler
62
- assert_respond_to(LibXML::XML::Error, :get_handler)
63
- assert_equal(0, LibXML::XML::Error.method(:get_handler).arity)
64
-
65
- saved_handler = LibXML::XML::Error.get_handler
66
- LibXML::XML::Error.set_handler { puts "New handler" }
67
- refute_equal(LibXML::XML::Error.get_handler, saved_handler)
68
-
69
- if saved_handler
70
- LibXML::XML::Error.set_handler &saved_handler
71
- else
72
- LibXML::XML::Error.reset_handler
73
- end
74
-
75
- assert_equal(LibXML::XML::Error.get_handler, saved_handler)
76
- end
77
-
78
- def test_verbose_handler
79
- LibXML::XML::Error.set_handler(&LibXML::XML::Error::VERBOSE_HANDLER)
80
- output = StringIO.new
81
- original_stderr = Object::STDERR
82
-
83
- Object.const_set(:STDERR, output)
84
- begin
85
- assert_raises(LibXML::XML::Error) do
86
- LibXML::XML::Parser.string('<foo><bar/></foz>').parse
87
- end
88
- ensure
89
- Object.const_set(:STDERR, original_stderr)
90
- end
91
- assert_equal("Fatal error: Opening and ending tag mismatch: foo line 1 and foz at :1.\n", output.string)
92
- end
93
-
94
- def test_no_handler
95
- LibXML::XML::Error.reset_handler
96
- output = StringIO.new
97
- original_stderr = Object::STDERR
98
-
99
- Object.const_set(:STDERR, output)
100
- begin
101
- assert_raises(LibXML::XML::Error) do
102
- LibXML::XML::Parser.string('<foo><bar/></foz>').parse
103
- end
104
- ensure
105
- Object.const_set(:STDERR, original_stderr)
106
- end
107
- assert_equal('', output.string)
108
- end
109
-
110
- def test_parse_error
111
- exception = assert_raises(LibXML::XML::Error) do
112
- LibXML::XML::Parser.string('<foo><bar/></foz>').parse
113
- end
114
-
115
- assert_instance_of(LibXML::XML::Error, exception)
116
- assert_equal("Fatal error: Opening and ending tag mismatch: foo line 1 and foz at :1.", exception.message)
117
- assert_equal(LibXML::XML::Error::PARSER, exception.domain)
118
- assert_equal(LibXML::XML::Error::TAG_NAME_MISMATCH, exception.code)
119
- assert_equal(LibXML::XML::Error::FATAL, exception.level)
120
- assert_nil(exception.file)
121
- assert_equal(1, exception.line)
122
- end
123
-
124
- def test_xpath_error
125
- doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
126
-
127
- exception = assert_raises(LibXML::XML::Error) do
128
- doc.find('/foo[bar=test')
129
- end
130
-
131
- assert_instance_of(LibXML::XML::Error, exception)
132
- assert_equal("Error: Invalid predicate.", exception.message)
133
- assert_equal(LibXML::XML::Error::XPATH, exception.domain)
134
- assert_equal(LibXML::XML::Error::XPATH_INVALID_PREDICATE_ERROR, exception.code)
135
- assert_equal(LibXML::XML::Error::ERROR, exception.level)
136
- assert_nil(exception.file)
137
- assert_nil(nil)
138
- end
139
-
140
- def test_double_parse
141
- LibXML::XML::Error.set_handler {|msg| nil }
142
- parser = LibXML::XML::Parser.string("<test>something</test>")
143
- parser.parse
144
-
145
- error = assert_raises(LibXML::XML::Error) do
146
- # Try parsing a second time
147
- parser.parse
148
- end
149
-
150
- assert_equal(" LibXML::XML::Error.", error.to_s)
151
- end
152
-
153
- def test_double_parse_register_handler
154
- LibXML::XML::Parser.register_error_handler(lambda {|msg| nil })
155
- parser = LibXML::XML::Parser.string("<test>something</test>")
156
- parser.parse
157
-
158
- error = assert_raises(LibXML::XML::Error) do
159
- # Try parsing a second time
160
- parser.parse
161
- end
162
-
163
- assert_equal(" LibXML::XML::Error.", error.to_s)
164
- end
165
-
166
- def test_libxml_parser_empty_string
167
- error = assert_raises(TypeError) do
168
- LibXML::XML::Parser.string(nil)
169
- end
170
- assert_equal('wrong argument type nil (expected String)', error.to_s)
171
-
172
- error = assert_raises(ArgumentError) do
173
- LibXML::XML::Parser.string("")
174
- end
175
- assert_equal('Must specify a string with one or more characters', error.to_s)
176
- end
177
-
178
- def test_error_domain_to_s
179
- exception = assert_raises(LibXML::XML::Error) do
180
- LibXML::XML::Parser.string('<foo href="http://example.org/cgi?k1=v1&k2=v2"></foo>').parse
181
- end
182
-
183
- assert_equal(LibXML::XML::Error::PARSER, exception.domain)
184
- assert_equal("PARSER", exception.domain_to_s)
185
- end
186
-
187
- def test_error_code_to_s
188
- exception = assert_raises(LibXML::XML::Error) do
189
- LibXML::XML::Parser.string('<foo href="http://example.org/cgi?k1=v1&k2=v2"></foo>').parse
190
- end
191
- assert_equal(LibXML::XML::Error::ENTITYREF_SEMICOL_MISSING, exception.code)
192
- assert_equal("ENTITYREF_SEMICOL_MISSING", exception.code_to_s)
193
- end
194
- end
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+ require 'stringio'
5
+
6
+ class TestError < Minitest::Test
7
+ def test_error_codes
8
+ assert_equal(4, LibXML::XML::Error::DTD)
9
+ assert_equal(4, LibXML::XML::Error.const_get('DTD'))
10
+
11
+ assert_equal(4, LibXML::XML::Error::DOCUMENT_EMPTY)
12
+ assert_equal(4, LibXML::XML::Error.const_get('DOCUMENT_EMPTY'))
13
+ end
14
+
15
+ def test_invalid_handler
16
+ assert_raises(RuntimeError) do
17
+ LibXML::XML::Error.set_handler
18
+ end
19
+ end
20
+
21
+ def test_handler
22
+ exception = nil
23
+ LibXML::XML::Error.set_handler do |error|
24
+ exception = error
25
+ end
26
+
27
+ # Raise the error
28
+ error = assert_raises(LibXML::XML::Error) do
29
+ LibXML::XML::Reader.string('<foo').read
30
+ end
31
+ assert_equal(exception, error)
32
+
33
+ # Check the handler worked
34
+ refute_nil(exception)
35
+ assert_kind_of(LibXML::XML::Error, exception)
36
+ assert_equal("Fatal error: Couldn't find end of Start Tag foo at :1.", exception.message)
37
+ assert_equal(LibXML::XML::Error::PARSER, exception.domain)
38
+ assert_equal(LibXML::XML::Error::GT_REQUIRED, exception.code)
39
+ assert_equal(LibXML::XML::Error::FATAL, exception.level)
40
+ assert_nil(exception.file)
41
+ assert_equal(1, exception.line)
42
+ assert_equal('foo', exception.str1)
43
+ assert_nil(exception.str2)
44
+ assert_nil(exception.str3)
45
+ assert_equal(0, exception.int1)
46
+ assert_equal(5, exception.int2)
47
+ assert_nil(exception.node)
48
+ end
49
+
50
+ def test_reset_handler
51
+ exception = nil
52
+ LibXML::XML::Error.set_handler do |error|
53
+ exception = error
54
+ end
55
+
56
+ LibXML::XML::Error.reset_handler
57
+ LibXML::XML::Reader.string('<foo')
58
+ assert_nil(exception)
59
+ end
60
+
61
+ def test_get_handler
62
+ assert_respond_to(LibXML::XML::Error, :get_handler)
63
+ assert_equal(0, LibXML::XML::Error.method(:get_handler).arity)
64
+
65
+ saved_handler = LibXML::XML::Error.get_handler
66
+ LibXML::XML::Error.set_handler { puts "New handler" }
67
+ refute_equal(LibXML::XML::Error.get_handler, saved_handler)
68
+
69
+ if saved_handler
70
+ LibXML::XML::Error.set_handler &saved_handler
71
+ else
72
+ LibXML::XML::Error.reset_handler
73
+ end
74
+ if saved_handler.nil?
75
+ assert_nil(LibXML::XML::Error.get_handler)
76
+ else
77
+ assert_equal(LibXML::XML::Error.get_handler, saved_handler)
78
+ end
79
+ end
80
+
81
+ def test_verbose_handler
82
+ LibXML::XML::Error.set_handler(&LibXML::XML::Error::VERBOSE_HANDLER)
83
+ output = StringIO.new
84
+ original_stderr = Object::STDERR
85
+
86
+ Object.const_set(:STDERR, output)
87
+ begin
88
+ assert_raises(LibXML::XML::Error) do
89
+ LibXML::XML::Parser.string('<foo><bar/></foz>').parse
90
+ end
91
+ ensure
92
+ Object.const_set(:STDERR, original_stderr)
93
+ end
94
+ assert_equal("Fatal error: Opening and ending tag mismatch: foo line 1 and foz at :1.\n", output.string)
95
+ end
96
+
97
+ def test_no_handler
98
+ LibXML::XML::Error.reset_handler
99
+ output = StringIO.new
100
+ original_stderr = Object::STDERR
101
+
102
+ Object.const_set(:STDERR, output)
103
+ begin
104
+ assert_raises(LibXML::XML::Error) do
105
+ LibXML::XML::Parser.string('<foo><bar/></foz>').parse
106
+ end
107
+ ensure
108
+ Object.const_set(:STDERR, original_stderr)
109
+ end
110
+ assert_equal('', output.string)
111
+ end
112
+
113
+ def test_parse_error
114
+ exception = assert_raises(LibXML::XML::Error) do
115
+ LibXML::XML::Parser.string('<foo><bar/></foz>').parse
116
+ end
117
+
118
+ assert_instance_of(LibXML::XML::Error, exception)
119
+ assert_equal("Fatal error: Opening and ending tag mismatch: foo line 1 and foz at :1.", exception.message)
120
+ assert_equal(LibXML::XML::Error::PARSER, exception.domain)
121
+ assert_equal(LibXML::XML::Error::TAG_NAME_MISMATCH, exception.code)
122
+ assert_equal(LibXML::XML::Error::FATAL, exception.level)
123
+ assert_nil(exception.file)
124
+ assert_equal(1, exception.line)
125
+ end
126
+
127
+ def test_xpath_error
128
+ doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
129
+
130
+ exception = assert_raises(LibXML::XML::Error) do
131
+ doc.find('/foo[bar=test')
132
+ end
133
+
134
+ assert_instance_of(LibXML::XML::Error, exception)
135
+ assert_equal("Error: Invalid predicate.", exception.message)
136
+ assert_equal(LibXML::XML::Error::XPATH, exception.domain)
137
+ assert_equal(LibXML::XML::Error::XPATH_INVALID_PREDICATE_ERROR, exception.code)
138
+ assert_equal(LibXML::XML::Error::ERROR, exception.level)
139
+ assert_nil(exception.file)
140
+ assert_nil(nil)
141
+ end
142
+
143
+ def test_double_parse
144
+ LibXML::XML::Error.set_handler {|msg| nil }
145
+ parser = LibXML::XML::Parser.string("<test>something</test>")
146
+ parser.parse
147
+
148
+ error = assert_raises(LibXML::XML::Error) do
149
+ # Try parsing a second time
150
+ parser.parse
151
+ end
152
+
153
+ assert_equal(" LibXML::XML::Error.", error.to_s)
154
+ end
155
+
156
+ def test_double_parse_register_handler
157
+ LibXML::XML::Error.set_handler {|msg| nil }
158
+ parser = LibXML::XML::Parser.string("<test>something</test>")
159
+ parser.parse
160
+
161
+ error = assert_raises(LibXML::XML::Error) do
162
+ # Try parsing a second time
163
+ parser.parse
164
+ end
165
+
166
+ assert_equal(" LibXML::XML::Error.", error.to_s)
167
+ end
168
+
169
+ def test_libxml_parser_empty_string
170
+ error = assert_raises(TypeError) do
171
+ LibXML::XML::Parser.string(nil)
172
+ end
173
+ assert_equal('wrong argument type nil (expected String)', error.to_s)
174
+
175
+ error = assert_raises(ArgumentError) do
176
+ LibXML::XML::Parser.string("")
177
+ end
178
+ assert_equal('Must specify a string with one or more characters', error.to_s)
179
+ end
180
+
181
+ def test_error_domain_to_s
182
+ exception = assert_raises(LibXML::XML::Error) do
183
+ LibXML::XML::Parser.string('<foo href="http://example.org/cgi?k1=v1&k2=v2"></foo>').parse
184
+ end
185
+
186
+ assert_equal(LibXML::XML::Error::PARSER, exception.domain)
187
+ assert_equal("PARSER", exception.domain_to_s)
188
+ end
189
+
190
+ def test_error_code_to_s
191
+ exception = assert_raises(LibXML::XML::Error) do
192
+ LibXML::XML::Parser.string('<foo href="http://example.org/cgi?k1=v1&k2=v2"></foo>').parse
193
+ end
194
+ assert_equal(LibXML::XML::Error::ENTITYREF_SEMICOL_MISSING, exception.code)
195
+ assert_equal("ENTITYREF_SEMICOL_MISSING", exception.code_to_s)
196
+ end
197
+ end
data/test/test_helper.rb CHANGED
@@ -1,13 +1,21 @@
1
- # encoding: UTF-8
2
-
3
- # To make testing/debugging easier, test within this source tree versus an installed gem
4
-
5
- require 'bundler/setup'
6
- require 'minitest/autorun'
7
- require 'libxml-ruby'
8
-
9
- def windows?
10
- !(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/).nil?
11
- end
12
-
13
- STDOUT.write "\nlibxml2: #{LibXML::XML::LIBXML_VERSION}\n#{RUBY_DESCRIPTION}\n\n"
1
+ # encoding: UTF-8
2
+
3
+ # To make testing/debugging easier, test within this source tree versus an installed gem
4
+ require 'bundler/setup'
5
+
6
+ # Add ext directory to load path to make it easier to test locally built extensions
7
+ ext_path = File.expand_path(File.join(__dir__, '..', 'ext', 'libxml'))
8
+ $LOAD_PATH.unshift(File.expand_path(ext_path))
9
+
10
+ # Now load code
11
+ require 'libxml-ruby'
12
+
13
+ def windows?
14
+ !(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/).nil?
15
+ end
16
+
17
+ STDOUT.write "\nlibxml2: #{LibXML::XML::LIBXML_VERSION}\n#{RUBY_DESCRIPTION}\n\n"
18
+
19
+ require 'minitest/autorun'
20
+ Minitest.load_plugins
21
+