libxml-ruby 2.8.0 → 3.2.3
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.
- checksums.yaml +5 -5
- data/HISTORY +859 -775
- data/LICENSE +20 -20
- data/MANIFEST +166 -166
- data/README.rdoc +217 -184
- data/Rakefile +98 -78
- data/ext/libxml/extconf.rb +61 -116
- data/ext/libxml/libxml.c +80 -76
- data/ext/libxml/ruby_libxml.h +67 -75
- data/ext/libxml/ruby_xml.c +937 -893
- data/ext/libxml/ruby_xml.h +10 -10
- data/ext/libxml/ruby_xml_attr.c +333 -333
- data/ext/libxml/ruby_xml_attr.h +12 -12
- data/ext/libxml/ruby_xml_attr_decl.c +153 -153
- data/ext/libxml/ruby_xml_attr_decl.h +11 -11
- data/ext/libxml/ruby_xml_attributes.c +275 -275
- data/ext/libxml/ruby_xml_attributes.h +15 -15
- data/ext/libxml/ruby_xml_cbg.c +85 -85
- data/ext/libxml/ruby_xml_document.c +1123 -1147
- data/ext/libxml/ruby_xml_document.h +11 -11
- data/ext/libxml/ruby_xml_dtd.c +248 -268
- data/ext/libxml/ruby_xml_dtd.h +9 -9
- data/ext/libxml/ruby_xml_encoding.c +250 -260
- data/ext/libxml/ruby_xml_encoding.h +16 -19
- data/ext/libxml/ruby_xml_error.c +996 -996
- data/ext/libxml/ruby_xml_error.h +12 -12
- data/ext/libxml/ruby_xml_html_parser.c +89 -92
- data/ext/libxml/ruby_xml_html_parser.h +10 -10
- data/ext/libxml/ruby_xml_html_parser_context.c +337 -338
- data/ext/libxml/ruby_xml_html_parser_context.h +10 -10
- data/ext/libxml/ruby_xml_html_parser_options.c +46 -46
- data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
- data/ext/libxml/ruby_xml_input_cbg.c +191 -191
- data/ext/libxml/ruby_xml_input_cbg.h +20 -20
- data/ext/libxml/ruby_xml_io.c +47 -50
- data/ext/libxml/ruby_xml_io.h +10 -10
- data/ext/libxml/ruby_xml_namespace.c +154 -153
- data/ext/libxml/ruby_xml_namespace.h +10 -10
- data/ext/libxml/ruby_xml_namespaces.c +293 -293
- data/ext/libxml/ruby_xml_namespaces.h +9 -9
- data/ext/libxml/ruby_xml_node.c +1406 -1452
- data/ext/libxml/ruby_xml_node.h +13 -11
- data/ext/libxml/ruby_xml_parser.c +91 -94
- data/ext/libxml/ruby_xml_parser.h +12 -12
- data/ext/libxml/ruby_xml_parser_context.c +999 -1001
- data/ext/libxml/ruby_xml_parser_context.h +10 -10
- data/ext/libxml/ruby_xml_parser_options.c +66 -66
- data/ext/libxml/ruby_xml_parser_options.h +12 -12
- data/ext/libxml/ruby_xml_reader.c +1239 -1228
- data/ext/libxml/ruby_xml_reader.h +17 -17
- data/ext/libxml/ruby_xml_relaxng.c +110 -111
- data/ext/libxml/ruby_xml_relaxng.h +10 -10
- data/ext/libxml/ruby_xml_sax2_handler.c +326 -328
- data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
- data/ext/libxml/ruby_xml_sax_parser.c +116 -120
- data/ext/libxml/ruby_xml_sax_parser.h +10 -10
- data/ext/libxml/ruby_xml_schema.c +350 -301
- data/ext/libxml/ruby_xml_schema.h +806 -809
- data/ext/libxml/ruby_xml_schema_attribute.c +61 -109
- data/ext/libxml/ruby_xml_schema_attribute.h +15 -15
- data/ext/libxml/ruby_xml_schema_element.c +69 -94
- data/ext/libxml/ruby_xml_schema_element.h +14 -14
- data/ext/libxml/ruby_xml_schema_facet.c +46 -52
- data/ext/libxml/ruby_xml_schema_facet.h +13 -13
- data/ext/libxml/ruby_xml_schema_type.c +214 -259
- data/ext/libxml/ruby_xml_schema_type.h +9 -9
- data/ext/libxml/ruby_xml_version.h +9 -9
- data/ext/libxml/ruby_xml_writer.c +1133 -1137
- data/ext/libxml/ruby_xml_writer.h +10 -10
- data/ext/libxml/ruby_xml_xinclude.c +16 -16
- data/ext/libxml/ruby_xml_xinclude.h +11 -11
- data/ext/libxml/ruby_xml_xpath.c +194 -188
- data/ext/libxml/ruby_xml_xpath.h +13 -13
- data/ext/libxml/ruby_xml_xpath_context.c +360 -361
- data/ext/libxml/ruby_xml_xpath_context.h +9 -9
- data/ext/libxml/ruby_xml_xpath_expression.c +81 -81
- data/ext/libxml/ruby_xml_xpath_expression.h +10 -10
- data/ext/libxml/ruby_xml_xpath_object.c +338 -335
- data/ext/libxml/ruby_xml_xpath_object.h +17 -17
- data/ext/libxml/ruby_xml_xpointer.c +99 -99
- data/ext/libxml/ruby_xml_xpointer.h +11 -11
- data/ext/vc/libxml_ruby.sln +17 -15
- data/lib/libxml/node.rb +2 -78
- data/lib/libxml/parser.rb +0 -266
- data/lib/libxml/sax_parser.rb +0 -17
- data/lib/libxml/schema/attribute.rb +19 -19
- data/lib/libxml/schema/element.rb +19 -27
- data/lib/libxml/schema/type.rb +21 -29
- data/lib/libxml/schema.rb +47 -66
- data/lib/libxml-ruby.rb +30 -0
- data/lib/libxml.rb +3 -33
- data/libxml-ruby.gemspec +48 -44
- data/script/benchmark/depixelate +634 -634
- data/script/benchmark/hamlet.xml +9054 -9054
- data/script/benchmark/parsecount +170 -170
- data/script/benchmark/throughput +41 -41
- data/script/test +6 -6
- data/setup.rb +0 -1
- data/test/c14n/given/example-1.xml +14 -14
- data/test/c14n/given/example-2.xml +11 -11
- data/test/c14n/given/example-3.xml +18 -18
- data/test/c14n/given/example-4.xml +9 -9
- data/test/c14n/given/example-5.xml +12 -12
- data/test/c14n/given/example-6.xml +2 -2
- data/test/c14n/given/example-7.xml +11 -11
- data/test/c14n/given/example-8.xml +11 -11
- data/test/c14n/given/example-8.xpath +9 -9
- data/test/c14n/result/1-1-without-comments/example-1 +3 -3
- data/test/c14n/result/1-1-without-comments/example-2 +10 -10
- data/test/c14n/result/1-1-without-comments/example-3 +13 -13
- data/test/c14n/result/1-1-without-comments/example-4 +8 -8
- data/test/c14n/result/1-1-without-comments/example-5 +2 -2
- data/test/c14n/result/with-comments/example-1 +5 -5
- data/test/c14n/result/with-comments/example-2 +10 -10
- data/test/c14n/result/with-comments/example-3 +13 -13
- data/test/c14n/result/with-comments/example-4 +8 -8
- data/test/c14n/result/with-comments/example-5 +3 -3
- data/test/c14n/result/without-comments/example-1 +3 -3
- data/test/c14n/result/without-comments/example-2 +10 -10
- data/test/c14n/result/without-comments/example-3 +13 -13
- data/test/c14n/result/without-comments/example-4 +8 -8
- data/test/c14n/result/without-comments/example-5 +2 -2
- data/test/model/atom.xml +12 -12
- data/test/model/bands.iso-8859-1.xml +4 -4
- data/test/model/bands.utf-8.xml +4 -4
- data/test/model/bands.xml +4 -4
- data/test/model/books.xml +153 -153
- data/test/model/cwm_1_0.xml +11336 -0
- data/test/model/merge_bug_data.xml +58 -58
- data/test/model/ruby-lang.html +238 -238
- data/test/model/rubynet.xml +79 -79
- data/test/model/shiporder.rnc +28 -28
- data/test/model/shiporder.rng +86 -86
- data/test/model/shiporder.xml +22 -22
- data/test/model/shiporder.xsd +44 -40
- data/test/model/shiporder_bad.xsd +40 -0
- data/test/model/shiporder_import.xsd +45 -0
- data/test/model/soap.xml +27 -27
- data/test/model/xinclude.xml +4 -4
- data/test/{tc_attr.rb → test_attr.rb} +23 -25
- data/test/{tc_attr_decl.rb → test_attr_decl.rb} +13 -14
- data/test/{tc_attributes.rb → test_attributes.rb} +11 -18
- data/test/{tc_canonicalize.rb → test_canonicalize.rb} +36 -41
- data/test/test_deprecated_require.rb +12 -0
- data/test/{tc_document.rb → test_document.rb} +33 -27
- data/test/test_document_write.rb +146 -0
- data/test/{tc_dtd.rb → test_dtd.rb} +29 -29
- data/test/{tc_encoding.rb → test_encoding.rb} +129 -126
- data/test/{tc_encoding_sax.rb → test_encoding_sax.rb} +7 -6
- data/test/test_error.rb +178 -0
- data/test/test_helper.rb +4 -9
- data/test/test_html_parser.rb +162 -0
- data/test/test_html_parser_context.rb +23 -0
- data/test/test_namespace.rb +60 -0
- data/test/{tc_namespaces.rb → test_namespaces.rb} +34 -44
- data/test/{tc_node.rb → test_node.rb} +68 -47
- data/test/{tc_node_cdata.rb → test_node_cdata.rb} +12 -13
- data/test/{tc_node_comment.rb → test_node_comment.rb} +7 -8
- data/test/{tc_node_copy.rb → test_node_copy.rb} +4 -6
- data/test/{tc_node_edit.rb → test_node_edit.rb} +23 -41
- data/test/{tc_node_pi.rb → test_node_pi.rb} +37 -40
- data/test/{tc_node_text.rb → test_node_text.rb} +10 -12
- data/test/{tc_node_write.rb → test_node_write.rb} +18 -29
- data/test/test_node_xlink.rb +28 -0
- data/test/test_parser.rb +324 -0
- data/test/{tc_parser_context.rb → test_parser_context.rb} +42 -49
- data/test/{tc_properties.rb → test_properties.rb} +6 -7
- data/test/test_reader.rb +364 -0
- data/test/test_relaxng.rb +53 -0
- data/test/{tc_sax_parser.rb → test_sax_parser.rb} +44 -38
- data/test/test_schema.rb +231 -0
- data/test/test_suite.rb +38 -40
- data/test/{tc_traversal.rb → test_traversal.rb} +5 -6
- data/test/{tc_writer.rb → test_writer.rb} +468 -448
- data/test/{tc_xinclude.rb → test_xinclude.rb} +4 -5
- data/test/test_xml.rb +263 -0
- data/test/{tc_xpath.rb → test_xpath.rb} +31 -32
- data/test/{tc_xpath_context.rb → test_xpath_context.rb} +8 -9
- data/test/test_xpath_expression.rb +37 -0
- data/test/{tc_xpointer.rb → test_xpointer.rb} +16 -18
- metadata +122 -100
- data/lib/libxml/ns.rb +0 -22
- data/lib/libxml/properties.rb +0 -23
- data/lib/libxml/reader.rb +0 -29
- data/lib/libxml/xpath_object.rb +0 -16
- data/test/etc_doc_to_s.rb +0 -21
- data/test/ets_doc_file.rb +0 -17
- data/test/ets_doc_to_s.rb +0 -23
- data/test/ets_gpx.rb +0 -28
- data/test/ets_node_gc.rb +0 -23
- data/test/ets_test.xml +0 -2
- data/test/ets_tsr.rb +0 -11
- data/test/tc_deprecated_require.rb +0 -13
- data/test/tc_document_write.rb +0 -196
- data/test/tc_error.rb +0 -180
- data/test/tc_html_parser.rb +0 -153
- data/test/tc_html_parser_context.rb +0 -24
- data/test/tc_namespace.rb +0 -62
- data/test/tc_node_xlink.rb +0 -29
- data/test/tc_parser.rb +0 -381
- data/test/tc_reader.rb +0 -400
- data/test/tc_relaxng.rb +0 -54
- data/test/tc_schema.rb +0 -162
- data/test/tc_xml.rb +0 -226
- data/test/tc_xpath_expression.rb +0 -38
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
require 'test/unit'
|
|
3
|
+
require_relative './test_helper'
|
|
5
4
|
|
|
6
|
-
class TestXInclude < Test
|
|
5
|
+
class TestXInclude < Minitest::Test
|
|
7
6
|
def setup
|
|
8
|
-
@doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/xinclude.xml'))
|
|
9
|
-
assert_instance_of(XML::Document, @doc)
|
|
7
|
+
@doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/xinclude.xml'))
|
|
8
|
+
assert_instance_of(LibXML::XML::Document, @doc)
|
|
10
9
|
end
|
|
11
10
|
|
|
12
11
|
def teardown
|
data/test/test_xml.rb
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
require_relative './test_helper'
|
|
4
|
+
require 'stringio'
|
|
5
|
+
|
|
6
|
+
class TestXml < Minitest::Test
|
|
7
|
+
# ----- Constants ------
|
|
8
|
+
def test_lib_versions
|
|
9
|
+
assert(LibXML::XML.check_lib_versions)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_debug_entities
|
|
13
|
+
original = LibXML::XML.debug_entities
|
|
14
|
+
|
|
15
|
+
LibXML::XML.debug_entities = false
|
|
16
|
+
refute(LibXML::XML.debug_entities)
|
|
17
|
+
|
|
18
|
+
LibXML::XML.debug_entities = true
|
|
19
|
+
assert(LibXML::XML.debug_entities)
|
|
20
|
+
|
|
21
|
+
LibXML::XML.debug_entities = false
|
|
22
|
+
refute(LibXML::XML.debug_entities)
|
|
23
|
+
|
|
24
|
+
LibXML::XML.debug_entities = original
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_default_compression
|
|
28
|
+
return unless LibXML::XML.default_compression
|
|
29
|
+
|
|
30
|
+
original = LibXML::XML.default_compression
|
|
31
|
+
|
|
32
|
+
0.upto(9) do |i|
|
|
33
|
+
LibXML::XML.default_compression = i
|
|
34
|
+
assert_equal(i, LibXML::XML.default_compression)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
9.downto(0) do |i|
|
|
38
|
+
assert_equal(i, LibXML::XML.default_compression = i)
|
|
39
|
+
assert_equal(i, LibXML::XML.default_compression)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
0.downto(-10) do |i|
|
|
43
|
+
assert_equal(i, LibXML::XML.default_compression = i)
|
|
44
|
+
assert_equal(0, LibXML::XML.default_compression)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
10.upto(20) do |i|
|
|
48
|
+
assert_equal(i, LibXML::XML.default_compression = i)
|
|
49
|
+
assert_equal(9, LibXML::XML.default_compression)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
LibXML::XML.default_compression = original
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_default_keep_blanks
|
|
56
|
+
original = LibXML::XML.default_keep_blanks
|
|
57
|
+
|
|
58
|
+
LibXML::XML.default_keep_blanks = false
|
|
59
|
+
refute(LibXML::XML.default_keep_blanks)
|
|
60
|
+
assert_equal(LibXML::XML::Parser::Options::NOBLANKS, LibXML::XML.default_options)
|
|
61
|
+
|
|
62
|
+
LibXML::XML.default_keep_blanks = true
|
|
63
|
+
assert(LibXML::XML.default_keep_blanks)
|
|
64
|
+
assert_equal(0, LibXML::XML.default_options)
|
|
65
|
+
|
|
66
|
+
LibXML::XML.default_keep_blanks = original
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_default_line_numbers
|
|
70
|
+
original = LibXML::XML.default_line_numbers
|
|
71
|
+
|
|
72
|
+
LibXML::XML.default_line_numbers = false
|
|
73
|
+
refute(LibXML::XML.default_line_numbers)
|
|
74
|
+
|
|
75
|
+
LibXML::XML.default_line_numbers = true
|
|
76
|
+
assert(LibXML::XML.default_line_numbers)
|
|
77
|
+
|
|
78
|
+
LibXML::XML.default_line_numbers = false
|
|
79
|
+
refute(LibXML::XML.default_line_numbers)
|
|
80
|
+
|
|
81
|
+
LibXML::XML.default_line_numbers = original
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def test_default_substitute_entities
|
|
85
|
+
original = LibXML::XML.default_substitute_entities
|
|
86
|
+
|
|
87
|
+
LibXML::XML.default_substitute_entities = false
|
|
88
|
+
refute(LibXML::XML.default_substitute_entities)
|
|
89
|
+
assert_equal(0, LibXML::XML.default_options)
|
|
90
|
+
|
|
91
|
+
LibXML::XML.default_substitute_entities = true
|
|
92
|
+
assert(LibXML::XML.default_substitute_entities)
|
|
93
|
+
assert_equal(LibXML::XML::Parser::Options::NOENT, LibXML::XML.default_options)
|
|
94
|
+
|
|
95
|
+
LibXML::XML.default_substitute_entities = false
|
|
96
|
+
refute(LibXML::XML.default_substitute_entities)
|
|
97
|
+
|
|
98
|
+
LibXML::XML.default_substitute_entities = original
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_default_tree_indent_string
|
|
102
|
+
original = LibXML::XML.default_tree_indent_string
|
|
103
|
+
|
|
104
|
+
s = LibXML::XML.default_tree_indent_string
|
|
105
|
+
assert_instance_of(String, s)
|
|
106
|
+
assert_equal(' ', s)
|
|
107
|
+
LibXML::XML.default_tree_indent_string = 'uga'
|
|
108
|
+
s = LibXML::XML.default_tree_indent_string
|
|
109
|
+
assert_instance_of(String, s)
|
|
110
|
+
assert_equal('uga', s)
|
|
111
|
+
LibXML::XML.default_tree_indent_string = ' '
|
|
112
|
+
s = LibXML::XML.default_tree_indent_string
|
|
113
|
+
assert_instance_of(String, s)
|
|
114
|
+
assert_equal(' ', s)
|
|
115
|
+
|
|
116
|
+
LibXML::XML.default_tree_indent_string = original
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def test_default_validity_checking
|
|
120
|
+
original = LibXML::XML.default_validity_checking
|
|
121
|
+
|
|
122
|
+
LibXML::XML.default_validity_checking = false
|
|
123
|
+
refute(LibXML::XML.default_validity_checking)
|
|
124
|
+
assert_equal(0, LibXML::XML.default_options)
|
|
125
|
+
|
|
126
|
+
LibXML::XML.default_validity_checking = true
|
|
127
|
+
assert(LibXML::XML.default_validity_checking)
|
|
128
|
+
assert_equal(LibXML::XML::Parser::Options::DTDVALID, LibXML::XML.default_options)
|
|
129
|
+
|
|
130
|
+
LibXML::XML.default_validity_checking = false
|
|
131
|
+
refute(LibXML::XML.default_validity_checking)
|
|
132
|
+
|
|
133
|
+
LibXML::XML.default_validity_checking = original
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def test_default_warnings
|
|
137
|
+
original = LibXML::XML.default_warnings
|
|
138
|
+
|
|
139
|
+
LibXML::XML.default_warnings = false
|
|
140
|
+
refute(LibXML::XML.default_warnings)
|
|
141
|
+
assert_equal(LibXML::XML::Parser::Options::NOWARNING, LibXML::XML.default_options)
|
|
142
|
+
|
|
143
|
+
LibXML::XML.default_warnings = true
|
|
144
|
+
assert(LibXML::XML.default_warnings)
|
|
145
|
+
assert_equal(0, LibXML::XML.default_options)
|
|
146
|
+
|
|
147
|
+
LibXML::XML.default_warnings = false
|
|
148
|
+
refute(LibXML::XML.default_warnings)
|
|
149
|
+
|
|
150
|
+
LibXML::XML.default_warnings = original
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def test_enabled_automata
|
|
154
|
+
assert(LibXML::XML.enabled_automata?)
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def test_enabled_c14n
|
|
158
|
+
assert(LibXML::XML.enabled_c14n?)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def test_enabled_catalog
|
|
162
|
+
assert(LibXML::XML.enabled_catalog?)
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def test_enabled_debug
|
|
166
|
+
assert(LibXML::XML.enabled_debug?)
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
def test_enabled_docbook
|
|
170
|
+
assert(LibXML::XML.enabled_docbook?)
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def test_enabled_ftp
|
|
174
|
+
assert(LibXML::XML.enabled_ftp?)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def test_enabled_http
|
|
178
|
+
assert(LibXML::XML.enabled_http?)
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
def test_enabled_html
|
|
182
|
+
assert(LibXML::XML.enabled_html?)
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
def test_enabled_iconv
|
|
186
|
+
iconv_enabled = RUBY_PLATFORM !~ /darwin/
|
|
187
|
+
assert_equal(iconv_enabled, LibXML::XML.enabled_iconv?)
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def test_enabled_memory_debug
|
|
191
|
+
assert_equal(false, LibXML::XML.enabled_memory_debug?)
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def test_enabled_regexp
|
|
195
|
+
assert(LibXML::XML.enabled_regexp?)
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def test_enabled_schemas
|
|
199
|
+
assert(LibXML::XML.enabled_schemas?)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def test_enabled_thread
|
|
203
|
+
assert(LibXML::XML.enabled_thread?)
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
def test_enabled_unicode
|
|
207
|
+
assert(LibXML::XML.enabled_unicode?)
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def test_enabled_xinclude
|
|
211
|
+
assert(LibXML::XML.enabled_xinclude?)
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
def test_enabled_xpath
|
|
215
|
+
assert(LibXML::XML.enabled_xpath?)
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
def test_enabled_xpointer
|
|
219
|
+
assert(LibXML::XML.enabled_xpointer?)
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
def test_enabled_zlib
|
|
223
|
+
assert(LibXML::XML.enabled_zlib?.is_a?(TrueClass) || LibXML::XML.enabled_zlib?.is_a?(FalseClass))
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def test_intent_tree_output
|
|
227
|
+
assert(TrueClass, LibXML::XML.indent_tree_output)
|
|
228
|
+
|
|
229
|
+
LibXML::XML.indent_tree_output = false
|
|
230
|
+
assert(FalseClass, LibXML::XML.indent_tree_output)
|
|
231
|
+
|
|
232
|
+
LibXML::XML.indent_tree_output = true
|
|
233
|
+
assert(TrueClass, LibXML::XML.indent_tree_output)
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
def test_version
|
|
237
|
+
assert_instance_of(String, LibXML::XML::VERSION)
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
def test_vernum
|
|
241
|
+
assert_instance_of(Integer, LibXML::XML::VERNUM)
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
def test_libxml_parser_features
|
|
245
|
+
assert_instance_of(Array, LibXML::XML.features)
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
def test_default_options
|
|
249
|
+
assert_equal(0, LibXML::XML.default_options)
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
def test_default_save_no_empty_tags
|
|
253
|
+
original = LibXML::XML.default_save_no_empty_tags
|
|
254
|
+
|
|
255
|
+
LibXML::XML.default_save_no_empty_tags = false
|
|
256
|
+
refute(LibXML::XML.default_save_no_empty_tags)
|
|
257
|
+
|
|
258
|
+
LibXML::XML.default_save_no_empty_tags = true
|
|
259
|
+
assert(LibXML::XML.default_save_no_empty_tags)
|
|
260
|
+
|
|
261
|
+
LibXML::XML.default_save_no_empty_tags = original
|
|
262
|
+
end
|
|
263
|
+
end
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
require_relative './test_helper'
|
|
4
4
|
require 'tempfile'
|
|
5
|
-
require 'test/unit'
|
|
6
5
|
|
|
7
|
-
class TestXPath < Test
|
|
6
|
+
class TestXPath < Minitest::Test
|
|
8
7
|
def setup
|
|
9
|
-
@doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
|
|
8
|
+
@doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
|
|
10
9
|
end
|
|
11
10
|
|
|
12
11
|
def teardown
|
|
@@ -15,14 +14,14 @@ class TestXPath < Test::Unit::TestCase
|
|
|
15
14
|
|
|
16
15
|
def test_doc_find
|
|
17
16
|
nodes = @doc.find('/soap:Envelope')
|
|
18
|
-
assert_instance_of(XML::XPath::Object, nodes)
|
|
17
|
+
assert_instance_of(LibXML::XML::XPath::Object, nodes)
|
|
19
18
|
assert_equal(1, nodes.length)
|
|
20
|
-
assert_equal(nodes.xpath_type, XML::XPath::NODESET)
|
|
19
|
+
assert_equal(nodes.xpath_type, LibXML::XML::XPath::NODESET)
|
|
21
20
|
end
|
|
22
21
|
|
|
23
22
|
def test_doc_find_first
|
|
24
23
|
node = @doc.find_first('/soap:Envelope/soap:Body')
|
|
25
|
-
assert_instance_of(XML::Node, node)
|
|
24
|
+
assert_instance_of(LibXML::XML::Node, node)
|
|
26
25
|
end
|
|
27
26
|
|
|
28
27
|
def test_ns
|
|
@@ -34,7 +33,7 @@ class TestXPath < Test::Unit::TestCase
|
|
|
34
33
|
_stress = GC.stress
|
|
35
34
|
GC.stress = true
|
|
36
35
|
|
|
37
|
-
doc = XML::Document.string('<foo xmlns="http://bar.com" />')
|
|
36
|
+
doc = LibXML::XML::Document.string('<foo xmlns="http://bar.com" />')
|
|
38
37
|
node = doc.root
|
|
39
38
|
# This line segfaults on prior versions of libxml-ruby
|
|
40
39
|
node.find("namespace::*")
|
|
@@ -90,7 +89,7 @@ class TestXPath < Test::Unit::TestCase
|
|
|
90
89
|
|
|
91
90
|
def test_default_ns5
|
|
92
91
|
# Find all nodes with http://services.somewhere.com namespace
|
|
93
|
-
XML::Namespace.new(@doc.root, 'ns', 'http://services.somewhere.com')
|
|
92
|
+
LibXML::XML::Namespace.new(@doc.root, 'ns', 'http://services.somewhere.com')
|
|
94
93
|
nodes = @doc.find('//ns:*')
|
|
95
94
|
assert_equal(2, nodes.length)
|
|
96
95
|
assert_equal('getManufacturerNamesResponse', nodes[0].name)
|
|
@@ -106,20 +105,20 @@ class TestXPath < Test::Unit::TestCase
|
|
|
106
105
|
end
|
|
107
106
|
|
|
108
107
|
def test_register_default_ns
|
|
109
|
-
doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/atom.xml'))
|
|
108
|
+
doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/atom.xml'))
|
|
110
109
|
|
|
111
110
|
# No namespace has been yet defined
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
assert_raises(LibXML::XML::Error) do
|
|
112
|
+
doc.find("atom:title")
|
|
114
113
|
end
|
|
115
114
|
|
|
116
115
|
node = doc.find('atom:title', 'atom:http://www.w3.org/2005/Atom')
|
|
117
|
-
|
|
116
|
+
refute_nil(node)
|
|
118
117
|
|
|
119
118
|
# Register namespace
|
|
120
119
|
doc.root.namespaces.default_prefix = 'atom'
|
|
121
120
|
node = doc.find("atom:title")
|
|
122
|
-
|
|
121
|
+
refute_nil(node)
|
|
123
122
|
end
|
|
124
123
|
|
|
125
124
|
def test_node_find
|
|
@@ -129,7 +128,7 @@ class TestXPath < Test::Unit::TestCase
|
|
|
129
128
|
# Since we are searching on the node, don't have to register namespace
|
|
130
129
|
nodes = node.find('ns1:name')
|
|
131
130
|
assert_equal(1, nodes.length)
|
|
132
|
-
|
|
131
|
+
refute_equal(nodes.first.object_id, nodes.last.object_id)
|
|
133
132
|
assert_equal('name', nodes.first.name)
|
|
134
133
|
assert_equal('man1', nodes.first.content)
|
|
135
134
|
end
|
|
@@ -144,8 +143,8 @@ class TestXPath < Test::Unit::TestCase
|
|
|
144
143
|
end
|
|
145
144
|
|
|
146
145
|
def test_node_no_doc
|
|
147
|
-
node = XML::Node.new('header', 'some content')
|
|
148
|
-
|
|
146
|
+
node = LibXML::XML::Node.new('header', 'some content')
|
|
147
|
+
assert_raises(TypeError) do
|
|
149
148
|
node = node.find_first('/header')
|
|
150
149
|
end
|
|
151
150
|
end
|
|
@@ -158,63 +157,63 @@ class TestXPath < Test::Unit::TestCase
|
|
|
158
157
|
# to the document's nodes. A segmentation fault then happens.
|
|
159
158
|
|
|
160
159
|
1000.times do
|
|
161
|
-
doc = XML::Document.new('1.0')
|
|
162
|
-
doc.root = XML::Node.new("header")
|
|
160
|
+
doc = LibXML::XML::Document.new('1.0')
|
|
161
|
+
doc.root = LibXML::XML::Node.new("header")
|
|
163
162
|
|
|
164
163
|
1000.times do
|
|
165
|
-
doc.root << XML::Node.new("footer")
|
|
164
|
+
doc.root << LibXML::XML::Node.new("footer")
|
|
166
165
|
end
|
|
167
166
|
|
|
168
|
-
|
|
167
|
+
doc.find('/header/footer')
|
|
169
168
|
end
|
|
170
169
|
end
|
|
171
170
|
|
|
172
171
|
# Test that document doesn't get freed before nodes
|
|
173
172
|
def test_xpath_free
|
|
174
|
-
doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
|
|
173
|
+
doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
|
|
175
174
|
nodes = doc.find('//*')
|
|
176
175
|
GC.start
|
|
177
176
|
assert_equal('Envelope', nodes.first.name)
|
|
178
177
|
end
|
|
179
178
|
|
|
180
179
|
def test_xpath_namespace_nodes
|
|
181
|
-
doc = XML::Document.string('<feed xmlns="http://www.w3.org/2005/Atom" xmlns:xhtml="http://www.w3.org/1999/xhtml"><entry/></feed>')
|
|
180
|
+
doc = LibXML::XML::Document.string('<feed xmlns="http://www.w3.org/2005/Atom" xmlns:xhtml="http://www.w3.org/1999/xhtml"><entry/></feed>')
|
|
182
181
|
nodes = doc.find('//atom:entry|namespace::*', :atom => "http://www.w3.org/2005/Atom")
|
|
183
182
|
assert_equal(4, nodes.length)
|
|
184
183
|
|
|
185
184
|
node = nodes[0]
|
|
186
|
-
assert_equal(XML::Node::ELEMENT_NODE, node.node_type)
|
|
185
|
+
assert_equal(LibXML::XML::Node::ELEMENT_NODE, node.node_type)
|
|
187
186
|
|
|
188
187
|
node = nodes[1]
|
|
189
|
-
assert_equal(XML::Node::NAMESPACE_DECL, node.node_type)
|
|
188
|
+
assert_equal(LibXML::XML::Node::NAMESPACE_DECL, node.node_type)
|
|
190
189
|
|
|
191
190
|
node = nodes[2]
|
|
192
|
-
assert_equal(XML::Node::NAMESPACE_DECL, node.node_type)
|
|
191
|
+
assert_equal(LibXML::XML::Node::NAMESPACE_DECL, node.node_type)
|
|
193
192
|
|
|
194
193
|
node = nodes[3]
|
|
195
|
-
assert_equal(XML::Node::NAMESPACE_DECL, node.node_type)
|
|
194
|
+
assert_equal(LibXML::XML::Node::NAMESPACE_DECL, node.node_type)
|
|
196
195
|
end
|
|
197
196
|
|
|
198
197
|
# Test to make sure we don't get nil on empty results.
|
|
199
198
|
# This is also to test that we don't segfault due to our C code getting a NULL pointer
|
|
200
199
|
# and not handling it properly.
|
|
201
200
|
def test_xpath_empty_result
|
|
202
|
-
doc = XML::Document.string('<html><body><p>Welcome to XHTML land!</p></body></html>')
|
|
201
|
+
doc = LibXML::XML::Document.string('<html><body><p>Welcome to XHTML land!</p></body></html>')
|
|
203
202
|
nodes = doc.find("//object/param[translate(@name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'wmode']")
|
|
204
|
-
|
|
203
|
+
refute_nil nodes
|
|
205
204
|
end
|
|
206
205
|
|
|
207
206
|
def test_invalid_expression
|
|
208
207
|
xml = LibXML::XML::Document.string('<a></a>')
|
|
209
208
|
|
|
210
209
|
# Using the expression twice used to cause a Segmentation Fault
|
|
211
|
-
error =
|
|
210
|
+
error = assert_raises(LibXML::XML::Error) do
|
|
212
211
|
xml.find('//a/')
|
|
213
212
|
end
|
|
214
213
|
assert_equal("Error: Invalid expression.", error.to_s)
|
|
215
214
|
|
|
216
215
|
# Try again - this used to cause a Segmentation Fault
|
|
217
|
-
error =
|
|
216
|
+
error = assert_raises(LibXML::XML::Error) do
|
|
218
217
|
xml.find('//a/')
|
|
219
218
|
end
|
|
220
219
|
assert_equal("Error: Invalid expression.", error.to_s)
|
|
@@ -242,4 +241,4 @@ class TestXPath < Test::Unit::TestCase
|
|
|
242
241
|
assert_equal(1, nodes.length)
|
|
243
242
|
assert_equal(nodes[0].content, ' my comment ')
|
|
244
243
|
end
|
|
245
|
-
end
|
|
244
|
+
end
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
require_relative './test_helper'
|
|
4
4
|
require "tempfile"
|
|
5
|
-
require "test/unit"
|
|
6
5
|
|
|
7
|
-
class TestXPathContext < Test
|
|
6
|
+
class TestXPathContext < Minitest::Test
|
|
8
7
|
SOAP_PREFIX = 'soap'
|
|
9
8
|
SOAP_URI = 'http://schemas.xmlsoap.org/soap/envelope/'
|
|
10
9
|
|
|
@@ -12,8 +11,8 @@ class TestXPathContext < Test::Unit::TestCase
|
|
|
12
11
|
NS0_URI = 'http://services.somewhere.com'
|
|
13
12
|
|
|
14
13
|
def setup
|
|
15
|
-
doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
|
|
16
|
-
@context = XML::XPath::Context.new(doc)
|
|
14
|
+
doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
|
|
15
|
+
@context = LibXML::XML::XPath::Context.new(doc)
|
|
17
16
|
end
|
|
18
17
|
|
|
19
18
|
def teardown()
|
|
@@ -21,7 +20,7 @@ class TestXPathContext < Test::Unit::TestCase
|
|
|
21
20
|
end
|
|
22
21
|
|
|
23
22
|
def test_no_ns
|
|
24
|
-
error =
|
|
23
|
+
error = assert_raises(LibXML::XML::Error) do
|
|
25
24
|
@context.find('/soap:Envelope')
|
|
26
25
|
end
|
|
27
26
|
assert_equal("Error: Undefined namespace prefix.", error.to_s)
|
|
@@ -80,9 +79,9 @@ class TestXPathContext < Test::Unit::TestCase
|
|
|
80
79
|
end
|
|
81
80
|
|
|
82
81
|
def test_require_doc
|
|
83
|
-
doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
|
|
84
|
-
error =
|
|
85
|
-
@context = XML::XPath::Context.new(doc.root)
|
|
82
|
+
doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
|
|
83
|
+
error = assert_raises(TypeError) do
|
|
84
|
+
@context = LibXML::XML::XPath::Context.new(doc.root)
|
|
86
85
|
end
|
|
87
86
|
assert_equal("Supplied argument must be a document or node.", error.to_s)
|
|
88
87
|
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
require_relative './test_helper'
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class TestXPathExpression < Minitest::Test
|
|
7
|
+
def setup
|
|
8
|
+
xp = LibXML::XML::Parser.string('<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>')
|
|
9
|
+
@doc = xp.parse
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def teardown
|
|
13
|
+
@doc = nil
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_nodes
|
|
17
|
+
expr = LibXML::XML::XPath::Expression.compile('/ruby_array/fixnum')
|
|
18
|
+
set = @doc.find(expr)
|
|
19
|
+
assert_instance_of(LibXML::XML::XPath::Object, set)
|
|
20
|
+
assert_equal(2, set.size)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_find_class
|
|
24
|
+
expr = LibXML::XML::XPath::Expression.new('/ruby_array/fixnum')
|
|
25
|
+
set = @doc.find(expr)
|
|
26
|
+
assert_instance_of(LibXML::XML::XPath::Object, set)
|
|
27
|
+
assert_equal(2, set.size)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_find_invalid
|
|
31
|
+
error = assert_raises(TypeError) do
|
|
32
|
+
@doc.find(999)
|
|
33
|
+
end
|
|
34
|
+
assert_equal('Argument should be an instance of a String or XPath::Expression',
|
|
35
|
+
error.to_s)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
|
+
require_relative './test_helper'
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
require "test/unit"
|
|
5
|
-
|
|
6
|
-
class TC_XML_XPointer < Test::Unit::TestCase
|
|
4
|
+
class TC_XML_XPointer < Minitest::Test
|
|
7
5
|
def setup()
|
|
8
|
-
xp = XML::Parser.string('<!DOCTYPE ra [<!ELEMENT ra (foo+)><!ATTLIST ra id ID #IMPLIED><!ELEMENT foo (#PCDATA)><!ATTLIST foo id ID #IMPLIED>]><ra id="start"><foo id="one">one</foo><foo id="two">two</foo><foo id="three">three</foo></ra>')
|
|
6
|
+
xp = LibXML::XML::Parser.string('<!DOCTYPE ra [<!ELEMENT ra (foo+)><!ATTLIST ra id ID #IMPLIED><!ELEMENT foo (#PCDATA)><!ATTLIST foo id ID #IMPLIED>]><ra id="start"><foo id="one">one</foo><foo id="two">two</foo><foo id="three">three</foo></ra>')
|
|
9
7
|
@doc = xp.parse
|
|
10
|
-
assert_instance_of(XML::Document, @doc)
|
|
8
|
+
assert_instance_of(LibXML::XML::Document, @doc)
|
|
11
9
|
@root = @doc.root
|
|
12
|
-
assert_instance_of(XML::Node, @root)
|
|
10
|
+
assert_instance_of(LibXML::XML::Node, @root)
|
|
13
11
|
end
|
|
14
12
|
|
|
15
13
|
def teardown()
|
|
@@ -20,20 +18,20 @@ class TC_XML_XPointer < Test::Unit::TestCase
|
|
|
20
18
|
|
|
21
19
|
def test_libxml_xpointer_id
|
|
22
20
|
xptr = @root.pointer('xpointer(id("two"))')
|
|
23
|
-
assert_instance_of(XML::XPath::Object, xptr)
|
|
21
|
+
assert_instance_of(LibXML::XML::XPath::Object, xptr)
|
|
24
22
|
xptr.each do |node|
|
|
25
23
|
# It seems from the spec that the pointer should
|
|
26
24
|
# be the whole node, rather than just the ID attr.
|
|
27
25
|
assert_equal('two', node.content)
|
|
28
|
-
assert_instance_of(XML::Node, node)
|
|
26
|
+
assert_instance_of(LibXML::XML::Node, node)
|
|
29
27
|
assert_equal('two', node['id'])
|
|
30
28
|
end
|
|
31
29
|
|
|
32
30
|
# FIXME: Not sure at all about this kind of range
|
|
33
31
|
if ENV['NOTWORKING']
|
|
34
32
|
@xptr = @root.pointer('xpointer(id("two")) xpointer(id("three"))')
|
|
35
|
-
assert_instance_of(XML::XPath, @xptr)
|
|
36
|
-
assert_instance_of(XML::Node::Set, @xptr.set)
|
|
33
|
+
assert_instance_of(LibXML::XML::XPath, @xptr)
|
|
34
|
+
assert_instance_of(LibXML::XML::Node::Set, @xptr.set)
|
|
37
35
|
assert_equal(2, @xptr.set.length)
|
|
38
36
|
for n in @xptr.set
|
|
39
37
|
assert_match(/two|three/, n.to_s)
|
|
@@ -47,13 +45,13 @@ class TC_XML_XPointer < Test::Unit::TestCase
|
|
|
47
45
|
nstart = nend = nil
|
|
48
46
|
@xptr = @root.pointer('xpointer(id("one"))').set
|
|
49
47
|
@xptr.each{|n| nstart = n}
|
|
50
|
-
assert_instance_of(XML::Node, nstart)
|
|
48
|
+
assert_instance_of(LibXML::XML::Node, nstart)
|
|
51
49
|
@xptr = @root.pointer('xpointer(id("three"))').set
|
|
52
50
|
@xptr.each{|n| nend = n}
|
|
53
|
-
assert_instance_of(XML::Node, nend)
|
|
54
|
-
range = XML::XPointer.range(nstart, nend)
|
|
55
|
-
assert_instance_of(XML::XPath, range)
|
|
56
|
-
assert_instance_of(XML::Node::Set, range.set)
|
|
51
|
+
assert_instance_of(LibXML::XML::Node, nend)
|
|
52
|
+
range = LibXML::XML::XPointer.range(nstart, nend)
|
|
53
|
+
assert_instance_of(LibXML::XML::XPath, range)
|
|
54
|
+
assert_instance_of(LibXML::XML::Node::Set, range.set)
|
|
57
55
|
|
|
58
56
|
for n in range.set
|
|
59
57
|
assert_match(/one|two|three/, n.to_s)
|
|
@@ -64,9 +62,9 @@ class TC_XML_XPointer < Test::Unit::TestCase
|
|
|
64
62
|
|
|
65
63
|
# def test_libxml_xpointer_start_point()
|
|
66
64
|
# @xptr = @root.pointer('xpointer(start-point("one"))')
|
|
67
|
-
# assert_instance_of(XML::XPath, @xptr)
|
|
65
|
+
# assert_instance_of(LibXML::XML::XPath, @xptr)
|
|
68
66
|
# set = @xptr.set
|
|
69
|
-
# assert_instance_of(XML::Node::Set, set)
|
|
67
|
+
# assert_instance_of(LibXML::XML::Node::Set, set)
|
|
70
68
|
# for n in set
|
|
71
69
|
# assert_match(/one|two|three/, n.to_s)
|
|
72
70
|
# end
|