libxml-ruby 3.2.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 +4 -4
- data/HISTORY +23 -1
- data/README.rdoc +52 -36
- data/Rakefile +24 -16
- data/ext/libxml/ruby_xml.c +4 -0
- data/ext/libxml/ruby_xml_document.c +0 -4
- data/ext/libxml/ruby_xml_encoding.c +1 -13
- data/ext/libxml/ruby_xml_encoding.h +0 -3
- data/ext/libxml/ruby_xml_io.c +14 -18
- data/ext/libxml/ruby_xml_io.h +1 -1
- data/ext/libxml/ruby_xml_namespace.c +1 -0
- data/ext/libxml/ruby_xml_node.c +8 -4
- data/ext/libxml/ruby_xml_schema.c +151 -79
- data/ext/libxml/ruby_xml_schema.h +2 -5
- data/ext/libxml/ruby_xml_schema_attribute.c +23 -71
- data/ext/libxml/ruby_xml_schema_element.c +28 -54
- data/ext/libxml/ruby_xml_schema_facet.c +15 -21
- data/ext/libxml/ruby_xml_schema_type.c +19 -37
- data/ext/libxml/ruby_xml_version.h +3 -3
- data/ext/libxml/ruby_xml_writer.c +189 -192
- data/libxml-ruby.gemspec +1 -1
- data/test/model/shiporder.rnc +2 -2
- data/test/model/shiporder.rng +2 -2
- data/test/model/shiporder.xsd +7 -3
- data/test/model/shiporder_bad.xsd +40 -0
- data/test/model/shiporder_import.xsd +45 -0
- data/test/test_document.rb +111 -110
- data/test/test_dtd.rb +2 -1
- data/test/test_helper.rb +2 -0
- data/test/test_parser.rb +1 -1
- data/test/test_parser_context.rb +3 -9
- data/test/test_reader.rb +2 -1
- data/test/test_sax_parser.rb +13 -6
- data/test/test_schema.rb +92 -29
- data/test/test_writer.rb +48 -25
- data/test/test_xml.rb +2 -1
- metadata +11 -10
- data/ext/libxml/extconf.h +0 -3
data/test/test_schema.rb
CHANGED
@@ -3,18 +3,19 @@
|
|
3
3
|
require_relative './test_helper'
|
4
4
|
|
5
5
|
class TestSchema < Minitest::Test
|
6
|
+
Import_NS = 'http://xml4r.org/libxml-ruby/test/shiporder'.freeze
|
7
|
+
|
6
8
|
def setup
|
7
9
|
file = File.join(File.dirname(__FILE__), 'model/shiporder.xml')
|
8
10
|
@doc = LibXML::XML::Document.file(file)
|
11
|
+
schema_file = File.join(File.dirname(__FILE__), 'model/shiporder.xsd')
|
12
|
+
schema_doc = LibXML::XML::Document.file(schema_file)
|
13
|
+
@schema = LibXML::XML::Schema.document(schema_doc)
|
9
14
|
end
|
10
15
|
|
11
16
|
def teardown
|
12
17
|
@doc = nil
|
13
|
-
|
14
|
-
|
15
|
-
def schema
|
16
|
-
document = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/shiporder.xsd'))
|
17
|
-
LibXML::XML::Schema.document(document)
|
18
|
+
@schema = nil
|
18
19
|
end
|
19
20
|
|
20
21
|
def check_error(error)
|
@@ -33,11 +34,50 @@ class TestSchema < Minitest::Test
|
|
33
34
|
end
|
34
35
|
|
35
36
|
def test_load_from_doc
|
36
|
-
assert_instance_of(LibXML::XML::Schema, schema)
|
37
|
+
assert_instance_of(LibXML::XML::Schema, @schema)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_schema_load_from_uri
|
41
|
+
xlink_schema = LibXML::XML::Schema.new('http://www.w3.org/1999/xlink.xsd')
|
42
|
+
assert_instance_of(LibXML::XML::Schema, xlink_schema)
|
43
|
+
assert_instance_of(LibXML::XML::Schema::Element, xlink_schema.elements['title'])
|
44
|
+
assert_instance_of(LibXML::XML::Schema::Type, xlink_schema.types['titleEltType'])
|
45
|
+
assert_equal('http://www.w3.org/1999/xlink', xlink_schema.target_namespace)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_schema_from_string
|
49
|
+
schema_file = File.join(File.dirname(__FILE__), 'model/shiporder.xsd')
|
50
|
+
schema_from_str = LibXML::XML::Schema.from_string(File.read(schema_file))
|
51
|
+
assert_instance_of(LibXML::XML::Schema, schema_from_str)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_invalid_schema_doc
|
55
|
+
bad_schema_file = File.join(File.dirname(__FILE__), 'model/shiporder_bad.xsd')
|
56
|
+
bad_schema_doc = LibXML::XML::Document.file(bad_schema_file)
|
57
|
+
bad_schema = nil
|
58
|
+
## Note: this type of error throws
|
59
|
+
begin
|
60
|
+
bad_schema = LibXML::XML::Schema.document(bad_schema_doc)
|
61
|
+
rescue LibXML::XML::Error => error
|
62
|
+
bad_schema = error
|
63
|
+
assert(error.message.match(/Error: Element '.*': The content is not valid. Expected is \(/))
|
64
|
+
assert_kind_of(LibXML::XML::Error, error)
|
65
|
+
assert_equal(LibXML::XML::Error::SCHEMASP, error.domain)
|
66
|
+
assert_equal(LibXML::XML::Error::SCHEMAP_S4S_ELEM_NOT_ALLOWED, error.code)
|
67
|
+
assert_equal(LibXML::XML::Error::ERROR, error.level)
|
68
|
+
assert(error.file.match(/shiporder_bad.xsd/))
|
69
|
+
assert_equal("Element '{http://www.w3.org/2001/XMLSchema}complexType'", error.str1)
|
70
|
+
refute_nil(error.str2)
|
71
|
+
assert_nil(error.str3)
|
72
|
+
assert_equal(0, error.int1)
|
73
|
+
assert_equal(0, error.int2)
|
74
|
+
end
|
75
|
+
## Last but not least, make sure we threw an error
|
76
|
+
assert_instance_of(LibXML::XML::Error, bad_schema)
|
37
77
|
end
|
38
78
|
|
39
79
|
def test_doc_valid
|
40
|
-
assert(@doc.validate_schema(schema))
|
80
|
+
assert(@doc.validate_schema(@schema))
|
41
81
|
end
|
42
82
|
|
43
83
|
def test_doc_invalid
|
@@ -45,7 +85,7 @@ class TestSchema < Minitest::Test
|
|
45
85
|
@doc.root << new_node
|
46
86
|
|
47
87
|
error = assert_raises(LibXML::XML::Error) do
|
48
|
-
@doc.validate_schema(schema)
|
88
|
+
@doc.validate_schema(@schema)
|
49
89
|
end
|
50
90
|
|
51
91
|
check_error(error)
|
@@ -56,7 +96,7 @@ class TestSchema < Minitest::Test
|
|
56
96
|
|
57
97
|
def test_reader_valid
|
58
98
|
reader = LibXML::XML::Reader.string(@doc.to_s)
|
59
|
-
assert(reader.schema_validate(schema))
|
99
|
+
assert(reader.schema_validate(@schema))
|
60
100
|
|
61
101
|
while reader.read
|
62
102
|
end
|
@@ -74,7 +114,7 @@ class TestSchema < Minitest::Test
|
|
74
114
|
reader = LibXML::XML::Reader.string(@doc.to_s)
|
75
115
|
|
76
116
|
# Set a schema
|
77
|
-
assert(reader.schema_validate(schema))
|
117
|
+
assert(reader.schema_validate(@schema))
|
78
118
|
|
79
119
|
while reader.read
|
80
120
|
end
|
@@ -91,32 +131,55 @@ class TestSchema < Minitest::Test
|
|
91
131
|
|
92
132
|
# Schema meta-data tests
|
93
133
|
def test_elements
|
94
|
-
assert_instance_of(Hash, schema.elements)
|
95
|
-
assert_equal(1, schema.elements.length)
|
96
|
-
assert_instance_of(LibXML::XML::Schema::Element, schema.elements['shiporder'])
|
134
|
+
assert_instance_of(Hash, @schema.elements)
|
135
|
+
assert_equal(1, @schema.elements.length)
|
136
|
+
assert_instance_of(LibXML::XML::Schema::Element, @schema.elements['shiporder'])
|
97
137
|
end
|
98
138
|
|
99
139
|
def test_types
|
100
|
-
assert_instance_of(Hash, schema.types)
|
101
|
-
assert_equal(1, schema.types.length)
|
102
|
-
assert_instance_of(LibXML::XML::Schema::Type, schema.types['
|
140
|
+
assert_instance_of(Hash, @schema.types)
|
141
|
+
assert_equal(1, @schema.types.length)
|
142
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.types['shiporderType'])
|
103
143
|
end
|
104
144
|
|
105
145
|
def test_imported_types
|
106
|
-
assert_instance_of(Hash, schema.imported_types)
|
107
|
-
assert_equal(
|
108
|
-
assert_instance_of(LibXML::XML::Schema::Type, schema.
|
146
|
+
assert_instance_of(Hash, @schema.imported_types)
|
147
|
+
assert_equal(2, @schema.imported_types.length)
|
148
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_types['shiporderType'])
|
149
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_types['shiporderFooType'])
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_imported_ns_types
|
153
|
+
assert_instance_of(Hash, @schema.imported_ns_types)
|
154
|
+
assert_equal(2, @schema.imported_ns_types.length)
|
155
|
+
assert_equal(1, @schema.imported_ns_types[nil].length)
|
156
|
+
assert_equal(1, @schema.imported_ns_types[Import_NS].length)
|
157
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_ns_types[nil]['shiporderType'])
|
158
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_ns_types[Import_NS]['shiporderFooType'])
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_imported_ns_elements
|
162
|
+
assert_instance_of(Hash, @schema.imported_ns_elements)
|
163
|
+
assert_equal(2, @schema.imported_ns_elements.length)
|
164
|
+
assert_equal(1, @schema.imported_ns_elements[nil].length)
|
165
|
+
assert_equal(1, @schema.imported_ns_elements[Import_NS].length)
|
166
|
+
assert_instance_of(LibXML::XML::Schema::Element, @schema.imported_ns_elements[nil]['shiporder'])
|
167
|
+
assert_instance_of(LibXML::XML::Schema::Element, @schema.imported_ns_elements[Import_NS]['shiporder'])
|
168
|
+
assert_equal('shiporderType', @schema.imported_ns_elements[nil]['shiporder'].type.name)
|
169
|
+
assert_equal('shiporderFooType', @schema.imported_ns_elements[Import_NS]['shiporder'].type.name)
|
109
170
|
end
|
110
171
|
|
111
172
|
def test_namespaces
|
112
|
-
assert_instance_of(Array, schema.namespaces)
|
113
|
-
|
173
|
+
assert_instance_of(Array, @schema.namespaces)
|
174
|
+
## For some reason, when importing another schema we end up with two xs->http://www.w3.org/2001/XMLSchema namespaces.
|
175
|
+
## So, we expect 3 here (one for Import_NS and then two for the schema namespace.
|
176
|
+
assert_equal(3, @schema.namespaces.length)
|
114
177
|
end
|
115
178
|
|
116
179
|
def test_schema_type
|
117
|
-
type = schema.types['
|
180
|
+
type = @schema.types['shiporderType']
|
118
181
|
|
119
|
-
assert_equal('
|
182
|
+
assert_equal('shiporderType', type.name)
|
120
183
|
assert_nil(type.namespace)
|
121
184
|
assert_equal("Shiporder type documentation", type.annotation)
|
122
185
|
assert_instance_of(LibXML::XML::Node, type.node)
|
@@ -130,22 +193,22 @@ class TestSchema < Minitest::Test
|
|
130
193
|
end
|
131
194
|
|
132
195
|
def test_schema_element
|
133
|
-
element = schema.types['
|
196
|
+
element = @schema.types['shiporderType'].elements['orderperson']
|
134
197
|
|
135
198
|
assert_equal('orderperson', element.name)
|
136
199
|
assert_nil(element.namespace)
|
137
200
|
assert_equal("orderperson element documentation", element.annotation)
|
138
201
|
|
139
|
-
element = schema.types['
|
202
|
+
element = @schema.types['shiporderType'].elements['item']
|
140
203
|
assert_equal('item', element.name)
|
141
204
|
|
142
|
-
element = schema.types['
|
205
|
+
element = @schema.types['shiporderType'].elements['item'].type.elements['note']
|
143
206
|
assert_equal('note', element.name)
|
144
207
|
assert_equal('string', element.type.name)
|
145
208
|
end
|
146
209
|
|
147
210
|
def test_schema_attributes
|
148
|
-
type = schema.types['
|
211
|
+
type = @schema.types['shiporderType']
|
149
212
|
|
150
213
|
assert_instance_of(Array, type.attributes)
|
151
214
|
assert_equal(2, type.attributes.length)
|
@@ -153,14 +216,14 @@ class TestSchema < Minitest::Test
|
|
153
216
|
end
|
154
217
|
|
155
218
|
def test_schema_attribute
|
156
|
-
attribute = schema.types['
|
219
|
+
attribute = @schema.types['shiporderType'].attributes.first
|
157
220
|
|
158
221
|
assert_equal("orderid", attribute.name)
|
159
222
|
assert_nil(attribute.namespace)
|
160
223
|
assert_equal(1, attribute.occurs)
|
161
224
|
assert_equal('string', attribute.type.name)
|
162
225
|
|
163
|
-
attribute = schema.types['
|
226
|
+
attribute = @schema.types['shiporderType'].attributes[1]
|
164
227
|
assert_equal(2, attribute.occurs)
|
165
228
|
assert_equal('1', attribute.default)
|
166
229
|
assert_equal('integer', attribute.type.name)
|
data/test/test_writer.rb
CHANGED
@@ -16,25 +16,48 @@ class TestWriter < Minitest::Test
|
|
16
16
|
|
17
17
|
def test_empty_doc
|
18
18
|
writer = LibXML::XML::Writer.string
|
19
|
-
document
|
19
|
+
document(writer)
|
20
20
|
assert_equal(writer.result.strip!, '<?xml version="1.0"?>')
|
21
21
|
|
22
22
|
writer = LibXML::XML::Writer.string
|
23
|
-
document
|
23
|
+
document(writer, :encoding => LibXML::XML::Encoding::ISO_8859_1)
|
24
24
|
assert_equal(writer.result.strip!, '<?xml version="1.0" encoding="ISO-8859-1"?>')
|
25
25
|
|
26
26
|
writer = LibXML::XML::Writer.string
|
27
|
-
document
|
27
|
+
document(writer, :standalone => 1)
|
28
28
|
assert_equal(writer.result.strip!, '<?xml version="1.0" standalone="yes"?>')
|
29
29
|
|
30
30
|
writer = LibXML::XML::Writer.string
|
31
|
-
document
|
31
|
+
document(writer, :standalone => 1, :encoding => LibXML::XML::Encoding::ISO_8859_1, :foo => :bar)
|
32
32
|
assert_equal(writer.result.strip!, '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>')
|
33
33
|
end
|
34
34
|
|
35
|
+
def test_file_encoding
|
36
|
+
value = "François".encode(Encoding::UTF_8)
|
37
|
+
|
38
|
+
File.open('test.xml', 'wb', encoding: 'UTF-8') do |file|
|
39
|
+
writer = LibXML::XML::Writer::io(file)
|
40
|
+
document(writer, encoding: LibXML::XML::Encoding::UTF_8) do
|
41
|
+
writer.write_element('Name', value)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_io_encoding
|
47
|
+
value = "François".encode(Encoding::UTF_8)
|
48
|
+
expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Name>François</Name>".encode(Encoding::UTF_8)
|
49
|
+
|
50
|
+
io = StringIO.new
|
51
|
+
writer = LibXML::XML::Writer::io(io)
|
52
|
+
document(writer, encoding: LibXML::XML::Encoding::UTF_8) do
|
53
|
+
writer.write_element('Name', value)
|
54
|
+
end
|
55
|
+
assert_equal(expected, io.string.strip)
|
56
|
+
end
|
57
|
+
|
35
58
|
def test_single_root
|
36
59
|
writer = LibXML::XML::Writer.string
|
37
|
-
document
|
60
|
+
document(writer) do
|
38
61
|
element writer, 'root'
|
39
62
|
end
|
40
63
|
|
@@ -45,7 +68,7 @@ class TestWriter < Minitest::Test
|
|
45
68
|
expected = "<?xml version=\"1.0\"?>\n<?php echo \"foo\";?>"
|
46
69
|
|
47
70
|
writer = LibXML::XML::Writer.string
|
48
|
-
document
|
71
|
+
document(writer) do
|
49
72
|
assert(writer.start_pi('php'))
|
50
73
|
assert(writer.write_string('echo "foo";'))
|
51
74
|
assert(writer.end_pi)
|
@@ -53,7 +76,7 @@ class TestWriter < Minitest::Test
|
|
53
76
|
assert_equal(writer.result.strip!, expected)
|
54
77
|
|
55
78
|
writer = LibXML::XML::Writer.string
|
56
|
-
document
|
79
|
+
document(writer) do
|
57
80
|
assert(writer.write_pi('php', 'echo "foo";'))
|
58
81
|
end
|
59
82
|
assert_equal(writer.result.strip!, expected)
|
@@ -63,7 +86,7 @@ class TestWriter < Minitest::Test
|
|
63
86
|
expected = "<?xml version=\"1.0\"?>\n<!--foo-->"
|
64
87
|
|
65
88
|
writer = LibXML::XML::Writer.string
|
66
|
-
document
|
89
|
+
document(writer) do
|
67
90
|
assert(writer.start_comment)
|
68
91
|
assert(writer.write_string 'foo')
|
69
92
|
assert(writer.end_comment)
|
@@ -71,7 +94,7 @@ class TestWriter < Minitest::Test
|
|
71
94
|
assert_equal(writer.result.strip!, expected)
|
72
95
|
|
73
96
|
writer = LibXML::XML::Writer.string
|
74
|
-
document
|
97
|
+
document(writer) do
|
75
98
|
assert(writer.write_comment 'foo')
|
76
99
|
end
|
77
100
|
assert_equal(writer.result.strip!, expected)
|
@@ -81,7 +104,7 @@ class TestWriter < Minitest::Test
|
|
81
104
|
expected = "<?xml version=\"1.0\"?>\n<root><![CDATA[<?php echo $foo; ?>]]></root>"
|
82
105
|
|
83
106
|
writer = LibXML::XML::Writer.string
|
84
|
-
document
|
107
|
+
document(writer) do
|
85
108
|
element writer, 'root' do
|
86
109
|
assert(writer.start_cdata)
|
87
110
|
assert(writer.write_string '<?php echo $foo; ?>')
|
@@ -91,7 +114,7 @@ class TestWriter < Minitest::Test
|
|
91
114
|
assert_equal(writer.result.strip!, expected)
|
92
115
|
|
93
116
|
writer = LibXML::XML::Writer.string
|
94
|
-
document
|
117
|
+
document(writer) do
|
95
118
|
element writer, 'root' do
|
96
119
|
assert(writer.write_cdata '<?php echo $foo; ?>')
|
97
120
|
end
|
@@ -101,13 +124,13 @@ class TestWriter < Minitest::Test
|
|
101
124
|
|
102
125
|
def test_write_empty_elements
|
103
126
|
writer = LibXML::XML::Writer.string
|
104
|
-
document
|
127
|
+
document(writer) do
|
105
128
|
assert(writer.write_element 'foo')
|
106
129
|
end
|
107
130
|
assert_equal(writer.result.strip!, "<?xml version=\"1.0\"?>\n<foo/>")
|
108
131
|
|
109
132
|
writer = LibXML::XML::Writer.string
|
110
|
-
document
|
133
|
+
document(writer) do
|
111
134
|
assert(writer.write_element_ns XSL_PREFIX, 'stylesheet', XSL_URI)
|
112
135
|
end
|
113
136
|
assert_equal(writer.result.strip!, "<?xml version=\"1.0\"?>\n<" + XSL_PREFIX + ":stylesheet xmlns:xsl=\"" + XSL_URI + "\"/>")
|
@@ -117,7 +140,7 @@ class TestWriter < Minitest::Test
|
|
117
140
|
expected = "<?xml version=\"1.0\"?>\n<abc>123<def>456<ghi>789</ghi>cueillir des cerises</def>nous irons au bois</abc>"
|
118
141
|
|
119
142
|
writer = LibXML::XML::Writer.string
|
120
|
-
document
|
143
|
+
document(writer) do
|
121
144
|
assert(writer.start_element 'abc')
|
122
145
|
assert(writer.write_string '123')
|
123
146
|
assert(writer.start_element 'def')
|
@@ -133,7 +156,7 @@ class TestWriter < Minitest::Test
|
|
133
156
|
assert_equal(writer.result.strip!, expected)
|
134
157
|
|
135
158
|
writer = LibXML::XML::Writer.string
|
136
|
-
document
|
159
|
+
document(writer) do
|
137
160
|
assert(writer.start_element 'abc')
|
138
161
|
assert(writer.write_string '123')
|
139
162
|
assert(writer.start_element 'def')
|
@@ -157,7 +180,7 @@ class TestWriter < Minitest::Test
|
|
157
180
|
"</xsl:stylesheet>"
|
158
181
|
|
159
182
|
writer = LibXML::XML::Writer.string
|
160
|
-
document
|
183
|
+
document(writer) do
|
161
184
|
assert(writer.start_element_ns XSL_PREFIX, 'stylesheet', XSL_URI)
|
162
185
|
assert(writer.start_element_ns XSL_PREFIX, 'attribute-set')
|
163
186
|
assert(writer.start_element_ns XSL_PREFIX, 'attribute')
|
@@ -172,7 +195,7 @@ class TestWriter < Minitest::Test
|
|
172
195
|
assert_equal(writer.result.strip!, expected)
|
173
196
|
|
174
197
|
writer = LibXML::XML::Writer.string
|
175
|
-
document
|
198
|
+
document(writer) do
|
176
199
|
assert(writer.start_element_ns XSL_PREFIX, 'stylesheet', XSL_URI)
|
177
200
|
assert(writer.start_element_ns XSL_PREFIX, 'attribute-set')
|
178
201
|
assert(writer.write_element_ns XSL_PREFIX, 'attribute', nil, '20px')
|
@@ -185,7 +208,7 @@ class TestWriter < Minitest::Test
|
|
185
208
|
|
186
209
|
def test_attribute
|
187
210
|
writer = LibXML::XML::Writer.string
|
188
|
-
document
|
211
|
+
document(writer) do
|
189
212
|
element writer, 'root' do
|
190
213
|
element writer, 'child' do
|
191
214
|
assert(writer.start_attribute 'foo')
|
@@ -197,7 +220,7 @@ class TestWriter < Minitest::Test
|
|
197
220
|
assert_equal(writer.result.strip!, "<?xml version=\"1.0\"?>\n<root><child foo=\"bar\"/></root>")
|
198
221
|
|
199
222
|
writer = LibXML::XML::Writer.string
|
200
|
-
document
|
223
|
+
document(writer) do
|
201
224
|
element writer, 'root' do
|
202
225
|
element writer, 'child' do
|
203
226
|
assert(writer.write_attribute 'abc', 'def')
|
@@ -212,7 +235,7 @@ class TestWriter < Minitest::Test
|
|
212
235
|
expected = "<?xml version=\"1.0\"?>\n<root><link xlink:href=\"abc\" xhtml:class=\"def\"/></root>"
|
213
236
|
|
214
237
|
writer = LibXML::XML::Writer.string
|
215
|
-
document
|
238
|
+
document(writer) do
|
216
239
|
element writer, 'root' do
|
217
240
|
element writer, 'link' do
|
218
241
|
assert(writer.write_attribute_ns 'xlink', 'href', nil, 'abc')
|
@@ -223,7 +246,7 @@ class TestWriter < Minitest::Test
|
|
223
246
|
assert_equal(writer.result.strip!, expected)
|
224
247
|
|
225
248
|
writer = LibXML::XML::Writer.string
|
226
|
-
document
|
249
|
+
document(writer) do
|
227
250
|
element writer, 'root' do
|
228
251
|
element writer, 'link' do
|
229
252
|
assert(writer.start_attribute_ns 'xlink', 'href')
|
@@ -242,7 +265,7 @@ class TestWriter < Minitest::Test
|
|
242
265
|
if LibXML::XML::Writer.method_defined? :set_quote_char
|
243
266
|
writer = LibXML::XML::Writer.string
|
244
267
|
writer.set_quote_char "'"
|
245
|
-
document
|
268
|
+
document(writer) do
|
246
269
|
element writer, 'root' do
|
247
270
|
assert(writer.start_attribute 'abc')
|
248
271
|
assert(writer.write_string 'def')
|
@@ -257,7 +280,7 @@ class TestWriter < Minitest::Test
|
|
257
280
|
if LibXML::XML::Writer.method_defined? :set_indent
|
258
281
|
writer = LibXML::XML::Writer.string
|
259
282
|
assert(writer.set_indent true)
|
260
|
-
document
|
283
|
+
document(writer) do
|
261
284
|
element writer, 'root' do
|
262
285
|
element writer, 'child' do
|
263
286
|
assert(writer.start_attribute 'abc')
|
@@ -275,7 +298,7 @@ class TestWriter < Minitest::Test
|
|
275
298
|
writer = LibXML::XML::Writer.string
|
276
299
|
assert(writer.set_indent true)
|
277
300
|
assert(writer.set_indent_string ' ' * 4)
|
278
|
-
document
|
301
|
+
document(writer) do
|
279
302
|
element writer, 'root' do
|
280
303
|
element writer, 'child' do
|
281
304
|
assert(writer.start_attribute 'abc')
|
@@ -395,7 +418,7 @@ class TestWriter < Minitest::Test
|
|
395
418
|
iso = 'éloïse'.encode 'ISO-8859-1'
|
396
419
|
|
397
420
|
writer = LibXML::XML::Writer.string
|
398
|
-
document
|
421
|
+
document(writer) do
|
399
422
|
assert(writer.write_element iso)
|
400
423
|
end
|
401
424
|
assert_equal(writer.result.strip!, "<?xml version=\"1.0\"?>\n<éloïse/>")
|
data/test/test_xml.rb
CHANGED
@@ -183,7 +183,8 @@ class TestXml < Minitest::Test
|
|
183
183
|
end
|
184
184
|
|
185
185
|
def test_enabled_iconv
|
186
|
-
|
186
|
+
iconv_enabled = RUBY_PLATFORM !~ /darwin/
|
187
|
+
assert_equal(iconv_enabled, LibXML::XML.enabled_iconv?)
|
187
188
|
end
|
188
189
|
|
189
190
|
def test_enabled_memory_debug
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libxml-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ross Bamform
|
@@ -11,10 +11,10 @@ authors:
|
|
11
11
|
- Anurag Priyam
|
12
12
|
- Charlie Savage
|
13
13
|
- Ryan Johnson
|
14
|
-
autorequire:
|
14
|
+
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date:
|
17
|
+
date: 2022-05-22 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: rake-compiler
|
@@ -50,7 +50,7 @@ description: |2
|
|
50
50
|
Libxml-ruby's primary advantage over REXML is performance - if speed
|
51
51
|
is your need, these are good libraries to consider, as demonstrated
|
52
52
|
by the informal benchmark below.
|
53
|
-
email:
|
53
|
+
email:
|
54
54
|
executables: []
|
55
55
|
extensions:
|
56
56
|
- ext/libxml/extconf.rb
|
@@ -61,7 +61,6 @@ files:
|
|
61
61
|
- MANIFEST
|
62
62
|
- README.rdoc
|
63
63
|
- Rakefile
|
64
|
-
- ext/libxml/extconf.h
|
65
64
|
- ext/libxml/extconf.rb
|
66
65
|
- ext/libxml/libxml.c
|
67
66
|
- ext/libxml/libxml_ruby.def
|
@@ -216,6 +215,8 @@ files:
|
|
216
215
|
- test/model/shiporder.rng
|
217
216
|
- test/model/shiporder.xml
|
218
217
|
- test/model/shiporder.xsd
|
218
|
+
- test/model/shiporder_bad.xsd
|
219
|
+
- test/model/shiporder_import.xsd
|
219
220
|
- test/model/soap.xml
|
220
221
|
- test/model/xinclude.xml
|
221
222
|
- test/test_attr.rb
|
@@ -259,11 +260,11 @@ files:
|
|
259
260
|
- test/test_xpath_context.rb
|
260
261
|
- test/test_xpath_expression.rb
|
261
262
|
- test/test_xpointer.rb
|
262
|
-
homepage:
|
263
|
+
homepage: https://xml4r.github.io/libxml-ruby/
|
263
264
|
licenses:
|
264
265
|
- MIT
|
265
266
|
metadata: {}
|
266
|
-
post_install_message:
|
267
|
+
post_install_message:
|
267
268
|
rdoc_options: []
|
268
269
|
require_paths:
|
269
270
|
- lib
|
@@ -278,14 +279,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
278
279
|
- !ruby/object:Gem::Version
|
279
280
|
version: '0'
|
280
281
|
requirements: []
|
281
|
-
rubygems_version: 3.
|
282
|
-
signing_key:
|
282
|
+
rubygems_version: 3.3.4
|
283
|
+
signing_key:
|
283
284
|
specification_version: 4
|
284
285
|
summary: Ruby Bindings for LibXML2
|
285
286
|
test_files:
|
286
287
|
- test/test_attr.rb
|
287
|
-
- test/test_attributes.rb
|
288
288
|
- test/test_attr_decl.rb
|
289
|
+
- test/test_attributes.rb
|
289
290
|
- test/test_canonicalize.rb
|
290
291
|
- test/test_deprecated_require.rb
|
291
292
|
- test/test_document.rb
|
data/ext/libxml/extconf.h
DELETED