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.
- checksums.yaml +4 -4
- data/README.md +0 -1
- data/ext/nokogiri/extconf.rb +10 -6
- data/ext/nokogiri/xml_attr.c +26 -21
- data/ext/nokogiri/xml_document.c +4 -1
- data/ext/nokogiri/xml_namespace.c +3 -3
- data/ext/nokogiri/xml_namespace.h +1 -2
- data/ext/nokogiri/xml_node.c +55 -15
- data/lib/nokogiri/css/parser.rb +61 -61
- data/lib/nokogiri/version.rb +1 -1
- data/lib/nokogiri/xml/document_fragment.rb +11 -0
- data/lib/nokogiri/xml/node.rb +12 -0
- data/lib/nokogiri/xml/node_set.rb +4 -8
- metadata +17 -153
- data/.autotest +0 -22
- data/.cross_rubies +0 -8
- data/.editorconfig +0 -17
- data/.gemtest +0 -0
- data/.travis.yml +0 -63
- data/CHANGELOG.md +0 -1368
- data/CONTRIBUTING.md +0 -42
- data/C_CODING_STYLE.rdoc +0 -33
- data/Gemfile +0 -23
- data/Gemfile-libxml-ruby +0 -3
- data/Manifest.txt +0 -370
- data/ROADMAP.md +0 -111
- data/Rakefile +0 -348
- data/SECURITY.md +0 -19
- data/STANDARD_RESPONSES.md +0 -47
- data/Y_U_NO_GEMSPEC.md +0 -155
- data/appveyor.yml +0 -29
- data/build_all +0 -44
- data/patches/sort-patches-by-date +0 -25
- data/suppressions/README.txt +0 -1
- data/suppressions/nokogiri_ruby-2.supp +0 -10
- data/tasks/test.rb +0 -100
- data/test/css/test_nthiness.rb +0 -226
- data/test/css/test_parser.rb +0 -386
- data/test/css/test_tokenizer.rb +0 -215
- data/test/css/test_xpath_visitor.rb +0 -96
- data/test/decorators/test_slop.rb +0 -23
- data/test/files/2ch.html +0 -108
- data/test/files/GH_1042.html +0 -18
- data/test/files/address_book.rlx +0 -12
- data/test/files/address_book.xml +0 -10
- data/test/files/atom.xml +0 -344
- data/test/files/bar/bar.xsd +0 -4
- data/test/files/bogus.xml +0 -0
- data/test/files/dont_hurt_em_why.xml +0 -422
- data/test/files/encoding.html +0 -82
- data/test/files/encoding.xhtml +0 -84
- data/test/files/exslt.xml +0 -8
- data/test/files/exslt.xslt +0 -35
- data/test/files/foo/foo.xsd +0 -4
- data/test/files/metacharset.html +0 -10
- data/test/files/namespace_pressure_test.xml +0 -1684
- data/test/files/noencoding.html +0 -47
- data/test/files/po.xml +0 -32
- data/test/files/po.xsd +0 -66
- data/test/files/saml/saml20assertion_schema.xsd +0 -283
- data/test/files/saml/saml20protocol_schema.xsd +0 -302
- data/test/files/saml/xenc_schema.xsd +0 -146
- data/test/files/saml/xmldsig_schema.xsd +0 -318
- data/test/files/shift_jis.html +0 -10
- data/test/files/shift_jis.xml +0 -5
- data/test/files/shift_jis_no_charset.html +0 -9
- data/test/files/slow-xpath.xml +0 -25509
- data/test/files/snuggles.xml +0 -3
- data/test/files/staff.dtd +0 -10
- data/test/files/staff.xml +0 -59
- data/test/files/staff.xslt +0 -32
- data/test/files/test_document_url/bar.xml +0 -2
- data/test/files/test_document_url/document.dtd +0 -4
- data/test/files/test_document_url/document.xml +0 -6
- data/test/files/tlm.html +0 -851
- data/test/files/to_be_xincluded.xml +0 -2
- data/test/files/valid_bar.xml +0 -2
- data/test/files/xinclude.xml +0 -4
- data/test/helper.rb +0 -271
- data/test/html/sax/test_parser.rb +0 -168
- data/test/html/sax/test_parser_context.rb +0 -46
- data/test/html/sax/test_parser_text.rb +0 -163
- data/test/html/sax/test_push_parser.rb +0 -87
- data/test/html/test_attributes.rb +0 -85
- data/test/html/test_builder.rb +0 -164
- data/test/html/test_document.rb +0 -712
- data/test/html/test_document_encoding.rb +0 -143
- data/test/html/test_document_fragment.rb +0 -310
- data/test/html/test_element_description.rb +0 -105
- data/test/html/test_named_characters.rb +0 -14
- data/test/html/test_node.rb +0 -212
- data/test/html/test_node_encoding.rb +0 -91
- data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +0 -14
- data/test/namespaces/test_namespaces_aliased_default.rb +0 -24
- data/test/namespaces/test_namespaces_in_builder_doc.rb +0 -75
- data/test/namespaces/test_namespaces_in_cloned_doc.rb +0 -31
- data/test/namespaces/test_namespaces_in_created_doc.rb +0 -75
- data/test/namespaces/test_namespaces_in_parsed_doc.rb +0 -80
- data/test/namespaces/test_namespaces_preservation.rb +0 -31
- data/test/test_convert_xpath.rb +0 -135
- data/test/test_css_cache.rb +0 -47
- data/test/test_encoding_handler.rb +0 -48
- data/test/test_memory_leak.rb +0 -156
- data/test/test_nokogiri.rb +0 -138
- data/test/test_soap4r_sax.rb +0 -52
- data/test/test_xslt_transforms.rb +0 -314
- data/test/xml/node/test_save_options.rb +0 -28
- data/test/xml/node/test_subclass.rb +0 -44
- data/test/xml/sax/test_parser.rb +0 -402
- data/test/xml/sax/test_parser_context.rb +0 -115
- data/test/xml/sax/test_parser_text.rb +0 -202
- data/test/xml/sax/test_push_parser.rb +0 -265
- data/test/xml/test_attr.rb +0 -74
- data/test/xml/test_attribute_decl.rb +0 -86
- data/test/xml/test_builder.rb +0 -341
- data/test/xml/test_c14n.rb +0 -180
- data/test/xml/test_cdata.rb +0 -54
- data/test/xml/test_comment.rb +0 -40
- data/test/xml/test_document.rb +0 -982
- data/test/xml/test_document_encoding.rb +0 -31
- data/test/xml/test_document_fragment.rb +0 -298
- data/test/xml/test_dtd.rb +0 -187
- data/test/xml/test_dtd_encoding.rb +0 -31
- data/test/xml/test_element_content.rb +0 -56
- data/test/xml/test_element_decl.rb +0 -73
- data/test/xml/test_entity_decl.rb +0 -122
- data/test/xml/test_entity_reference.rb +0 -262
- data/test/xml/test_namespace.rb +0 -96
- data/test/xml/test_node.rb +0 -1325
- data/test/xml/test_node_attributes.rb +0 -115
- data/test/xml/test_node_encoding.rb +0 -75
- data/test/xml/test_node_inheritance.rb +0 -32
- data/test/xml/test_node_reparenting.rb +0 -592
- data/test/xml/test_node_set.rb +0 -809
- data/test/xml/test_parse_options.rb +0 -64
- data/test/xml/test_processing_instruction.rb +0 -30
- data/test/xml/test_reader.rb +0 -620
- data/test/xml/test_reader_encoding.rb +0 -134
- data/test/xml/test_relax_ng.rb +0 -60
- data/test/xml/test_schema.rb +0 -142
- data/test/xml/test_syntax_error.rb +0 -36
- data/test/xml/test_text.rb +0 -60
- data/test/xml/test_unparented_node.rb +0 -483
- data/test/xml/test_xinclude.rb +0 -83
- data/test/xml/test_xpath.rb +0 -470
- data/test/xslt/test_custom_functions.rb +0 -133
- 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&asdf">
|
241
|
-
<!-- This is a comment -->
|
242
|
-
Paragraph 1 & 2
|
243
|
-
</p>
|
244
|
-
eoxml
|
245
|
-
@parser.finish
|
246
|
-
assert_equal [["p", [["id", "asdf&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&asdf">
|
254
|
-
<!-- This is a comment -->
|
255
|
-
Paragraph 1 & 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
|
data/test/xml/test_attr.rb
DELETED
@@ -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
|
-
|