nokogiri 1.9.0.rc1 → 1.9.0
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/lib/nokogiri/css/parser.rb +61 -61
- data/lib/nokogiri/version.rb +1 -1
- metadata +4 -146
- 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 -1402
- 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 -371
- data/ROADMAP.md +0 -111
- data/Rakefile +0 -358
- 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 -48
- 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 -722
- 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 -226
- 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 -96
- data/test/xml/test_attribute_decl.rb +0 -86
- data/test/xml/test_builder.rb +0 -353
- 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 -312
- 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 -1379
- 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 -661
- data/test/xml/test_node_set.rb +0 -828
- 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 -69
- 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,115 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require "helper"
|
4
|
-
|
5
|
-
module Nokogiri
|
6
|
-
module XML
|
7
|
-
module SAX
|
8
|
-
class TestParserContext < Nokogiri::SAX::TestCase
|
9
|
-
def setup
|
10
|
-
@xml = '<hello>
|
11
|
-
|
12
|
-
world
|
13
|
-
<inter>
|
14
|
-
<net>
|
15
|
-
</net>
|
16
|
-
</inter>
|
17
|
-
|
18
|
-
</hello>'
|
19
|
-
end
|
20
|
-
|
21
|
-
class Counter < Nokogiri::XML::SAX::Document
|
22
|
-
attr_accessor :context, :lines, :columns
|
23
|
-
def initialize
|
24
|
-
@context = nil
|
25
|
-
@lines = []
|
26
|
-
@columns = []
|
27
|
-
end
|
28
|
-
|
29
|
-
def start_element name, attrs = []
|
30
|
-
@lines << [name, context.line]
|
31
|
-
@columns << [name, context.column]
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_line_numbers
|
36
|
-
sax_handler = Counter.new
|
37
|
-
|
38
|
-
parser = Nokogiri::XML::SAX::Parser.new(sax_handler)
|
39
|
-
parser.parse(@xml) do |ctx|
|
40
|
-
sax_handler.context = ctx
|
41
|
-
end
|
42
|
-
|
43
|
-
assert_equal [["hello", 1], ["inter", 4], ["net", 5]],
|
44
|
-
sax_handler.lines
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_column_numbers
|
48
|
-
sax_handler = Counter.new
|
49
|
-
|
50
|
-
parser = Nokogiri::XML::SAX::Parser.new(sax_handler)
|
51
|
-
parser.parse(@xml) do |ctx|
|
52
|
-
sax_handler.context = ctx
|
53
|
-
end
|
54
|
-
|
55
|
-
assert_equal [["hello", 7], ["inter", 7], ["net", 9]],
|
56
|
-
sax_handler.columns
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_replace_entities
|
60
|
-
pc = ParserContext.new StringIO.new('<root />'), 'UTF-8'
|
61
|
-
pc.replace_entities = false
|
62
|
-
assert_equal false, pc.replace_entities
|
63
|
-
|
64
|
-
pc.replace_entities = true
|
65
|
-
assert_equal true, pc.replace_entities
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_recovery
|
69
|
-
pc = ParserContext.new StringIO.new('<root />'), 'UTF-8'
|
70
|
-
pc.recovery = false
|
71
|
-
assert_equal false, pc.recovery
|
72
|
-
|
73
|
-
pc.recovery = true
|
74
|
-
assert_equal true, pc.recovery
|
75
|
-
end
|
76
|
-
|
77
|
-
def test_from_io
|
78
|
-
ctx = ParserContext.new StringIO.new('fo'), 'UTF-8'
|
79
|
-
assert ctx
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_from_string
|
83
|
-
assert ParserContext.new 'blah blah'
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_parse_with
|
87
|
-
ctx = ParserContext.new 'blah'
|
88
|
-
assert_raises ArgumentError do
|
89
|
-
ctx.parse_with nil
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_parse_with_sax_parser
|
94
|
-
xml = "<root />"
|
95
|
-
ctx = ParserContext.new xml
|
96
|
-
parser = Parser.new Doc.new
|
97
|
-
assert_nil ctx.parse_with parser
|
98
|
-
end
|
99
|
-
|
100
|
-
def test_from_file
|
101
|
-
ctx = ParserContext.file XML_FILE
|
102
|
-
parser = Parser.new Doc.new
|
103
|
-
assert_nil ctx.parse_with parser
|
104
|
-
end
|
105
|
-
|
106
|
-
def test_parse_with_returns_nil
|
107
|
-
xml = "<root />"
|
108
|
-
ctx = ParserContext.new xml
|
109
|
-
parser = Parser.new Doc.new
|
110
|
-
assert_nil ctx.parse_with(parser)
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
@@ -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
|