nokogiri 1.4.0-x86-mswin32 → 1.4.1-x86-mswin32
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.
- data/.autotest +5 -6
- data/CHANGELOG.ja.rdoc +47 -11
- data/CHANGELOG.rdoc +31 -0
- data/Manifest.txt +8 -1
- data/README.ja.rdoc +4 -3
- data/README.rdoc +9 -1
- data/Rakefile +4 -0
- data/deps.rip +5 -0
- data/ext/nokogiri/extconf.rb +4 -0
- data/ext/nokogiri/html_element_description.c +1 -1
- data/ext/nokogiri/nokogiri.c +7 -0
- data/ext/nokogiri/nokogiri.h +4 -1
- data/ext/nokogiri/xml_document.c +3 -5
- data/ext/nokogiri/xml_encoding_handler.c +79 -0
- data/ext/nokogiri/xml_encoding_handler.h +8 -0
- data/ext/nokogiri/xml_namespace.c +8 -0
- data/ext/nokogiri/xml_namespace.h +1 -0
- data/ext/nokogiri/xml_node.c +61 -41
- data/ext/nokogiri/xml_node_set.c +22 -14
- data/ext/nokogiri/xml_sax_parser.c +0 -3
- data/ext/nokogiri/xml_sax_parser_context.c +2 -0
- data/ext/nokogiri/xml_sax_push_parser.c +26 -3
- data/ext/nokogiri/xml_syntax_error.c +18 -227
- data/lib/nokogiri/1.8/nokogiri.so +0 -0
- data/lib/nokogiri/1.9/nokogiri.so +0 -0
- data/lib/nokogiri/css/generated_parser.rb +173 -160
- data/lib/nokogiri/css/generated_tokenizer.rb +4 -1
- data/lib/nokogiri/css/parser.y +4 -1
- data/lib/nokogiri/css/tokenizer.rex +2 -1
- data/lib/nokogiri/css/xpath_visitor.rb +2 -0
- data/lib/nokogiri/ffi/encoding_handler.rb +42 -0
- data/lib/nokogiri/ffi/html/element_description.rb +5 -9
- data/lib/nokogiri/ffi/libxml.rb +21 -5
- data/lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb +11 -0
- data/lib/nokogiri/ffi/structs/xml_document.rb +3 -3
- data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +110 -1
- data/lib/nokogiri/ffi/xml/dtd.rb +2 -4
- data/lib/nokogiri/ffi/xml/node.rb +38 -17
- data/lib/nokogiri/ffi/xml/node_set.rb +21 -8
- data/lib/nokogiri/ffi/xml/reader.rb +1 -1
- data/lib/nokogiri/ffi/xml/sax/parser.rb +1 -8
- data/lib/nokogiri/ffi/xml/sax/push_parser.rb +16 -4
- data/lib/nokogiri/ffi/xml/syntax_error.rb +9 -2
- data/lib/nokogiri/ffi/xslt/stylesheet.rb +12 -9
- data/lib/nokogiri/version.rb +1 -1
- data/lib/nokogiri/xml/builder.rb +1 -1
- data/lib/nokogiri/xml/document.rb +35 -4
- data/lib/nokogiri/xml/document_fragment.rb +5 -1
- data/lib/nokogiri/xml/fragment_handler.rb +28 -20
- data/lib/nokogiri/xml/node.rb +84 -13
- data/lib/nokogiri/xml/node_set.rb +19 -2
- data/lib/nokogiri/xml/sax/push_parser.rb +1 -1
- data/lib/nokogiri/xml/syntax_error.rb +10 -5
- data/lib/nokogiri/xslt/stylesheet.rb +1 -1
- data/lib/xsd/xmlparser/nokogiri.rb +20 -1
- data/test/css/test_parser.rb +5 -0
- data/test/css/test_tokenizer.rb +7 -0
- data/test/helper.rb +0 -5
- data/test/html/test_document_fragment.rb +39 -1
- data/test/html/test_node.rb +14 -0
- data/test/test_encoding_handler.rb +46 -0
- data/test/test_memory_leak.rb +10 -0
- data/test/test_nokogiri.rb +5 -1
- data/test/test_soap4r_sax.rb +52 -0
- data/test/test_xslt_transforms.rb +69 -26
- data/test/xml/sax/test_parser_context.rb +7 -0
- data/test/xml/sax/test_push_parser.rb +33 -0
- data/test/xml/test_document.rb +27 -1
- data/test/xml/test_document_fragment.rb +6 -0
- data/test/xml/test_node.rb +63 -214
- data/test/xml/test_node_reparenting.rb +261 -0
- data/test/xml/test_node_set.rb +51 -0
- data/test/xml/test_syntax_error.rb +0 -15
- metadata +13 -4
- data/test/test_gc.rb +0 -15
@@ -0,0 +1,261 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
module Nokogiri
|
4
|
+
module XML
|
5
|
+
class TestNodeReparenting < Nokogiri::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
super
|
9
|
+
@xml = Nokogiri::XML "<root><a1>First node</a1><a2>Second node</a2><a3>Third node</a3></root>"
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_add_child_should_insert_at_end_of_children
|
13
|
+
node = Nokogiri::XML::Node.new('x', @xml)
|
14
|
+
@xml.root.add_child node
|
15
|
+
assert_equal ["a1", "a2", "a3", "x"], @xml.root.children.collect {|n| n.name}
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_add_child_fragment_should_insert_fragment_roots_at_end_of_children
|
19
|
+
fragment = Nokogiri::XML.fragment("<b1>foo</b1><b2>bar</b2>")
|
20
|
+
@xml.root.add_child fragment
|
21
|
+
assert_equal ["a1", "a2", "a3", "b1", "b2"], @xml.root.children.collect {|n| n.name}
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_chevron_works_as_add_child
|
25
|
+
text_node = Nokogiri::XML::Text.new('hello', @xml)
|
26
|
+
assert_equal Nokogiri::XML::Node::TEXT_NODE, text_node.type
|
27
|
+
|
28
|
+
@xml.root << text_node
|
29
|
+
|
30
|
+
assert_equal @xml.root.children.last.content, 'hello'
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_add_child_already_in_the_document_should_move_the_node
|
34
|
+
third_node = @xml.root.children.last
|
35
|
+
first_node = @xml.root.children.first
|
36
|
+
|
37
|
+
@xml.root.add_child(first_node)
|
38
|
+
|
39
|
+
assert_equal 2, @xml.root.children.index(first_node)
|
40
|
+
assert_equal 1, @xml.root.children.index(third_node)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_add_child_from_other_document_should_remove_from_old_document
|
44
|
+
d1 = Nokogiri::XML("<root><item>1</item><item>2</item></root>")
|
45
|
+
d2 = Nokogiri::XML("<root><item>3</item><item>4</item></root>")
|
46
|
+
|
47
|
+
d2.at('root').search('item').each do |item|
|
48
|
+
d1.at('root').add_child item
|
49
|
+
end
|
50
|
+
|
51
|
+
assert_equal 0, d2.search('item').size
|
52
|
+
assert_equal 4, d1.search('item').size
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_add_child_text_node_should_merge_with_adjacent_text_nodes
|
56
|
+
node = @xml.root.children.first
|
57
|
+
old_child = node.children.first
|
58
|
+
new_child = Nokogiri::XML::Text.new('text', @xml)
|
59
|
+
|
60
|
+
node.add_child new_child
|
61
|
+
|
62
|
+
assert_equal "First nodetext", node.children.first.content
|
63
|
+
assert_equal "First nodetext", new_child.content
|
64
|
+
assert_equal "First nodetext", old_child.content
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_add_child_node_following_sequential_text_nodes_should_have_right_path
|
68
|
+
node = @xml.root.children.first
|
69
|
+
node.add_child(Nokogiri::XML::Text.new('text', @xml))
|
70
|
+
|
71
|
+
item = node.add_child(Nokogiri::XML::Element.new('item', @xml))
|
72
|
+
|
73
|
+
assert_equal '/root/a1/item', item.path
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_add_child_node_with_namespace_should_keep_namespace
|
77
|
+
doc = Nokogiri::XML::Document.new
|
78
|
+
item = Nokogiri::XML::Element.new('item', doc)
|
79
|
+
doc.root = item
|
80
|
+
|
81
|
+
entry = Nokogiri::XML::Element.new('entry', doc)
|
82
|
+
entry.add_namespace('tlm', 'http://tenderlovemaking.com')
|
83
|
+
assert_equal 'http://tenderlovemaking.com', entry.namespaces['xmlns:tlm']
|
84
|
+
item.add_child(entry)
|
85
|
+
assert_equal 'http://tenderlovemaking.com', entry.namespaces['xmlns:tlm']
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_add_child_node_should_inherit_namespace
|
89
|
+
doc = Nokogiri::XML(<<-eoxml)
|
90
|
+
<root xmlns="http://tenderlovemaking.com/">
|
91
|
+
<first>
|
92
|
+
</first>
|
93
|
+
</root>
|
94
|
+
eoxml
|
95
|
+
assert node = doc.at('//xmlns:first')
|
96
|
+
child = Nokogiri::XML::Node.new('second', doc)
|
97
|
+
node.add_child(child)
|
98
|
+
assert doc.at('//xmlns:second')
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_add_child_node_should_not_inherit_namespace_if_it_has_one
|
102
|
+
doc = Nokogiri::XML(<<-eoxml)
|
103
|
+
<root xmlns="http://tenderlovemaking.com/" xmlns:foo="http://flavorjon.es/">
|
104
|
+
<first>
|
105
|
+
</first>
|
106
|
+
</root>
|
107
|
+
eoxml
|
108
|
+
assert node = doc.at('//xmlns:first')
|
109
|
+
child = Nokogiri::XML::Node.new('second', doc)
|
110
|
+
|
111
|
+
ns = doc.root.namespace_definitions.detect { |x| x.prefix == "foo" }
|
112
|
+
child.namespace = ns
|
113
|
+
|
114
|
+
node.add_child(child)
|
115
|
+
assert doc.at('//foo:second', "foo" => "http://flavorjon.es/")
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_replace_node_should_remove_previous_node_and_insert_new_node
|
119
|
+
second_node = @xml.root.children[1]
|
120
|
+
|
121
|
+
new_node = Nokogiri::XML::Node.new('foo', @xml)
|
122
|
+
second_node.replace(new_node)
|
123
|
+
|
124
|
+
assert_equal @xml.root.children[1], new_node
|
125
|
+
assert_nil second_node.parent
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_replace_fragment_should_replace_node_with_fragment_roots
|
129
|
+
node = @xml.root.children[1]
|
130
|
+
fragment = Nokogiri::XML.fragment("<b1>foo</b1><b2>bar</b2>")
|
131
|
+
fc1 = fragment.children[0]
|
132
|
+
fc2 = fragment.children[1]
|
133
|
+
|
134
|
+
node.replace fragment
|
135
|
+
|
136
|
+
assert_equal 4, @xml.root.children.length
|
137
|
+
assert_equal fc1, @xml.root.children[1]
|
138
|
+
assert_equal fc2, @xml.root.children[2]
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_replace_with_default_namespaces
|
142
|
+
fruits = Nokogiri::XML(<<-eoxml)
|
143
|
+
<fruit xmlns="http://fruits.org">
|
144
|
+
<apple />
|
145
|
+
</fruit>
|
146
|
+
eoxml
|
147
|
+
|
148
|
+
apple = fruits.css('apple').first
|
149
|
+
|
150
|
+
orange = Nokogiri::XML::Node.new('orange', fruits)
|
151
|
+
apple.replace(orange)
|
152
|
+
|
153
|
+
assert_equal orange, fruits.css('orange').first
|
154
|
+
end
|
155
|
+
|
156
|
+
def test_illegal_replace_of_node_with_doc
|
157
|
+
new_node = Nokogiri::XML.parse('<foo>bar</foo>')
|
158
|
+
old_node = @xml.at_css('a1')
|
159
|
+
assert_raises(ArgumentError){ old_node.replace new_node }
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_replace_with_node_from_different_docs
|
163
|
+
xml1 = "<test> <caption>Original caption</caption> </test>"
|
164
|
+
xml2 = "<test> <caption>Replacement caption</caption> </test>"
|
165
|
+
doc1 = Nokogiri::XML(xml1)
|
166
|
+
doc2 = Nokogiri::XML(xml2)
|
167
|
+
caption1 = doc1.xpath("//caption")[0]
|
168
|
+
caption2 = doc2.xpath("//caption")[0]
|
169
|
+
caption1.replace(caption2) # this segfaulted under 1.4.0 and earlier
|
170
|
+
assert_equal "Replacement caption", doc1.css("caption").inner_text
|
171
|
+
end
|
172
|
+
|
173
|
+
def test_add_next_sibling_should_insert_after
|
174
|
+
node = Nokogiri::XML::Node.new('x', @xml)
|
175
|
+
@xml.root.children[1].add_next_sibling node
|
176
|
+
assert_equal ["a1", "a2", "x", "a3"], @xml.root.children.collect {|n| n.name}
|
177
|
+
end
|
178
|
+
|
179
|
+
def test_next_equals_should_insert_after
|
180
|
+
node = Nokogiri::XML::Node.new('x', @xml)
|
181
|
+
@xml.root.children[1].next = node
|
182
|
+
assert_equal ["a1", "a2", "x", "a3"], @xml.root.children.collect {|n| n.name}
|
183
|
+
end
|
184
|
+
|
185
|
+
def test_add_next_sibling_fragment_should_insert_fragment_roots_after
|
186
|
+
fragment = Nokogiri::XML.fragment("<b1>foo</b1><b2>bar</b2>")
|
187
|
+
@xml.root.children[1].add_next_sibling fragment
|
188
|
+
assert_equal ["a1", "a2", "b1", "b2", "a3"], @xml.root.children.collect {|n| n.name}
|
189
|
+
end
|
190
|
+
|
191
|
+
def test_add_next_sibling_text_node_should_merge_with_adjacent_text_nodes
|
192
|
+
node = @xml.root.children.first
|
193
|
+
text = node.children.first
|
194
|
+
new_text = Nokogiri::XML::Text.new('text', @xml)
|
195
|
+
|
196
|
+
text.add_next_sibling new_text
|
197
|
+
|
198
|
+
assert_equal "First nodetext", node.children.first.content
|
199
|
+
assert_equal "First nodetext", text.content
|
200
|
+
assert_equal "First nodetext", new_text.content
|
201
|
+
end
|
202
|
+
|
203
|
+
def test_add_previous_sibling_should_insert_before
|
204
|
+
node = Nokogiri::XML::Node.new('x', @xml)
|
205
|
+
@xml.root.children[1].add_previous_sibling node
|
206
|
+
assert_equal ["a1", "x", "a2", "a3"], @xml.root.children.collect {|n| n.name}
|
207
|
+
end
|
208
|
+
|
209
|
+
def test_previous_equals_should_insert_before
|
210
|
+
node = Nokogiri::XML::Node.new('x', @xml)
|
211
|
+
@xml.root.children[1].previous = node
|
212
|
+
assert_equal ["a1", "x", "a2", "a3"], @xml.root.children.collect {|n| n.name}
|
213
|
+
end
|
214
|
+
|
215
|
+
def test_add_previous_sibling_fragment_should_insert_fragment_roots_before
|
216
|
+
fragment = Nokogiri::XML.fragment("<b1>foo</b1><b2>bar</b2>")
|
217
|
+
@xml.root.children[1].add_previous_sibling fragment
|
218
|
+
assert_equal ["a1", "b1", "b2", "a2", "a3"], @xml.root.children.collect {|n| n.name}
|
219
|
+
end
|
220
|
+
|
221
|
+
def test_add_previous_sibling_text_node_should_merge_with_adjacent_text_nodes
|
222
|
+
node = @xml.root.children.first
|
223
|
+
text = node.children.first
|
224
|
+
new_text = Nokogiri::XML::Text.new('text', @xml)
|
225
|
+
|
226
|
+
text.add_previous_sibling new_text
|
227
|
+
|
228
|
+
assert_equal "textFirst node", node.children.first.content
|
229
|
+
assert_equal "textFirst node", text.content
|
230
|
+
assert_equal "textFirst node", new_text.content
|
231
|
+
end
|
232
|
+
|
233
|
+
def test_unlink_then_reparent
|
234
|
+
# see http://github.com/tenderlove/nokogiri/issues#issue/22
|
235
|
+
10.times do
|
236
|
+
STDOUT.putc "."
|
237
|
+
STDOUT.flush
|
238
|
+
begin
|
239
|
+
doc = Nokogiri::XML <<-EOHTML
|
240
|
+
<root>
|
241
|
+
<a>
|
242
|
+
<b/>
|
243
|
+
<c/>
|
244
|
+
</a>
|
245
|
+
</root>
|
246
|
+
EOHTML
|
247
|
+
|
248
|
+
root = doc.at("root")
|
249
|
+
a = root.at("a")
|
250
|
+
b = a.at("b")
|
251
|
+
c = a.at("c")
|
252
|
+
a.add_next_sibling(b.unlink)
|
253
|
+
c.unlink
|
254
|
+
end
|
255
|
+
GC.start
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|
data/test/xml/test_node_set.rb
CHANGED
@@ -9,6 +9,11 @@ module Nokogiri
|
|
9
9
|
@list = @xml.css('employee')
|
10
10
|
end
|
11
11
|
|
12
|
+
def test_filter
|
13
|
+
list = @xml.css('address').filter('*[domestic="Yes"]')
|
14
|
+
assert_equal(%w{ Yes } * 4, list.map { |n| n['domestic'] })
|
15
|
+
end
|
16
|
+
|
12
17
|
def test_remove_attr
|
13
18
|
@list.each { |x| x['class'] = 'blah' }
|
14
19
|
assert_equal @list, @list.remove_attr('class')
|
@@ -526,6 +531,52 @@ module Nokogiri
|
|
526
531
|
inspected
|
527
532
|
end
|
528
533
|
|
534
|
+
def test_should_not_splode_when_accessing_namespace_declarations_in_a_node_set
|
535
|
+
xml = Nokogiri::XML "<foo></foo>"
|
536
|
+
node_set = xml.xpath("//namespace::*")
|
537
|
+
assert_equal 1, node_set.size
|
538
|
+
node = node_set.first
|
539
|
+
node.to_s # segfaults in 1.4.0 and earlier
|
540
|
+
|
541
|
+
# if we haven't segfaulted, let's make sure we handled it correctly
|
542
|
+
assert_instance_of Nokogiri::XML::Namespace, node
|
543
|
+
end
|
544
|
+
|
545
|
+
def test_should_not_splode_when_arrayifying_node_set_containing_namespace_declarations
|
546
|
+
xml = Nokogiri::XML "<foo></foo>"
|
547
|
+
node_set = xml.xpath("//namespace::*")
|
548
|
+
assert_equal 1, node_set.size
|
549
|
+
|
550
|
+
node_array = node_set.to_a
|
551
|
+
node = node_array.first
|
552
|
+
node.to_s # segfaults in 1.4.0 and earlier
|
553
|
+
|
554
|
+
# if we haven't segfaulted, let's make sure we handled it correctly
|
555
|
+
assert_instance_of Nokogiri::XML::Namespace, node
|
556
|
+
end
|
557
|
+
|
558
|
+
def test_should_not_splode_when_unlinking_node_set_containing_namespace_declarations
|
559
|
+
xml = Nokogiri::XML "<foo></foo>"
|
560
|
+
node_set = xml.xpath("//namespace::*")
|
561
|
+
assert_equal 1, node_set.size
|
562
|
+
|
563
|
+
node_set.unlink
|
564
|
+
end
|
565
|
+
|
566
|
+
def test_reverse
|
567
|
+
xml = Nokogiri::XML "<root><a />b<c />d<e /></root>"
|
568
|
+
children = xml.root.children
|
569
|
+
assert_instance_of Nokogiri::XML::NodeSet, children
|
570
|
+
|
571
|
+
reversed = children.reverse
|
572
|
+
assert_equal reversed[0], children[4]
|
573
|
+
assert_equal reversed[1], children[3]
|
574
|
+
assert_equal reversed[2], children[2]
|
575
|
+
assert_equal reversed[3], children[1]
|
576
|
+
assert_equal reversed[4], children[0]
|
577
|
+
|
578
|
+
assert_equal children, children.reverse.reverse
|
579
|
+
end
|
529
580
|
end
|
530
581
|
end
|
531
582
|
end
|
@@ -7,21 +7,6 @@ module Nokogiri
|
|
7
7
|
error = Nokogiri::XML::SyntaxError.new 'hello'
|
8
8
|
assert_equal 'hello', error.message
|
9
9
|
end
|
10
|
-
|
11
|
-
def test_exception
|
12
|
-
error = Nokogiri::XML::SyntaxError.new 'hello'
|
13
|
-
dup = error.exception 'world'
|
14
|
-
assert_equal 'hello', dup.message
|
15
|
-
assert_not_equal error.message.object_id, dup.message.object_id
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_initialize_copy
|
19
|
-
error = Nokogiri::XML::SyntaxError.new 'hello'
|
20
|
-
dup = error.dup
|
21
|
-
assert_equal 'hello', dup.message
|
22
|
-
assert_not_equal error.object_id, dup.object_id
|
23
|
-
assert_not_equal error.message.object_id, dup.message.object_id
|
24
|
-
end
|
25
10
|
end
|
26
11
|
end
|
27
12
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nokogiri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: x86-mswin32
|
6
6
|
authors:
|
7
7
|
- Aaron Patterson
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-10
|
13
|
+
date: 2009-12-10 00:00:00 -08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -79,6 +79,7 @@ files:
|
|
79
79
|
- README.rdoc
|
80
80
|
- Rakefile
|
81
81
|
- bin/nokogiri
|
82
|
+
- deps.rip
|
82
83
|
- ext/nokogiri/extconf.rb
|
83
84
|
- ext/nokogiri/html_document.c
|
84
85
|
- ext/nokogiri/html_document.h
|
@@ -108,6 +109,8 @@ files:
|
|
108
109
|
- ext/nokogiri/xml_element_content.h
|
109
110
|
- ext/nokogiri/xml_element_decl.c
|
110
111
|
- ext/nokogiri/xml_element_decl.h
|
112
|
+
- ext/nokogiri/xml_encoding_handler.c
|
113
|
+
- ext/nokogiri/xml_encoding_handler.h
|
111
114
|
- ext/nokogiri/xml_entity_decl.c
|
112
115
|
- ext/nokogiri/xml_entity_decl.h
|
113
116
|
- ext/nokogiri/xml_entity_reference.c
|
@@ -156,6 +159,7 @@ files:
|
|
156
159
|
- lib/nokogiri/css/tokenizer.rex
|
157
160
|
- lib/nokogiri/css/xpath_visitor.rb
|
158
161
|
- lib/nokogiri/decorators/slop.rb
|
162
|
+
- lib/nokogiri/ffi/encoding_handler.rb
|
159
163
|
- lib/nokogiri/ffi/html/document.rb
|
160
164
|
- lib/nokogiri/ffi/html/element_description.rb
|
161
165
|
- lib/nokogiri/ffi/html/entity_lookup.rb
|
@@ -169,6 +173,7 @@ files:
|
|
169
173
|
- lib/nokogiri/ffi/structs/xml_attr.rb
|
170
174
|
- lib/nokogiri/ffi/structs/xml_attribute.rb
|
171
175
|
- lib/nokogiri/ffi/structs/xml_buffer.rb
|
176
|
+
- lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb
|
172
177
|
- lib/nokogiri/ffi/structs/xml_document.rb
|
173
178
|
- lib/nokogiri/ffi/structs/xml_dtd.rb
|
174
179
|
- lib/nokogiri/ffi/structs/xml_element.rb
|
@@ -302,10 +307,11 @@ files:
|
|
302
307
|
- test/html/test_node_encoding.rb
|
303
308
|
- test/test_convert_xpath.rb
|
304
309
|
- test/test_css_cache.rb
|
305
|
-
- test/
|
310
|
+
- test/test_encoding_handler.rb
|
306
311
|
- test/test_memory_leak.rb
|
307
312
|
- test/test_nokogiri.rb
|
308
313
|
- test/test_reader.rb
|
314
|
+
- test/test_soap4r_sax.rb
|
309
315
|
- test/test_xslt_transforms.rb
|
310
316
|
- test/xml/node/test_save_options.rb
|
311
317
|
- test/xml/node/test_subclass.rb
|
@@ -330,6 +336,7 @@ files:
|
|
330
336
|
- test/xml/test_node.rb
|
331
337
|
- test/xml/test_node_attributes.rb
|
332
338
|
- test/xml/test_node_encoding.rb
|
339
|
+
- test/xml/test_node_reparenting.rb
|
333
340
|
- test/xml/test_node_set.rb
|
334
341
|
- test/xml/test_parse_options.rb
|
335
342
|
- test/xml/test_processing_instruction.rb
|
@@ -401,6 +408,7 @@ test_files:
|
|
401
408
|
- test/xml/test_entity_decl.rb
|
402
409
|
- test/xml/test_schema.rb
|
403
410
|
- test/xml/test_builder.rb
|
411
|
+
- test/xml/test_node_reparenting.rb
|
404
412
|
- test/xml/test_attr.rb
|
405
413
|
- test/xml/test_processing_instruction.rb
|
406
414
|
- test/xml/test_text.rb
|
@@ -426,11 +434,12 @@ test_files:
|
|
426
434
|
- test/xml/test_entity_reference.rb
|
427
435
|
- test/xml/test_parse_options.rb
|
428
436
|
- test/test_xslt_transforms.rb
|
437
|
+
- test/test_encoding_handler.rb
|
429
438
|
- test/test_reader.rb
|
439
|
+
- test/test_soap4r_sax.rb
|
430
440
|
- test/ffi/test_document.rb
|
431
441
|
- test/css/test_xpath_visitor.rb
|
432
442
|
- test/css/test_nthiness.rb
|
433
443
|
- test/css/test_parser.rb
|
434
444
|
- test/css/test_tokenizer.rb
|
435
445
|
- test/test_css_cache.rb
|
436
|
-
- test/test_gc.rb
|
data/test/test_gc.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class TestGc < Nokogiri::TestCase
|
4
|
-
|
5
|
-
def test_dont_hurt_em_why
|
6
|
-
content = File.open("#{File.dirname(__FILE__)}/files/dont_hurt_em_why.xml").read
|
7
|
-
ndoc = Nokogiri::XML(content)
|
8
|
-
2.times do
|
9
|
-
info = ndoc.search('status text').first.inner_text
|
10
|
-
url = ndoc.search('user name').first.inner_text
|
11
|
-
GC.start
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|