nokogiri 1.8.5 → 1.9.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of nokogiri might be problematic. Click here for more details.

Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -1
  3. data/ext/nokogiri/extconf.rb +10 -6
  4. data/ext/nokogiri/xml_attr.c +26 -21
  5. data/ext/nokogiri/xml_document.c +4 -1
  6. data/ext/nokogiri/xml_namespace.c +3 -3
  7. data/ext/nokogiri/xml_namespace.h +1 -2
  8. data/ext/nokogiri/xml_node.c +55 -15
  9. data/lib/nokogiri/css/parser.rb +61 -61
  10. data/lib/nokogiri/version.rb +1 -1
  11. data/lib/nokogiri/xml/document_fragment.rb +11 -0
  12. data/lib/nokogiri/xml/node.rb +12 -0
  13. data/lib/nokogiri/xml/node_set.rb +4 -8
  14. metadata +17 -153
  15. data/.autotest +0 -22
  16. data/.cross_rubies +0 -8
  17. data/.editorconfig +0 -17
  18. data/.gemtest +0 -0
  19. data/.travis.yml +0 -63
  20. data/CHANGELOG.md +0 -1368
  21. data/CONTRIBUTING.md +0 -42
  22. data/C_CODING_STYLE.rdoc +0 -33
  23. data/Gemfile +0 -23
  24. data/Gemfile-libxml-ruby +0 -3
  25. data/Manifest.txt +0 -370
  26. data/ROADMAP.md +0 -111
  27. data/Rakefile +0 -348
  28. data/SECURITY.md +0 -19
  29. data/STANDARD_RESPONSES.md +0 -47
  30. data/Y_U_NO_GEMSPEC.md +0 -155
  31. data/appveyor.yml +0 -29
  32. data/build_all +0 -44
  33. data/patches/sort-patches-by-date +0 -25
  34. data/suppressions/README.txt +0 -1
  35. data/suppressions/nokogiri_ruby-2.supp +0 -10
  36. data/tasks/test.rb +0 -100
  37. data/test/css/test_nthiness.rb +0 -226
  38. data/test/css/test_parser.rb +0 -386
  39. data/test/css/test_tokenizer.rb +0 -215
  40. data/test/css/test_xpath_visitor.rb +0 -96
  41. data/test/decorators/test_slop.rb +0 -23
  42. data/test/files/2ch.html +0 -108
  43. data/test/files/GH_1042.html +0 -18
  44. data/test/files/address_book.rlx +0 -12
  45. data/test/files/address_book.xml +0 -10
  46. data/test/files/atom.xml +0 -344
  47. data/test/files/bar/bar.xsd +0 -4
  48. data/test/files/bogus.xml +0 -0
  49. data/test/files/dont_hurt_em_why.xml +0 -422
  50. data/test/files/encoding.html +0 -82
  51. data/test/files/encoding.xhtml +0 -84
  52. data/test/files/exslt.xml +0 -8
  53. data/test/files/exslt.xslt +0 -35
  54. data/test/files/foo/foo.xsd +0 -4
  55. data/test/files/metacharset.html +0 -10
  56. data/test/files/namespace_pressure_test.xml +0 -1684
  57. data/test/files/noencoding.html +0 -47
  58. data/test/files/po.xml +0 -32
  59. data/test/files/po.xsd +0 -66
  60. data/test/files/saml/saml20assertion_schema.xsd +0 -283
  61. data/test/files/saml/saml20protocol_schema.xsd +0 -302
  62. data/test/files/saml/xenc_schema.xsd +0 -146
  63. data/test/files/saml/xmldsig_schema.xsd +0 -318
  64. data/test/files/shift_jis.html +0 -10
  65. data/test/files/shift_jis.xml +0 -5
  66. data/test/files/shift_jis_no_charset.html +0 -9
  67. data/test/files/slow-xpath.xml +0 -25509
  68. data/test/files/snuggles.xml +0 -3
  69. data/test/files/staff.dtd +0 -10
  70. data/test/files/staff.xml +0 -59
  71. data/test/files/staff.xslt +0 -32
  72. data/test/files/test_document_url/bar.xml +0 -2
  73. data/test/files/test_document_url/document.dtd +0 -4
  74. data/test/files/test_document_url/document.xml +0 -6
  75. data/test/files/tlm.html +0 -851
  76. data/test/files/to_be_xincluded.xml +0 -2
  77. data/test/files/valid_bar.xml +0 -2
  78. data/test/files/xinclude.xml +0 -4
  79. data/test/helper.rb +0 -271
  80. data/test/html/sax/test_parser.rb +0 -168
  81. data/test/html/sax/test_parser_context.rb +0 -46
  82. data/test/html/sax/test_parser_text.rb +0 -163
  83. data/test/html/sax/test_push_parser.rb +0 -87
  84. data/test/html/test_attributes.rb +0 -85
  85. data/test/html/test_builder.rb +0 -164
  86. data/test/html/test_document.rb +0 -712
  87. data/test/html/test_document_encoding.rb +0 -143
  88. data/test/html/test_document_fragment.rb +0 -310
  89. data/test/html/test_element_description.rb +0 -105
  90. data/test/html/test_named_characters.rb +0 -14
  91. data/test/html/test_node.rb +0 -212
  92. data/test/html/test_node_encoding.rb +0 -91
  93. data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +0 -14
  94. data/test/namespaces/test_namespaces_aliased_default.rb +0 -24
  95. data/test/namespaces/test_namespaces_in_builder_doc.rb +0 -75
  96. data/test/namespaces/test_namespaces_in_cloned_doc.rb +0 -31
  97. data/test/namespaces/test_namespaces_in_created_doc.rb +0 -75
  98. data/test/namespaces/test_namespaces_in_parsed_doc.rb +0 -80
  99. data/test/namespaces/test_namespaces_preservation.rb +0 -31
  100. data/test/test_convert_xpath.rb +0 -135
  101. data/test/test_css_cache.rb +0 -47
  102. data/test/test_encoding_handler.rb +0 -48
  103. data/test/test_memory_leak.rb +0 -156
  104. data/test/test_nokogiri.rb +0 -138
  105. data/test/test_soap4r_sax.rb +0 -52
  106. data/test/test_xslt_transforms.rb +0 -314
  107. data/test/xml/node/test_save_options.rb +0 -28
  108. data/test/xml/node/test_subclass.rb +0 -44
  109. data/test/xml/sax/test_parser.rb +0 -402
  110. data/test/xml/sax/test_parser_context.rb +0 -115
  111. data/test/xml/sax/test_parser_text.rb +0 -202
  112. data/test/xml/sax/test_push_parser.rb +0 -265
  113. data/test/xml/test_attr.rb +0 -74
  114. data/test/xml/test_attribute_decl.rb +0 -86
  115. data/test/xml/test_builder.rb +0 -341
  116. data/test/xml/test_c14n.rb +0 -180
  117. data/test/xml/test_cdata.rb +0 -54
  118. data/test/xml/test_comment.rb +0 -40
  119. data/test/xml/test_document.rb +0 -982
  120. data/test/xml/test_document_encoding.rb +0 -31
  121. data/test/xml/test_document_fragment.rb +0 -298
  122. data/test/xml/test_dtd.rb +0 -187
  123. data/test/xml/test_dtd_encoding.rb +0 -31
  124. data/test/xml/test_element_content.rb +0 -56
  125. data/test/xml/test_element_decl.rb +0 -73
  126. data/test/xml/test_entity_decl.rb +0 -122
  127. data/test/xml/test_entity_reference.rb +0 -262
  128. data/test/xml/test_namespace.rb +0 -96
  129. data/test/xml/test_node.rb +0 -1325
  130. data/test/xml/test_node_attributes.rb +0 -115
  131. data/test/xml/test_node_encoding.rb +0 -75
  132. data/test/xml/test_node_inheritance.rb +0 -32
  133. data/test/xml/test_node_reparenting.rb +0 -592
  134. data/test/xml/test_node_set.rb +0 -809
  135. data/test/xml/test_parse_options.rb +0 -64
  136. data/test/xml/test_processing_instruction.rb +0 -30
  137. data/test/xml/test_reader.rb +0 -620
  138. data/test/xml/test_reader_encoding.rb +0 -134
  139. data/test/xml/test_relax_ng.rb +0 -60
  140. data/test/xml/test_schema.rb +0 -142
  141. data/test/xml/test_syntax_error.rb +0 -36
  142. data/test/xml/test_text.rb +0 -60
  143. data/test/xml/test_unparented_node.rb +0 -483
  144. data/test/xml/test_xinclude.rb +0 -83
  145. data/test/xml/test_xpath.rb +0 -470
  146. data/test/xslt/test_custom_functions.rb +0 -133
  147. data/test/xslt/test_exception_handling.rb +0 -37
@@ -1,202 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require "helper"
3
-
4
- module Nokogiri
5
- module XML
6
- module SAX
7
- class TestParserText < Nokogiri::SAX::TestCase
8
- def setup
9
- super
10
- @doc = DocWithOrderedItems.new
11
- @parser = XML::SAX::Parser.new @doc
12
- end
13
-
14
- def test_texts_order
15
- xml = <<-eoxml
16
- <?xml version="1.0" ?>
17
- <root>
18
- text 0
19
- <p>
20
- text 1
21
- <span>text 2</span>
22
- text 3
23
- </p>
24
-
25
- text 4
26
- <!--
27
- text 5
28
- -->
29
-
30
- <p>
31
- <!-- text 6 -->
32
- <span><!-- text 7 --></span>
33
- <!-- text 8 -->
34
- </p>
35
-
36
- <!-- text 9 -->
37
- <![CDATA[ text 10 ]]>
38
-
39
- <p>
40
- <![CDATA[ text 11 ]]>
41
- <span><![CDATA[ text 12 ]]></span>
42
- <![CDATA[ text 13 ]]>
43
- </p>
44
- </root>
45
- eoxml
46
-
47
- @parser.parse xml
48
- items = @doc.items.get_root_content "root"
49
- items = items.select_methods [
50
- :start_element, :end_element,
51
- :characters, :comment, :cdata_block
52
- ]
53
- items.strip_text! [:characters, :comment, :cdata_block]
54
-
55
- assert_equal [
56
- [:characters, 'text 0'],
57
-
58
- [:start_element, 'p', []],
59
- [:characters, 'text 1'],
60
-
61
- [:start_element, 'span', []],
62
- [:characters, 'text 2'],
63
- [:end_element, 'span'],
64
-
65
- [:characters, 'text 3'],
66
- [:end_element, 'p'],
67
-
68
- [:characters, 'text 4'],
69
- [:comment, 'text 5'],
70
- [:characters, ''],
71
-
72
- [:start_element, 'p', []],
73
- [:characters, ''],
74
- [:comment, 'text 6'],
75
- [:characters, ''],
76
-
77
- [:start_element, 'span', []],
78
- [:comment, 'text 7'],
79
- [:end_element, 'span'],
80
- [:characters, ''],
81
-
82
- [:comment, 'text 8'],
83
- [:characters, ''],
84
- [:end_element, 'p'],
85
- [:characters, ''],
86
-
87
- [:comment, 'text 9'],
88
- [:characters, ''],
89
- [:cdata_block, 'text 10'],
90
- [:characters, ''],
91
-
92
- [:start_element, 'p', []],
93
- [:characters, ''],
94
- [:cdata_block, 'text 11'],
95
- [:characters, ''],
96
-
97
- [:start_element, 'span', []],
98
- [:cdata_block, 'text 12'],
99
- [:end_element, 'span'],
100
- [:characters, ''],
101
-
102
- [:cdata_block, 'text 13'],
103
- [:characters, ''],
104
-
105
- [:end_element, 'p'],
106
- [:characters, '']
107
- ], items
108
-
109
- nil
110
- end
111
-
112
- def text_whitespace
113
- xml = <<-eoxml
114
- <?xml version="1.0" ?>
115
- <root>
116
- <p>
117
- <span></span>
118
- <span> </span>
119
- <span>
120
-
121
- </span>
122
- </p>
123
- <p>
124
- <!---->
125
- <!-- -->
126
- <!--
127
-
128
- -->
129
- </p>
130
- <p>
131
- <![CDATA[]]>
132
- <![CDATA[ ]]>
133
- <![CDATA[
134
-
135
- ]]>
136
- </p>
137
- </root>
138
- eoxml
139
-
140
- @parser.parse xml
141
- items = @doc.items.get_root_content "root"
142
- items = items.select_methods [
143
- :start_element, :end_element,
144
- :characters, :comment, :cdata_block
145
- ]
146
- items.strip_text! [:characters, :comment, :cdata_block]
147
-
148
- assert_equal [
149
- [:characters, ''],
150
- [:start_element, 'p', []],
151
-
152
- [:characters, ''],
153
- [:start_element, 'span', []],
154
- [:end_element, 'span'],
155
- [:characters, ''],
156
-
157
- [:start_element, 'span', []],
158
- [:characters, ''],
159
- [:end_element, 'span'],
160
- [:characters, ''],
161
-
162
- [:start_element, 'span', []],
163
- [:characters, ''],
164
- [:end_element, 'span'],
165
- [:characters, ''],
166
-
167
- [:end_element, 'p'],
168
- [:characters, ''],
169
-
170
- [:start_element, 'p', []],
171
- [:characters, ''],
172
-
173
- [:comment, ''],
174
- [:characters, ''],
175
- [:comment, ''],
176
- [:characters, ''],
177
- [:comment, ''],
178
- [:characters, ''],
179
-
180
- [:end_element, 'p'],
181
- [:characters, ''],
182
-
183
- [:start_element, 'p', []],
184
- [:characters, ''],
185
-
186
- [:cdata_block, ''],
187
- [:characters, ''],
188
- [:cdata_block, ''],
189
- [:characters, ''],
190
- [:cdata_block, ''],
191
- [:characters, ''],
192
-
193
- [:end_element, 'p'],
194
- [:characters, '']
195
- ], items
196
-
197
- nil
198
- end
199
- end
200
- end
201
- end
202
- end
@@ -1,265 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- require "helper"
4
-
5
- module Nokogiri
6
- module XML
7
- module SAX
8
- class TestPushParser < Nokogiri::SAX::TestCase
9
- def setup
10
- super
11
- @parser = XML::SAX::PushParser.new(Doc.new)
12
- end
13
-
14
- def test_exception
15
- assert_raises(SyntaxError) do
16
- @parser << "<foo /><foo />"
17
- end
18
-
19
- assert_raises(SyntaxError) do
20
- @parser << nil
21
- end
22
- end
23
-
24
- def test_early_finish
25
- @parser << "<foo>"
26
- assert_raises(SyntaxError) do
27
- @parser.finish
28
- end
29
- end
30
-
31
- def test_write_last_chunk
32
- @parser << "<foo>"
33
- @parser.write "</foo>", true
34
- assert_equal [["foo", []]], @parser.document.start_elements
35
- assert_equal [["foo"]], @parser.document.end_elements
36
- end
37
-
38
- def test_empty_doc
39
- @parser.options |= XML::ParseOptions::RECOVER
40
- @parser.write "", true
41
- assert_nil @parser.document.start_elements
42
- assert_nil @parser.document.end_elements
43
- end
44
-
45
-
46
- def test_finish_should_rethrow_last_error
47
- begin
48
- @parser << "</foo>"
49
- rescue => e
50
- expected = e
51
- end
52
-
53
- begin
54
- @parser.finish
55
- rescue => e
56
- actual = e
57
- end
58
-
59
- assert_equal actual.message, expected.message
60
- end
61
-
62
- def test_should_throw_error_returned_by_document
63
- doc = Doc.new
64
- class << doc
65
- def error msg
66
- raise "parse error"
67
- end
68
- end
69
-
70
- @parser = XML::SAX::PushParser.new(doc)
71
- begin
72
- @parser << "</foo>"
73
- rescue => e
74
- actual = e
75
- end
76
-
77
- assert_equal actual.message, "parse error"
78
- end
79
-
80
- def test_writing_nil
81
- assert_equal @parser.write(nil), @parser
82
- end
83
-
84
- def test_end_document_called
85
- @parser.<<(<<-eoxml)
86
- <p id="asdfasdf">
87
- <!-- This is a comment -->
88
- Paragraph 1
89
- </p>
90
- eoxml
91
- assert ! @parser.document.end_document_called
92
- @parser.finish
93
- assert @parser.document.end_document_called
94
- end
95
-
96
- def test_start_element
97
- @parser.<<(<<-eoxml)
98
- <p id="asdfasdf">
99
- eoxml
100
-
101
- assert_equal [["p", [["id", "asdfasdf"]]]],
102
- @parser.document.start_elements
103
-
104
- @parser.<<(<<-eoxml)
105
- <!-- This is a comment -->
106
- Paragraph 1
107
- </p>
108
- eoxml
109
- assert_equal [' This is a comment '], @parser.document.comments
110
- @parser.finish
111
- end
112
-
113
- def test_start_element_with_namespaces
114
- @parser.<<(<<-eoxml)
115
- <p xmlns:foo="http://foo.example.com/">
116
- eoxml
117
-
118
- assert_equal [["p", [["xmlns:foo", "http://foo.example.com/"]]]],
119
- @parser.document.start_elements
120
-
121
- @parser.<<(<<-eoxml)
122
- <!-- This is a comment -->
123
- Paragraph 1
124
- </p>
125
- eoxml
126
- assert_equal [' This is a comment '], @parser.document.comments
127
- @parser.finish
128
- end
129
-
130
- def test_start_element_ns
131
- @parser.<<(<<-eoxml)
132
- <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' size='large'></stream:stream>
133
- eoxml
134
-
135
- assert_equal 1, @parser.document.start_elements_namespace.length
136
- el = @parser.document.start_elements_namespace.first
137
-
138
- assert_equal 'stream', el.first
139
- assert_equal 2, el[1].length
140
- assert_equal [['version', '1.0'], ['size', 'large']],
141
- el[1].map { |x| [x.localname, x.value] }
142
-
143
- assert_equal 'stream', el[2]
144
- assert_equal 'http://etherx.jabber.org/streams', el[3]
145
- @parser.finish
146
- end
147
-
148
- def test_end_element_ns
149
- @parser.<<(<<-eoxml)
150
- <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'></stream:stream>
151
- eoxml
152
-
153
- assert_equal [['stream', 'stream', 'http://etherx.jabber.org/streams']],
154
- @parser.document.end_elements_namespace
155
- @parser.finish
156
- end
157
-
158
- def test_chevron_partial_xml
159
- @parser.<<(<<-eoxml)
160
- <p id="asdfasdf">
161
- eoxml
162
-
163
- @parser.<<(<<-eoxml)
164
- <!-- This is a comment -->
165
- Paragraph 1
166
- </p>
167
- eoxml
168
- assert_equal [' This is a comment '], @parser.document.comments
169
- @parser.finish
170
- end
171
-
172
- def test_chevron
173
- @parser.<<(<<-eoxml)
174
- <p id="asdfasdf">
175
- <!-- This is a comment -->
176
- Paragraph 1
177
- </p>
178
- eoxml
179
- @parser.finish
180
- assert_equal [' This is a comment '], @parser.document.comments
181
- end
182
-
183
- def test_default_options
184
- assert_equal 0, @parser.options
185
- end
186
-
187
- def test_recover
188
- @parser.options |= XML::ParseOptions::RECOVER
189
- @parser.<<(<<-eoxml)
190
- <p>
191
- Foo
192
- <bar>
193
- Bar
194
- </p>
195
- eoxml
196
- @parser.finish
197
- assert(@parser.document.errors.size >= 1)
198
- assert_equal [["p", []], ["bar", []]], @parser.document.start_elements
199
- assert_equal "FooBar", @parser.document.data.map { |x|
200
- x.gsub(/\s/, '')
201
- }.join
202
- end
203
-
204
- def test_broken_encoding
205
- skip("ultra hard to fix for pure Java version") if Nokogiri.jruby?
206
- @parser.options |= XML::ParseOptions::RECOVER
207
- # This is ISO_8859-1:
208
- @parser.<< "<?xml version='1.0' encoding='UTF-8'?><r>Gau\337</r>"
209
- @parser.finish
210
- assert(@parser.document.errors.size >= 1)
211
- assert_equal "Gau\337", @parser.document.data.join
212
- assert_equal [["r"]], @parser.document.end_elements
213
- end
214
-
215
- def test_replace_entities_attribute_behavior
216
- if Nokogiri.uses_libxml?
217
- # initially false
218
- assert_equal false, @parser.replace_entities
219
-
220
- # can be set to true
221
- @parser.replace_entities = true
222
- assert_equal true, @parser.replace_entities
223
-
224
- # can be set to false
225
- @parser.replace_entities = false
226
- assert_equal false, @parser.replace_entities
227
- else
228
- # initially true
229
- assert_equal true, @parser.replace_entities
230
-
231
- # ignore attempts to set to false
232
- @parser.replace_entities = false # TODO: should we raise an exception here?
233
- assert_equal true, @parser.replace_entities
234
- end
235
- end
236
-
237
- def test_untouched_entities
238
- skip("entities are always replaced in pure Java version") if Nokogiri.jruby?
239
- @parser.<<(<<-eoxml)
240
- <p id="asdf&amp;asdf">
241
- <!-- This is a comment -->
242
- Paragraph 1 &amp; 2
243
- </p>
244
- eoxml
245
- @parser.finish
246
- assert_equal [["p", [["id", "asdf&#38;asdf"]]]], @parser.document.start_elements
247
- assert_equal "Paragraph 1 & 2", @parser.document.data.join.strip
248
- end
249
-
250
- def test_replaced_entities
251
- @parser.replace_entities = true
252
- @parser.<<(<<-eoxml)
253
- <p id="asdf&amp;asdf">
254
- <!-- This is a comment -->
255
- Paragraph 1 &amp; 2
256
- </p>
257
- eoxml
258
- @parser.finish
259
- assert_equal [["p", [["id", "asdf&asdf"]]]], @parser.document.start_elements
260
- assert_equal "Paragraph 1 & 2", @parser.document.data.join.strip
261
- end
262
- end
263
- end
264
- end
265
- end
@@ -1,74 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestAttr < Nokogiri::TestCase
6
- def test_new
7
- 100.times {
8
- doc = Nokogiri::XML::Document.new
9
- assert doc
10
- assert Nokogiri::XML::Attr.new(doc, 'foo')
11
- }
12
- end
13
-
14
- def test_new_raises_argerror_on_nondocument
15
- document = Nokogiri::XML "<root><foo/></root>"
16
- assert_raises ArgumentError do
17
- Nokogiri::XML::Attr.new document.at_css("foo"), "bar"
18
- end
19
- end
20
-
21
- def test_content=
22
- xml = Nokogiri::XML.parse(File.read(XML_FILE), XML_FILE)
23
- address = xml.xpath('//address')[3]
24
- street = address.attributes['street']
25
- street.content = "Y&ent1;"
26
- assert_equal "Y&ent1;", street.value
27
- end
28
-
29
- def test_value=
30
- xml = Nokogiri::XML.parse(File.read(XML_FILE), XML_FILE)
31
- address = xml.xpath('//address')[3]
32
- street = address.attributes['street']
33
- street.value = "Y&ent1;"
34
- assert_equal "Y&ent1;", street.value
35
- end
36
-
37
- def test_unlink # aliased as :remove
38
- xml = Nokogiri::XML.parse(File.read(XML_FILE), XML_FILE)
39
- address = xml.xpath('/staff/employee/address').first
40
- assert_equal 'Yes', address['domestic']
41
-
42
- attr = address.attribute_nodes.first
43
- return_val = attr.unlink
44
- assert_nil address['domestic']
45
- assert_equal attr, return_val
46
- end
47
-
48
- def test_parsing_attribute_namespace
49
- doc = Nokogiri::XML <<-EOXML
50
- <root xmlns='http://google.com/' xmlns:f='http://flavorjon.es/'>
51
- <div f:myattr='foo'></div>
52
- </root>
53
- EOXML
54
-
55
- node = doc.at_css "div"
56
- attr = node.attributes["myattr"]
57
- assert_equal "http://flavorjon.es/", attr.namespace.href
58
- end
59
-
60
- def test_setting_attribute_namespace
61
- doc = Nokogiri::XML <<-EOXML
62
- <root xmlns='http://google.com/' xmlns:f='http://flavorjon.es/'>
63
- <div f:myattr='foo'></div>
64
- </root>
65
- EOXML
66
-
67
- node = doc.at_css "div"
68
- attr = node.attributes["myattr"]
69
- attr.add_namespace("fizzle", "http://fizzle.com/")
70
- assert_equal "http://fizzle.com/", attr.namespace.href
71
- end
72
- end
73
- end
74
- end
@@ -1,86 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestAttributeDecl < Nokogiri::TestCase
6
- def setup
7
- super
8
- @xml = Nokogiri::XML(<<-eoxml)
9
- <?xml version="1.0"?><?TEST-STYLE PIDATA?>
10
- <!DOCTYPE staff SYSTEM "staff.dtd" [
11
- <!ATTLIST br width CDATA "0">
12
- <!ATTLIST a width CDATA "0">
13
- <!ATTLIST payment type (check|cash) "cash">
14
- ]>
15
- <root />
16
- eoxml
17
- @attrs = @xml.internal_subset.children
18
- @attr_decl = @attrs.first
19
- end
20
-
21
- def test_inspect
22
- assert_equal(
23
- "#<#{@attr_decl.class.name}:#{sprintf("0x%x", @attr_decl.object_id)} #{@attr_decl.to_s.inspect}>",
24
- @attr_decl.inspect
25
- )
26
- end
27
-
28
- def test_type
29
- assert_equal 16, @attr_decl.type
30
- end
31
-
32
- def test_class
33
- assert_instance_of Nokogiri::XML::AttributeDecl, @attr_decl
34
- end
35
-
36
- def test_content
37
- assert_raise NoMethodError do
38
- @attr_decl.content
39
- end
40
- end
41
-
42
- def test_attributes
43
- assert_raise NoMethodError do
44
- @attr_decl.attributes
45
- end
46
- end
47
-
48
- def test_namespace
49
- assert_raise NoMethodError do
50
- @attr_decl.namespace
51
- end
52
- end
53
-
54
- def test_namespace_definitions
55
- assert_raise NoMethodError do
56
- @attr_decl.namespace_definitions
57
- end
58
- end
59
-
60
- def test_line
61
- assert_raise NoMethodError do
62
- @attr_decl.line
63
- end
64
- end
65
-
66
- def test_attribute_type
67
- if Nokogiri.uses_libxml?
68
- assert_equal 1, @attr_decl.attribute_type
69
- else
70
- assert_equal 'CDATA', @attr_decl.attribute_type
71
- end
72
- end
73
-
74
- def test_default
75
- assert_equal '0', @attr_decl.default
76
- assert_equal '0', @attrs[1].default
77
- end
78
-
79
- def test_enumeration
80
- assert_equal [], @attr_decl.enumeration
81
- assert_equal ['check', 'cash'], @attrs[2].enumeration
82
- end
83
- end
84
- end
85
- end
86
-