libxml-ruby 5.0.6 → 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 (131) hide show
  1. checksums.yaml +4 -4
  2. data/{HISTORY → CHANGELOG.md} +875 -930
  3. data/LICENSE +20 -20
  4. data/README.md +67 -0
  5. data/Rakefile +13 -34
  6. data/ext/libxml/extconf.rb +34 -20
  7. data/ext/libxml/libxml.c +2 -14
  8. data/ext/libxml/ruby_libxml.h +1 -1
  9. data/ext/libxml/ruby_xml_attr.c +27 -22
  10. data/ext/libxml/ruby_xml_attr.h +1 -0
  11. data/ext/libxml/ruby_xml_attr_decl.c +19 -12
  12. data/ext/libxml/ruby_xml_attributes.c +18 -9
  13. data/ext/libxml/ruby_xml_document.c +111 -98
  14. data/ext/libxml/ruby_xml_document.h +1 -0
  15. data/ext/libxml/ruby_xml_dtd.c +49 -19
  16. data/ext/libxml/ruby_xml_dtd.h +1 -0
  17. data/ext/libxml/ruby_xml_html_parser.c +1 -1
  18. data/ext/libxml/ruby_xml_html_parser_context.c +19 -6
  19. data/ext/libxml/ruby_xml_html_parser_context.h +1 -0
  20. data/ext/libxml/ruby_xml_input_cbg.c +45 -17
  21. data/ext/libxml/ruby_xml_io.c +3 -1
  22. data/ext/libxml/ruby_xml_namespace.c +20 -12
  23. data/ext/libxml/ruby_xml_namespace.h +1 -0
  24. data/ext/libxml/ruby_xml_namespaces.c +40 -20
  25. data/ext/libxml/ruby_xml_node.c +71 -32
  26. data/ext/libxml/ruby_xml_node.h +2 -0
  27. data/ext/libxml/ruby_xml_parser.c +1 -1
  28. data/ext/libxml/ruby_xml_parser_context.c +54 -47
  29. data/ext/libxml/ruby_xml_parser_context.h +1 -0
  30. data/ext/libxml/ruby_xml_reader.c +25 -15
  31. data/ext/libxml/ruby_xml_registry.c +31 -0
  32. data/ext/libxml/ruby_xml_registry.h +22 -0
  33. data/ext/libxml/ruby_xml_relaxng.c +21 -5
  34. data/ext/libxml/ruby_xml_relaxng.h +1 -0
  35. data/ext/libxml/ruby_xml_sax_parser.c +1 -1
  36. data/ext/libxml/ruby_xml_schema.c +18 -11
  37. data/ext/libxml/ruby_xml_schema.h +1 -0
  38. data/ext/libxml/ruby_xml_schema_attribute.c +7 -7
  39. data/ext/libxml/ruby_xml_schema_element.c +8 -8
  40. data/ext/libxml/ruby_xml_schema_facet.c +7 -7
  41. data/ext/libxml/ruby_xml_schema_type.c +12 -19
  42. data/ext/libxml/ruby_xml_version.h +4 -4
  43. data/ext/libxml/ruby_xml_writer.c +18 -6
  44. data/ext/libxml/ruby_xml_xpath.c +2 -2
  45. data/ext/libxml/ruby_xml_xpath.h +1 -1
  46. data/ext/libxml/ruby_xml_xpath_context.c +72 -26
  47. data/ext/libxml/ruby_xml_xpath_expression.c +11 -5
  48. data/ext/libxml/ruby_xml_xpath_expression.h +1 -0
  49. data/ext/libxml/ruby_xml_xpath_object.c +69 -54
  50. data/ext/libxml/ruby_xml_xpath_object.h +3 -1
  51. data/ext/vc/libxml_ruby/libxml_ruby.vcxproj +271 -0
  52. data/ext/xcode/libxml-ruby.xcodeproj/project.pbxproj +633 -0
  53. data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  54. data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  55. data/ext/xcode/libxml-ruby.xcodeproj/xcshareddata/xcschemes/libxml-ruby.xcscheme +80 -0
  56. data/lib/libxml/document.rb +0 -29
  57. data/lib/libxml/error.rb +30 -3
  58. data/lib/libxml/html_parser.rb +0 -16
  59. data/lib/libxml/node.rb +1 -3
  60. data/lib/libxml/parser.rb +0 -8
  61. data/lib/libxml/schema/attribute.rb +27 -19
  62. data/lib/libxml/schema/element.rb +20 -0
  63. data/lib/libxml/schema/type.rb +44 -21
  64. data/lib/libxml/schema.rb +47 -47
  65. data/lib/libxml-ruby.rb +30 -30
  66. data/libxml-ruby.gemspec +12 -16
  67. data/test/c14n/result/1-1-without-comments/example-1 +3 -3
  68. data/test/c14n/result/1-1-without-comments/example-2 +10 -10
  69. data/test/c14n/result/1-1-without-comments/example-3 +13 -13
  70. data/test/c14n/result/1-1-without-comments/example-4 +8 -8
  71. data/test/c14n/result/1-1-without-comments/example-5 +2 -2
  72. data/test/c14n/result/with-comments/example-1 +5 -5
  73. data/test/c14n/result/with-comments/example-2 +10 -10
  74. data/test/c14n/result/with-comments/example-3 +13 -13
  75. data/test/c14n/result/with-comments/example-4 +8 -8
  76. data/test/c14n/result/with-comments/example-5 +3 -3
  77. data/test/c14n/result/without-comments/example-1 +3 -3
  78. data/test/c14n/result/without-comments/example-2 +10 -10
  79. data/test/c14n/result/without-comments/example-3 +13 -13
  80. data/test/c14n/result/without-comments/example-4 +8 -8
  81. data/test/c14n/result/without-comments/example-5 +2 -2
  82. data/test/test_attr.rb +179 -180
  83. data/test/test_attr_decl.rb +131 -131
  84. data/test/test_attributes.rb +135 -135
  85. data/test/test_canonicalize.rb +122 -120
  86. data/test/test_document.rb +2 -4
  87. data/test/test_dtd.rb +12 -4
  88. data/test/test_encoding_sax.rb +114 -114
  89. data/test/test_error.rb +1 -1
  90. data/test/test_html_parser.rb +6 -2
  91. data/test/test_html_parser_context.rb +22 -22
  92. data/test/test_input_callbacks.rb +36 -0
  93. data/test/test_namespace.rb +1 -1
  94. data/test/test_namespaces.rb +200 -200
  95. data/test/test_node.rb +16 -0
  96. data/test/test_node_cdata.rb +50 -50
  97. data/test/test_node_comment.rb +32 -32
  98. data/test/test_node_copy.rb +40 -40
  99. data/test/test_node_edit.rb +176 -158
  100. data/test/test_node_pi.rb +37 -37
  101. data/test/test_node_text.rb +69 -69
  102. data/test/test_node_xlink.rb +28 -28
  103. data/test/test_parser.rb +5 -41
  104. data/test/test_parser_context.rb +198 -198
  105. data/test/test_properties.rb +38 -38
  106. data/test/test_reader.rb +55 -6
  107. data/test/test_relaxng.rb +59 -53
  108. data/test/test_sax_parser.rb +345 -345
  109. data/test/test_schema.rb +28 -0
  110. data/test/test_traversal.rb +152 -152
  111. data/test/test_writer.rb +0 -31
  112. data/test/test_xinclude.rb +20 -20
  113. data/test/test_xml.rb +3 -7
  114. data/test/test_xpath.rb +244 -244
  115. data/test/test_xpath_context.rb +87 -87
  116. data/test/test_xpath_expression.rb +37 -37
  117. metadata +32 -25
  118. data/README.rdoc +0 -208
  119. data/ext/libxml/extconf.h +0 -4
  120. data/ext/libxml/ruby_xml_cbg.c +0 -85
  121. data/lib/libxml/hpricot.rb +0 -78
  122. data/lib/libxml.rb +0 -5
  123. data/lib/xml/libxml.rb +0 -10
  124. data/lib/xml.rb +0 -14
  125. data/script/benchmark/depixelate +0 -634
  126. data/script/benchmark/hamlet.xml +0 -9055
  127. data/script/benchmark/parsecount +0 -170
  128. data/script/benchmark/sock_entries.xml +0 -507
  129. data/script/benchmark/throughput +0 -41
  130. data/script/test +0 -6
  131. data/test/test_deprecated_require.rb +0 -12
@@ -1,200 +1,200 @@
1
- # encoding: UTF-8
2
-
3
- require_relative './test_helper'
4
-
5
-
6
- class TestNamespaces < Minitest::Test
7
- def setup
8
- file = File.join(File.dirname(__FILE__), 'model/soap.xml')
9
- @doc = LibXML::XML::Document.file(file)
10
- end
11
-
12
- def teardown
13
- @doc = nil
14
- end
15
-
16
- def test_namespace_node
17
- node = @doc.root
18
- ns = node.namespaces.namespace
19
- assert_equal('soap', ns.prefix)
20
- assert_equal('http://schemas.xmlsoap.org/soap/envelope/', ns.href)
21
- end
22
-
23
- def test_namespace_attr
24
- node = @doc.root
25
- attr = node.attributes.get_attribute('encodingStyle')
26
- assert_equal('soap', attr.ns.prefix)
27
- assert_equal('soap', attr.namespaces.namespace.prefix)
28
- end
29
-
30
- def test_set_namespace_node
31
- node = LibXML::XML::Node.new('Envelope')
32
- assert_equal('<Envelope/>', node.to_s)
33
-
34
- ns = LibXML::XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
35
- assert_equal("<Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
36
- assert_nil(node.namespaces.namespace)
37
-
38
- # Now put the node in the soap namespace
39
- node.namespaces.namespace = ns
40
- refute_nil(node.namespaces.namespace)
41
- assert_equal("<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
42
- end
43
-
44
- def test_set_namespace_attribute
45
- # Create node
46
- node = LibXML::XML::Node.new('Envelope')
47
- assert_equal('<Envelope/>', node.to_s)
48
-
49
- # Create attribute
50
- attr = LibXML::XML::Attr.new(node, "encodingStyle", "http://www.w3.org/2001/12/soap-encoding")
51
- assert_equal('<Envelope encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
52
- node.to_s)
53
-
54
- # Create namespace attribute
55
- ns = LibXML::XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
56
- assert_equal('<Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
57
- node.to_s)
58
- assert_nil(node.namespaces.namespace)
59
-
60
- # Now put the node in the soap namespace
61
- node.namespaces.namespace = ns
62
- refute_nil(node.namespaces.namespace)
63
- assert_equal('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
64
- node.to_s)
65
-
66
- # Now put the attribute in the soap namespace
67
- attr.namespaces.namespace = ns
68
- refute_nil(node.namespaces.namespace)
69
- assert_equal('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
70
- node.to_s)
71
- end
72
-
73
- def test_define_namespace
74
- node = LibXML::XML::Node.new('Envelope')
75
- assert_equal('<Envelope/>', node.to_s)
76
-
77
- LibXML::XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
78
- assert_equal("<Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
79
- assert_nil(node.namespaces.namespace)
80
- end
81
-
82
- def test_define_default_namespace
83
- node = LibXML::XML::Node.new('Envelope')
84
- assert_equal('<Envelope/>', node.to_s)
85
-
86
- LibXML::XML::Namespace.new(node, nil, 'http://schemas.xmlsoap.org/soap/envelope/')
87
- assert_equal("<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
88
- # This seems wrong, but appears to be the way libxml works
89
- assert_nil(node.namespaces.namespace)
90
- end
91
-
92
- def test_namespaces
93
- node = @doc.find_first('//ns1:IdAndName',
94
- :ns1 => 'http://domain.somewhere.com')
95
-
96
- namespaces = node.namespaces.sort
97
- assert_equal(5, namespaces.length)
98
-
99
- namespace = namespaces[0]
100
- assert_instance_of(LibXML::XML::Namespace, namespace)
101
- assert_nil(namespace.prefix)
102
- assert_equal('http://services.somewhere.com', namespace.href)
103
-
104
- namespace = namespaces[1]
105
- assert_instance_of(LibXML::XML::Namespace, namespace)
106
- assert_equal('ns1', namespace.prefix)
107
- assert_equal('http://domain.somewhere.com', namespace.href)
108
-
109
- namespace = namespaces[2]
110
- assert_instance_of(LibXML::XML::Namespace, namespace)
111
- assert_equal('soap', namespace.prefix)
112
- assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
113
-
114
- namespace = namespaces[3]
115
- assert_instance_of(LibXML::XML::Namespace, namespace)
116
- assert_equal('xsd', namespace.prefix)
117
- assert_equal('http://www.w3.org/2001/XMLSchema', namespace.href)
118
-
119
- namespace = namespaces[4]
120
- assert_instance_of(LibXML::XML::Namespace, namespace)
121
- assert_equal('xsi', namespace.prefix)
122
- assert_equal('http://www.w3.org/2001/XMLSchema-instance', namespace.href)
123
- end
124
-
125
- def test_namespace_definitions
126
- ns_defs = @doc.root.namespaces.definitions
127
- assert_equal(3, ns_defs.size)
128
-
129
- namespace = ns_defs[0]
130
- assert_instance_of(LibXML::XML::Namespace, namespace)
131
- assert_equal('soap', namespace.prefix)
132
- assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
133
-
134
- namespace = ns_defs[1]
135
- assert_instance_of(LibXML::XML::Namespace, namespace)
136
- assert_equal('xsd', namespace.prefix)
137
- assert_equal('http://www.w3.org/2001/XMLSchema', namespace.href)
138
-
139
- namespace = ns_defs[2]
140
- assert_instance_of(LibXML::XML::Namespace, namespace)
141
- assert_equal('xsi', namespace.prefix)
142
- assert_equal('http://www.w3.org/2001/XMLSchema-instance', namespace.href)
143
-
144
- node = @doc.root.find_first('//ns:getManufacturerNamesResponse',
145
- :ns => 'http://services.somewhere.com')
146
- ns_defs = node.namespaces.definitions
147
- assert_equal(1, ns_defs.size)
148
-
149
- namespace = ns_defs[0]
150
- assert_instance_of(LibXML::XML::Namespace, namespace)
151
- assert_nil(namespace.prefix)
152
- assert_equal('http://services.somewhere.com', namespace.href)
153
- end
154
-
155
- def test_find_by_prefix
156
- namespace = @doc.root.namespaces.find_by_prefix('soap')
157
-
158
- assert_instance_of(LibXML::XML::Namespace, namespace)
159
- assert_equal('soap', namespace.prefix)
160
- assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
161
- end
162
-
163
- def test_find_default_ns
164
- namespace = @doc.root.namespaces.find_by_prefix(nil)
165
- assert_nil(namespace)
166
-
167
- node = @doc.find_first('//ns1:getManufacturerNamesResponse',
168
- :ns1 => 'http://services.somewhere.com')
169
- namespace = node.namespaces.find_by_prefix(nil)
170
-
171
- assert_instance_of(LibXML::XML::Namespace, namespace)
172
- assert_nil(namespace.prefix)
173
- assert_equal('http://services.somewhere.com', namespace.href)
174
- end
175
-
176
- def test_find_ns_by_href
177
- node = @doc.find_first('//ns1:getManufacturerNamesResponse',
178
- :ns1 => 'http://services.somewhere.com')
179
-
180
- namespace = node.namespaces.find_by_href('http://schemas.xmlsoap.org/soap/envelope/')
181
-
182
- assert_instance_of(LibXML::XML::Namespace, namespace)
183
- assert_equal('soap', namespace.prefix)
184
- assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
185
- end
186
-
187
- def test_default_namespace
188
- doc = LibXML::XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
189
- ns = doc.root.namespaces.default
190
- assert_equal(ns.href, 'http://schemas.xmlsoap.org/soap/envelope/')
191
- end
192
-
193
- def test_default_prefix
194
- doc = LibXML::XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
195
- doc.root.namespaces.default_prefix = 'soap'
196
-
197
- node = doc.root.find_first('/soap:Envelope')
198
- refute_nil(node)
199
- end
200
- end
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+
5
+
6
+ class TestNamespaces < Minitest::Test
7
+ def setup
8
+ file = File.join(File.dirname(__FILE__), 'model/soap.xml')
9
+ @doc = LibXML::XML::Document.file(file)
10
+ end
11
+
12
+ def teardown
13
+ @doc = nil
14
+ end
15
+
16
+ def test_namespace_node
17
+ node = @doc.root
18
+ ns = node.namespaces.namespace
19
+ assert_equal('soap', ns.prefix)
20
+ assert_equal('http://schemas.xmlsoap.org/soap/envelope/', ns.href)
21
+ end
22
+
23
+ def test_namespace_attr
24
+ node = @doc.root
25
+ attr = node.attributes.get_attribute('encodingStyle')
26
+ assert_equal('soap', attr.ns.prefix)
27
+ assert_equal('soap', attr.namespaces.namespace.prefix)
28
+ end
29
+
30
+ def test_set_namespace_node
31
+ node = LibXML::XML::Node.new('Envelope')
32
+ assert_equal('<Envelope/>', node.to_s)
33
+
34
+ ns = LibXML::XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
35
+ assert_equal("<Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
36
+ assert_nil(node.namespaces.namespace)
37
+
38
+ # Now put the node in the soap namespace
39
+ node.namespaces.namespace = ns
40
+ refute_nil(node.namespaces.namespace)
41
+ assert_equal("<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
42
+ end
43
+
44
+ def test_set_namespace_attribute
45
+ # Create node
46
+ node = LibXML::XML::Node.new('Envelope')
47
+ assert_equal('<Envelope/>', node.to_s)
48
+
49
+ # Create attribute
50
+ attr = LibXML::XML::Attr.new(node, "encodingStyle", "http://www.w3.org/2001/12/soap-encoding")
51
+ assert_equal('<Envelope encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
52
+ node.to_s)
53
+
54
+ # Create namespace attribute
55
+ ns = LibXML::XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
56
+ assert_equal('<Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
57
+ node.to_s)
58
+ assert_nil(node.namespaces.namespace)
59
+
60
+ # Now put the node in the soap namespace
61
+ node.namespaces.namespace = ns
62
+ refute_nil(node.namespaces.namespace)
63
+ assert_equal('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
64
+ node.to_s)
65
+
66
+ # Now put the attribute in the soap namespace
67
+ attr.namespaces.namespace = ns
68
+ refute_nil(node.namespaces.namespace)
69
+ assert_equal('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
70
+ node.to_s)
71
+ end
72
+
73
+ def test_define_namespace
74
+ node = LibXML::XML::Node.new('Envelope')
75
+ assert_equal('<Envelope/>', node.to_s)
76
+
77
+ LibXML::XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
78
+ assert_equal("<Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
79
+ assert_nil(node.namespaces.namespace)
80
+ end
81
+
82
+ def test_define_default_namespace
83
+ node = LibXML::XML::Node.new('Envelope')
84
+ assert_equal('<Envelope/>', node.to_s)
85
+
86
+ LibXML::XML::Namespace.new(node, nil, 'http://schemas.xmlsoap.org/soap/envelope/')
87
+ assert_equal("<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
88
+ # This seems wrong, but appears to be the way libxml works
89
+ assert_nil(node.namespaces.namespace)
90
+ end
91
+
92
+ def test_namespaces
93
+ node = @doc.find_first('//ns1:IdAndName',
94
+ :ns1 => 'http://domain.somewhere.com')
95
+
96
+ namespaces = node.namespaces.sort
97
+ assert_equal(5, namespaces.length)
98
+
99
+ namespace = namespaces[0]
100
+ assert_instance_of(LibXML::XML::Namespace, namespace)
101
+ assert_nil(namespace.prefix)
102
+ assert_equal('http://services.somewhere.com', namespace.href)
103
+
104
+ namespace = namespaces[1]
105
+ assert_instance_of(LibXML::XML::Namespace, namespace)
106
+ assert_equal('ns1', namespace.prefix)
107
+ assert_equal('http://domain.somewhere.com', namespace.href)
108
+
109
+ namespace = namespaces[2]
110
+ assert_instance_of(LibXML::XML::Namespace, namespace)
111
+ assert_equal('soap', namespace.prefix)
112
+ assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
113
+
114
+ namespace = namespaces[3]
115
+ assert_instance_of(LibXML::XML::Namespace, namespace)
116
+ assert_equal('xsd', namespace.prefix)
117
+ assert_equal('http://www.w3.org/2001/XMLSchema', namespace.href)
118
+
119
+ namespace = namespaces[4]
120
+ assert_instance_of(LibXML::XML::Namespace, namespace)
121
+ assert_equal('xsi', namespace.prefix)
122
+ assert_equal('http://www.w3.org/2001/XMLSchema-instance', namespace.href)
123
+ end
124
+
125
+ def test_namespace_definitions
126
+ ns_defs = @doc.root.namespaces.definitions
127
+ assert_equal(3, ns_defs.size)
128
+
129
+ namespace = ns_defs[0]
130
+ assert_instance_of(LibXML::XML::Namespace, namespace)
131
+ assert_equal('soap', namespace.prefix)
132
+ assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
133
+
134
+ namespace = ns_defs[1]
135
+ assert_instance_of(LibXML::XML::Namespace, namespace)
136
+ assert_equal('xsd', namespace.prefix)
137
+ assert_equal('http://www.w3.org/2001/XMLSchema', namespace.href)
138
+
139
+ namespace = ns_defs[2]
140
+ assert_instance_of(LibXML::XML::Namespace, namespace)
141
+ assert_equal('xsi', namespace.prefix)
142
+ assert_equal('http://www.w3.org/2001/XMLSchema-instance', namespace.href)
143
+
144
+ node = @doc.root.find_first('//ns:getManufacturerNamesResponse',
145
+ :ns => 'http://services.somewhere.com')
146
+ ns_defs = node.namespaces.definitions
147
+ assert_equal(1, ns_defs.size)
148
+
149
+ namespace = ns_defs[0]
150
+ assert_instance_of(LibXML::XML::Namespace, namespace)
151
+ assert_nil(namespace.prefix)
152
+ assert_equal('http://services.somewhere.com', namespace.href)
153
+ end
154
+
155
+ def test_find_by_prefix
156
+ namespace = @doc.root.namespaces.find_by_prefix('soap')
157
+
158
+ assert_instance_of(LibXML::XML::Namespace, namespace)
159
+ assert_equal('soap', namespace.prefix)
160
+ assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
161
+ end
162
+
163
+ def test_find_default_ns
164
+ namespace = @doc.root.namespaces.find_by_prefix(nil)
165
+ assert_nil(namespace)
166
+
167
+ node = @doc.find_first('//ns1:getManufacturerNamesResponse',
168
+ :ns1 => 'http://services.somewhere.com')
169
+ namespace = node.namespaces.find_by_prefix(nil)
170
+
171
+ assert_instance_of(LibXML::XML::Namespace, namespace)
172
+ assert_nil(namespace.prefix)
173
+ assert_equal('http://services.somewhere.com', namespace.href)
174
+ end
175
+
176
+ def test_find_ns_by_href
177
+ node = @doc.find_first('//ns1:getManufacturerNamesResponse',
178
+ :ns1 => 'http://services.somewhere.com')
179
+
180
+ namespace = node.namespaces.find_by_href('http://schemas.xmlsoap.org/soap/envelope/')
181
+
182
+ assert_instance_of(LibXML::XML::Namespace, namespace)
183
+ assert_equal('soap', namespace.prefix)
184
+ assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
185
+ end
186
+
187
+ def test_default_namespace
188
+ doc = LibXML::XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
189
+ ns = doc.root.namespaces.default
190
+ assert_equal(ns.href, 'http://schemas.xmlsoap.org/soap/envelope/')
191
+ end
192
+
193
+ def test_default_prefix
194
+ doc = LibXML::XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
195
+ doc.root.namespaces.default_prefix = 'soap'
196
+
197
+ node = doc.root.find_first('/soap:Envelope')
198
+ refute_nil(node)
199
+ end
200
+ end
data/test/test_node.rb CHANGED
@@ -232,4 +232,20 @@ class TestNode < Minitest::Test
232
232
  assert_equal("unescaped & string", node.content)
233
233
  assert_equal("<test>unescaped &amp; string</test>", node.to_s)
234
234
  end
235
+
236
+ def test_document_node_marks_document
237
+ GC.stress = true
238
+ node = create_document_child
239
+ assert_equal("child", node.name)
240
+ refute_nil(node.doc)
241
+ ensure
242
+ GC.stress = false
243
+ end
244
+
245
+ private
246
+
247
+ def create_document_child
248
+ doc = LibXML::XML::Document.string("<root><child/></root>")
249
+ doc.root.children.first
250
+ end
235
251
  end
@@ -1,50 +1,50 @@
1
- # encoding: UTF-8
2
-
3
- require_relative './test_helper'
4
-
5
- class CDataCommentTest < Minitest::Test
6
- def setup
7
- xp = LibXML::XML::Parser.string('<root></root>')
8
- @doc = xp.parse
9
- assert_instance_of(LibXML::XML::Document, @doc)
10
- @root = @doc.root
11
- end
12
-
13
- def test_node_type
14
- cnode = LibXML::XML::Node.new_cdata('test cdata')
15
- assert_equal(LibXML::XML::Node::CDATA_SECTION_NODE, cnode.node_type)
16
- end
17
-
18
- def test_add_cdata
19
- @root << LibXML::XML::Node.new_cdata('mycdata')
20
- assert_equal '<root><![CDATA[mycdata]]></root>',
21
- @root.to_s.gsub(/\n\s*/,'')
22
- end
23
-
24
- def test_add_cdata_2
25
- @root << LibXML::XML::Node.new_cdata('mycdata')
26
- assert_equal 'cdata',
27
- @root.child.node_type_name
28
- end
29
-
30
- def test_add_cdata_3
31
- @root << el = LibXML::XML::Node.new_cdata('mycdata')
32
- el << "_this_is_added"
33
- assert_equal '<root><![CDATA[mycdata_this_is_added]]></root>',
34
- @root.to_s.gsub(/\n\s*/,'')
35
- end
36
-
37
- def test_attributes
38
- cnode = LibXML::XML::Node.new_cdata('test cdata')
39
- assert_equal(0, cnode.attributes.length)
40
- end
41
-
42
- def test_set_cdata_attribute
43
- cnode = LibXML::XML::Node.new_cdata('test cdata')
44
-
45
- # Can't create attributes on non-element nodes
46
- assert_raises(ArgumentError) do
47
- cnode['attr'] = '123'
48
- end
49
- end
50
- end
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+
5
+ class CDataCommentTest < Minitest::Test
6
+ def setup
7
+ xp = LibXML::XML::Parser.string('<root></root>')
8
+ @doc = xp.parse
9
+ assert_instance_of(LibXML::XML::Document, @doc)
10
+ @root = @doc.root
11
+ end
12
+
13
+ def test_node_type
14
+ cnode = LibXML::XML::Node.new_cdata('test cdata')
15
+ assert_equal(LibXML::XML::Node::CDATA_SECTION_NODE, cnode.node_type)
16
+ end
17
+
18
+ def test_add_cdata
19
+ @root << LibXML::XML::Node.new_cdata('mycdata')
20
+ assert_equal '<root><![CDATA[mycdata]]></root>',
21
+ @root.to_s.gsub(/\n\s*/,'')
22
+ end
23
+
24
+ def test_add_cdata_2
25
+ @root << LibXML::XML::Node.new_cdata('mycdata')
26
+ assert_equal 'cdata',
27
+ @root.child.node_type_name
28
+ end
29
+
30
+ def test_add_cdata_3
31
+ @root << el = LibXML::XML::Node.new_cdata('mycdata')
32
+ el << "_this_is_added"
33
+ assert_equal '<root><![CDATA[mycdata_this_is_added]]></root>',
34
+ @root.to_s.gsub(/\n\s*/,'')
35
+ end
36
+
37
+ def test_attributes
38
+ cnode = LibXML::XML::Node.new_cdata('test cdata')
39
+ assert_equal(0, cnode.attributes.length)
40
+ end
41
+
42
+ def test_set_cdata_attribute
43
+ cnode = LibXML::XML::Node.new_cdata('test cdata')
44
+
45
+ # Can't create attributes on non-element nodes
46
+ assert_raises(ArgumentError) do
47
+ cnode['attr'] = '123'
48
+ end
49
+ end
50
+ end
@@ -1,32 +1,32 @@
1
- # encoding: UTF-8
2
-
3
- require_relative './test_helper'
4
-
5
-
6
- class NodeCommentTest < Minitest::Test
7
- def setup
8
- xp = LibXML::XML::Parser.string('<root></root>')
9
- @doc = xp.parse
10
- assert_instance_of(LibXML::XML::Document, @doc)
11
- @root = @doc.root
12
- end
13
-
14
- def test_libxml_node_add_comment_01
15
- @root << LibXML::XML::Node.new_comment('mycomment')
16
- assert_equal '<root><!--mycomment--></root>',
17
- @root.to_s.gsub(/\n\s*/,'')
18
- end
19
-
20
- def test_libxml_node_add_comment_02
21
- @root << LibXML::XML::Node.new_comment('mycomment')
22
- assert_equal 'comment',
23
- @root.child.node_type_name
24
- end
25
-
26
- def test_libxml_node_add_comment_03
27
- @root << el = LibXML::XML::Node.new_comment('mycomment')
28
- el << "_this_is_added"
29
- assert_equal '<root><!--mycomment_this_is_added--></root>',
30
- @root.to_s.gsub(/\n\s*/,'')
31
- end
32
- end
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+
5
+
6
+ class NodeCommentTest < Minitest::Test
7
+ def setup
8
+ xp = LibXML::XML::Parser.string('<root></root>')
9
+ @doc = xp.parse
10
+ assert_instance_of(LibXML::XML::Document, @doc)
11
+ @root = @doc.root
12
+ end
13
+
14
+ def test_libxml_node_add_comment_01
15
+ @root << LibXML::XML::Node.new_comment('mycomment')
16
+ assert_equal '<root><!--mycomment--></root>',
17
+ @root.to_s.gsub(/\n\s*/,'')
18
+ end
19
+
20
+ def test_libxml_node_add_comment_02
21
+ @root << LibXML::XML::Node.new_comment('mycomment')
22
+ assert_equal 'comment',
23
+ @root.child.node_type_name
24
+ end
25
+
26
+ def test_libxml_node_add_comment_03
27
+ @root << el = LibXML::XML::Node.new_comment('mycomment')
28
+ el << "_this_is_added"
29
+ assert_equal '<root><!--mycomment_this_is_added--></root>',
30
+ @root.to_s.gsub(/\n\s*/,'')
31
+ end
32
+ end