nokogiri 1.4.0 → 1.4.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 (75) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.autotest +5 -6
  3. data/CHANGELOG.ja.rdoc +47 -11
  4. data/CHANGELOG.rdoc +31 -0
  5. data/Manifest.txt +8 -1
  6. data/README.ja.rdoc +4 -3
  7. data/README.rdoc +9 -1
  8. data/Rakefile +4 -0
  9. data/deps.rip +5 -0
  10. data/ext/nokogiri/extconf.rb +4 -0
  11. data/ext/nokogiri/html_element_description.c +1 -1
  12. data/ext/nokogiri/nokogiri.c +7 -0
  13. data/ext/nokogiri/nokogiri.h +4 -1
  14. data/ext/nokogiri/xml_document.c +3 -5
  15. data/ext/nokogiri/xml_encoding_handler.c +79 -0
  16. data/ext/nokogiri/xml_encoding_handler.h +8 -0
  17. data/ext/nokogiri/xml_namespace.c +8 -0
  18. data/ext/nokogiri/xml_namespace.h +1 -0
  19. data/ext/nokogiri/xml_node.c +61 -41
  20. data/ext/nokogiri/xml_node_set.c +22 -14
  21. data/ext/nokogiri/xml_sax_parser.c +0 -3
  22. data/ext/nokogiri/xml_sax_parser_context.c +2 -0
  23. data/ext/nokogiri/xml_sax_push_parser.c +26 -3
  24. data/ext/nokogiri/xml_syntax_error.c +18 -227
  25. data/lib/nokogiri/css/generated_parser.rb +173 -160
  26. data/lib/nokogiri/css/generated_tokenizer.rb +4 -1
  27. data/lib/nokogiri/css/parser.y +4 -1
  28. data/lib/nokogiri/css/tokenizer.rex +2 -1
  29. data/lib/nokogiri/css/xpath_visitor.rb +2 -0
  30. data/lib/nokogiri/ffi/encoding_handler.rb +42 -0
  31. data/lib/nokogiri/ffi/html/element_description.rb +5 -9
  32. data/lib/nokogiri/ffi/libxml.rb +21 -5
  33. data/lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb +11 -0
  34. data/lib/nokogiri/ffi/structs/xml_document.rb +3 -3
  35. data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +110 -1
  36. data/lib/nokogiri/ffi/xml/dtd.rb +2 -4
  37. data/lib/nokogiri/ffi/xml/node.rb +38 -17
  38. data/lib/nokogiri/ffi/xml/node_set.rb +21 -8
  39. data/lib/nokogiri/ffi/xml/reader.rb +1 -1
  40. data/lib/nokogiri/ffi/xml/sax/parser.rb +1 -8
  41. data/lib/nokogiri/ffi/xml/sax/push_parser.rb +16 -4
  42. data/lib/nokogiri/ffi/xml/syntax_error.rb +9 -2
  43. data/lib/nokogiri/ffi/xslt/stylesheet.rb +12 -9
  44. data/lib/nokogiri/version.rb +1 -1
  45. data/lib/nokogiri/xml/builder.rb +1 -1
  46. data/lib/nokogiri/xml/document.rb +35 -4
  47. data/lib/nokogiri/xml/document_fragment.rb +5 -1
  48. data/lib/nokogiri/xml/fragment_handler.rb +28 -20
  49. data/lib/nokogiri/xml/node.rb +84 -13
  50. data/lib/nokogiri/xml/node_set.rb +19 -2
  51. data/lib/nokogiri/xml/sax/push_parser.rb +1 -1
  52. data/lib/nokogiri/xml/syntax_error.rb +10 -5
  53. data/lib/nokogiri/xslt/stylesheet.rb +1 -1
  54. data/lib/xsd/xmlparser/nokogiri.rb +20 -1
  55. data/test/css/test_parser.rb +5 -0
  56. data/test/css/test_tokenizer.rb +7 -0
  57. data/test/helper.rb +0 -5
  58. data/test/html/test_document_fragment.rb +39 -1
  59. data/test/html/test_node.rb +14 -0
  60. data/test/test_encoding_handler.rb +46 -0
  61. data/test/test_memory_leak.rb +10 -0
  62. data/test/test_nokogiri.rb +5 -1
  63. data/test/test_soap4r_sax.rb +52 -0
  64. data/test/test_xslt_transforms.rb +69 -26
  65. data/test/xml/sax/test_parser_context.rb +7 -0
  66. data/test/xml/sax/test_push_parser.rb +33 -0
  67. data/test/xml/test_document.rb +27 -1
  68. data/test/xml/test_document_fragment.rb +6 -0
  69. data/test/xml/test_node.rb +63 -214
  70. data/test/xml/test_node_reparenting.rb +261 -0
  71. data/test/xml/test_node_set.rb +51 -0
  72. data/test/xml/test_syntax_error.rb +0 -15
  73. metadata +35 -5
  74. metadata.gz.sig +0 -0
  75. 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
@@ -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,16 +1,37 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nokogiri
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Patterson
8
8
  - Mike Dalessio
9
9
  autorequire:
10
10
  bindir: bin
11
- cert_chain: []
11
+ cert_chain:
12
+ - |
13
+ -----BEGIN CERTIFICATE-----
14
+ MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMQ8wDQYDVQQDDAZhYXJv
15
+ bnAxGTAXBgoJkiaJk/IsZAEZFglydWJ5Zm9yZ2UxEzARBgoJkiaJk/IsZAEZFgNv
16
+ cmcwHhcNMDkxMTA1MDAwNDQ4WhcNMTAxMTA1MDAwNDQ4WjBBMQ8wDQYDVQQDDAZh
17
+ YXJvbnAxGTAXBgoJkiaJk/IsZAEZFglydWJ5Zm9yZ2UxEzARBgoJkiaJk/IsZAEZ
18
+ FgNvcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDNSD14Gb2mCX/5
19
+ fE85uW/jT7fcYI8XolrzdpzfvxD3y+Pt/yA5eciBiE+hNAWU2PM1ZMOq4MOV9EqR
20
+ hYzupp/zFoC7ZZ3PF8nJBFKgfKNf0sp9o3XCUviaZjoSYNIvGQocrakQo+h3x3Od
21
+ NqZWtVsLz9P/G1foUBpc95gGGBodbj/CZVc32F+xVvmejqe3RaMLGI70ZOuTcsRi
22
+ t8V4T7okmUbLi6VmPYlH/9mKvU7ObRHXMYNhkkife5phh8vjsiCd8Q397+jFaL0f
23
+ Cd23idNV7lbvdjIuYLV+9u5cPkDjANLAnGRaRS1x2SEfH/8g0Te6/jeKfzBH83D0
24
+ 5v5HTx+HAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
25
+ BBTs3LnPhoi2m7BTf9tHvNQYsOG7aTANBgkqhkiG9w0BAQUFAAOCAQEAVH7G+nSf
26
+ WMPz7Iwcnd+WrWWq/mr5ke0qQoiz4tk0h7bsa3fEnUDBiMfmQhv/uBzA4Gkw9zxB
27
+ IfKljsZq0yE+du/1u2Mph7dMIg2oiwMurpduPpx9sfaqsqSBBOzggxiUEmHDNrPT
28
+ uTzaid0gdOx/TacZ4RwrEnx6XNkhxC2YaTH2Y68hoJzSzRGtdU2Kk6mT4YraCP+u
29
+ ETP5hCJAiB5l4jC8U6wwvKQDHTMoaUu3eu/txe1PDjoe3GICzs/e6bzYBWYmKu7J
30
+ 5YM3l5J4rDvIPAGH4VRr5nSs+qbZh+kCdE1khvTxH51xkR3qAfEEogAd2VlnjELM
31
+ f9Gw8x3RwgLvkA==
32
+ -----END CERTIFICATE-----
12
33
 
13
- date: 2009-10-30 00:00:00 -07:00
34
+ date: 2009-12-10 00:00:00 -08:00
14
35
  default_executable:
15
36
  dependencies:
16
37
  - !ruby/object:Gem::Dependency
@@ -79,6 +100,7 @@ files:
79
100
  - README.rdoc
80
101
  - Rakefile
81
102
  - bin/nokogiri
103
+ - deps.rip
82
104
  - ext/nokogiri/extconf.rb
83
105
  - ext/nokogiri/html_document.c
84
106
  - ext/nokogiri/html_document.h
@@ -108,6 +130,8 @@ files:
108
130
  - ext/nokogiri/xml_element_content.h
109
131
  - ext/nokogiri/xml_element_decl.c
110
132
  - ext/nokogiri/xml_element_decl.h
133
+ - ext/nokogiri/xml_encoding_handler.c
134
+ - ext/nokogiri/xml_encoding_handler.h
111
135
  - ext/nokogiri/xml_entity_decl.c
112
136
  - ext/nokogiri/xml_entity_decl.h
113
137
  - ext/nokogiri/xml_entity_reference.c
@@ -156,6 +180,7 @@ files:
156
180
  - lib/nokogiri/css/tokenizer.rex
157
181
  - lib/nokogiri/css/xpath_visitor.rb
158
182
  - lib/nokogiri/decorators/slop.rb
183
+ - lib/nokogiri/ffi/encoding_handler.rb
159
184
  - lib/nokogiri/ffi/html/document.rb
160
185
  - lib/nokogiri/ffi/html/element_description.rb
161
186
  - lib/nokogiri/ffi/html/entity_lookup.rb
@@ -169,6 +194,7 @@ files:
169
194
  - lib/nokogiri/ffi/structs/xml_attr.rb
170
195
  - lib/nokogiri/ffi/structs/xml_attribute.rb
171
196
  - lib/nokogiri/ffi/structs/xml_buffer.rb
197
+ - lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb
172
198
  - lib/nokogiri/ffi/structs/xml_document.rb
173
199
  - lib/nokogiri/ffi/structs/xml_dtd.rb
174
200
  - lib/nokogiri/ffi/structs/xml_element.rb
@@ -302,10 +328,11 @@ files:
302
328
  - test/html/test_node_encoding.rb
303
329
  - test/test_convert_xpath.rb
304
330
  - test/test_css_cache.rb
305
- - test/test_gc.rb
331
+ - test/test_encoding_handler.rb
306
332
  - test/test_memory_leak.rb
307
333
  - test/test_nokogiri.rb
308
334
  - test/test_reader.rb
335
+ - test/test_soap4r_sax.rb
309
336
  - test/test_xslt_transforms.rb
310
337
  - test/xml/node/test_save_options.rb
311
338
  - test/xml/node/test_subclass.rb
@@ -330,6 +357,7 @@ files:
330
357
  - test/xml/test_node.rb
331
358
  - test/xml/test_node_attributes.rb
332
359
  - test/xml/test_node_encoding.rb
360
+ - test/xml/test_node_reparenting.rb
333
361
  - test/xml/test_node_set.rb
334
362
  - test/xml/test_parse_options.rb
335
363
  - test/xml/test_processing_instruction.rb
@@ -388,10 +416,11 @@ test_files:
388
416
  - test/html/test_node_encoding.rb
389
417
  - test/test_convert_xpath.rb
390
418
  - test/test_css_cache.rb
391
- - test/test_gc.rb
419
+ - test/test_encoding_handler.rb
392
420
  - test/test_memory_leak.rb
393
421
  - test/test_nokogiri.rb
394
422
  - test/test_reader.rb
423
+ - test/test_soap4r_sax.rb
395
424
  - test/test_xslt_transforms.rb
396
425
  - test/xml/node/test_save_options.rb
397
426
  - test/xml/node/test_subclass.rb
@@ -416,6 +445,7 @@ test_files:
416
445
  - test/xml/test_node.rb
417
446
  - test/xml/test_node_attributes.rb
418
447
  - test/xml/test_node_encoding.rb
448
+ - test/xml/test_node_reparenting.rb
419
449
  - test/xml/test_node_set.rb
420
450
  - test/xml/test_parse_options.rb
421
451
  - test/xml/test_processing_instruction.rb