libxml-ruby 2.8.0 → 3.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. checksums.yaml +5 -5
  2. data/HISTORY +842 -775
  3. data/LICENSE +20 -20
  4. data/MANIFEST +166 -166
  5. data/README.rdoc +217 -184
  6. data/Rakefile +90 -78
  7. data/ext/libxml/extconf.h +3 -0
  8. data/ext/libxml/extconf.rb +61 -116
  9. data/ext/libxml/libxml.c +80 -76
  10. data/ext/libxml/ruby_libxml.h +67 -75
  11. data/ext/libxml/ruby_xml.c +933 -893
  12. data/ext/libxml/ruby_xml.h +10 -10
  13. data/ext/libxml/ruby_xml_attr.c +333 -333
  14. data/ext/libxml/ruby_xml_attr.h +12 -12
  15. data/ext/libxml/ruby_xml_attr_decl.c +153 -153
  16. data/ext/libxml/ruby_xml_attr_decl.h +11 -11
  17. data/ext/libxml/ruby_xml_attributes.c +275 -275
  18. data/ext/libxml/ruby_xml_attributes.h +15 -15
  19. data/ext/libxml/ruby_xml_cbg.c +85 -85
  20. data/ext/libxml/ruby_xml_document.c +1123 -1147
  21. data/ext/libxml/ruby_xml_document.h +11 -11
  22. data/ext/libxml/ruby_xml_dtd.c +248 -268
  23. data/ext/libxml/ruby_xml_dtd.h +9 -9
  24. data/ext/libxml/ruby_xml_encoding.c +250 -260
  25. data/ext/libxml/ruby_xml_encoding.h +16 -19
  26. data/ext/libxml/ruby_xml_error.c +996 -996
  27. data/ext/libxml/ruby_xml_error.h +12 -12
  28. data/ext/libxml/ruby_xml_html_parser.c +89 -92
  29. data/ext/libxml/ruby_xml_html_parser.h +10 -10
  30. data/ext/libxml/ruby_xml_html_parser_context.c +337 -338
  31. data/ext/libxml/ruby_xml_html_parser_context.h +10 -10
  32. data/ext/libxml/ruby_xml_html_parser_options.c +46 -46
  33. data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
  34. data/ext/libxml/ruby_xml_input_cbg.c +191 -191
  35. data/ext/libxml/ruby_xml_input_cbg.h +20 -20
  36. data/ext/libxml/ruby_xml_io.c +47 -50
  37. data/ext/libxml/ruby_xml_io.h +10 -10
  38. data/ext/libxml/ruby_xml_namespace.c +153 -153
  39. data/ext/libxml/ruby_xml_namespace.h +10 -10
  40. data/ext/libxml/ruby_xml_namespaces.c +293 -293
  41. data/ext/libxml/ruby_xml_namespaces.h +9 -9
  42. data/ext/libxml/ruby_xml_node.c +1402 -1452
  43. data/ext/libxml/ruby_xml_node.h +13 -11
  44. data/ext/libxml/ruby_xml_parser.c +91 -94
  45. data/ext/libxml/ruby_xml_parser.h +12 -12
  46. data/ext/libxml/ruby_xml_parser_context.c +999 -1001
  47. data/ext/libxml/ruby_xml_parser_context.h +10 -10
  48. data/ext/libxml/ruby_xml_parser_options.c +66 -66
  49. data/ext/libxml/ruby_xml_parser_options.h +12 -12
  50. data/ext/libxml/ruby_xml_reader.c +1239 -1228
  51. data/ext/libxml/ruby_xml_reader.h +17 -17
  52. data/ext/libxml/ruby_xml_relaxng.c +110 -111
  53. data/ext/libxml/ruby_xml_relaxng.h +10 -10
  54. data/ext/libxml/ruby_xml_sax2_handler.c +326 -328
  55. data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
  56. data/ext/libxml/ruby_xml_sax_parser.c +116 -120
  57. data/ext/libxml/ruby_xml_sax_parser.h +10 -10
  58. data/ext/libxml/ruby_xml_schema.c +278 -301
  59. data/ext/libxml/ruby_xml_schema.h +809 -809
  60. data/ext/libxml/ruby_xml_schema_attribute.c +109 -109
  61. data/ext/libxml/ruby_xml_schema_attribute.h +15 -15
  62. data/ext/libxml/ruby_xml_schema_element.c +95 -94
  63. data/ext/libxml/ruby_xml_schema_element.h +14 -14
  64. data/ext/libxml/ruby_xml_schema_facet.c +52 -52
  65. data/ext/libxml/ruby_xml_schema_facet.h +13 -13
  66. data/ext/libxml/ruby_xml_schema_type.c +232 -259
  67. data/ext/libxml/ruby_xml_schema_type.h +9 -9
  68. data/ext/libxml/ruby_xml_version.h +9 -9
  69. data/ext/libxml/ruby_xml_writer.c +1133 -1137
  70. data/ext/libxml/ruby_xml_writer.h +10 -10
  71. data/ext/libxml/ruby_xml_xinclude.c +16 -16
  72. data/ext/libxml/ruby_xml_xinclude.h +11 -11
  73. data/ext/libxml/ruby_xml_xpath.c +194 -188
  74. data/ext/libxml/ruby_xml_xpath.h +13 -13
  75. data/ext/libxml/ruby_xml_xpath_context.c +360 -361
  76. data/ext/libxml/ruby_xml_xpath_context.h +9 -9
  77. data/ext/libxml/ruby_xml_xpath_expression.c +81 -81
  78. data/ext/libxml/ruby_xml_xpath_expression.h +10 -10
  79. data/ext/libxml/ruby_xml_xpath_object.c +338 -335
  80. data/ext/libxml/ruby_xml_xpath_object.h +17 -17
  81. data/ext/libxml/ruby_xml_xpointer.c +99 -99
  82. data/ext/libxml/ruby_xml_xpointer.h +11 -11
  83. data/ext/vc/libxml_ruby.sln +17 -15
  84. data/lib/libxml-ruby.rb +30 -0
  85. data/lib/libxml.rb +3 -33
  86. data/lib/libxml/node.rb +2 -78
  87. data/lib/libxml/parser.rb +0 -266
  88. data/lib/libxml/sax_parser.rb +0 -17
  89. data/lib/libxml/schema.rb +47 -66
  90. data/lib/libxml/schema/attribute.rb +19 -19
  91. data/lib/libxml/schema/element.rb +19 -27
  92. data/lib/libxml/schema/type.rb +21 -29
  93. data/libxml-ruby.gemspec +48 -44
  94. data/script/benchmark/depixelate +634 -634
  95. data/script/benchmark/hamlet.xml +9054 -9054
  96. data/script/benchmark/parsecount +170 -170
  97. data/script/benchmark/throughput +41 -41
  98. data/script/test +6 -6
  99. data/setup.rb +0 -1
  100. data/test/c14n/given/example-1.xml +14 -14
  101. data/test/c14n/given/example-2.xml +11 -11
  102. data/test/c14n/given/example-3.xml +18 -18
  103. data/test/c14n/given/example-4.xml +9 -9
  104. data/test/c14n/given/example-5.xml +12 -12
  105. data/test/c14n/given/example-6.xml +2 -2
  106. data/test/c14n/given/example-7.xml +11 -11
  107. data/test/c14n/given/example-8.xml +11 -11
  108. data/test/c14n/given/example-8.xpath +9 -9
  109. data/test/c14n/result/1-1-without-comments/example-1 +3 -3
  110. data/test/c14n/result/1-1-without-comments/example-2 +10 -10
  111. data/test/c14n/result/1-1-without-comments/example-3 +13 -13
  112. data/test/c14n/result/1-1-without-comments/example-4 +8 -8
  113. data/test/c14n/result/1-1-without-comments/example-5 +2 -2
  114. data/test/c14n/result/with-comments/example-1 +5 -5
  115. data/test/c14n/result/with-comments/example-2 +10 -10
  116. data/test/c14n/result/with-comments/example-3 +13 -13
  117. data/test/c14n/result/with-comments/example-4 +8 -8
  118. data/test/c14n/result/with-comments/example-5 +3 -3
  119. data/test/c14n/result/without-comments/example-1 +3 -3
  120. data/test/c14n/result/without-comments/example-2 +10 -10
  121. data/test/c14n/result/without-comments/example-3 +13 -13
  122. data/test/c14n/result/without-comments/example-4 +8 -8
  123. data/test/c14n/result/without-comments/example-5 +2 -2
  124. data/test/model/atom.xml +12 -12
  125. data/test/model/bands.iso-8859-1.xml +4 -4
  126. data/test/model/bands.utf-8.xml +4 -4
  127. data/test/model/bands.xml +4 -4
  128. data/test/model/books.xml +153 -153
  129. data/test/model/cwm_1_0.xml +11336 -0
  130. data/test/model/merge_bug_data.xml +58 -58
  131. data/test/model/ruby-lang.html +238 -238
  132. data/test/model/rubynet.xml +79 -79
  133. data/test/model/shiporder.rnc +28 -28
  134. data/test/model/shiporder.rng +86 -86
  135. data/test/model/shiporder.xml +22 -22
  136. data/test/model/shiporder.xsd +39 -39
  137. data/test/model/soap.xml +27 -27
  138. data/test/model/xinclude.xml +4 -4
  139. data/test/test.xml +2 -0
  140. data/test/{tc_attr.rb → test_attr.rb} +23 -25
  141. data/test/{tc_attr_decl.rb → test_attr_decl.rb} +13 -14
  142. data/test/{tc_attributes.rb → test_attributes.rb} +11 -18
  143. data/test/{tc_canonicalize.rb → test_canonicalize.rb} +36 -41
  144. data/test/test_deprecated_require.rb +12 -0
  145. data/test/{tc_document.rb → test_document.rb} +32 -27
  146. data/test/test_document_write.rb +146 -0
  147. data/test/{tc_dtd.rb → test_dtd.rb} +28 -29
  148. data/test/{tc_encoding.rb → test_encoding.rb} +129 -126
  149. data/test/{tc_encoding_sax.rb → test_encoding_sax.rb} +7 -6
  150. data/test/test_error.rb +178 -0
  151. data/test/test_helper.rb +3 -10
  152. data/test/test_html_parser.rb +162 -0
  153. data/test/test_html_parser_context.rb +23 -0
  154. data/test/test_namespace.rb +60 -0
  155. data/test/{tc_namespaces.rb → test_namespaces.rb} +34 -44
  156. data/test/{tc_node.rb → test_node.rb} +68 -47
  157. data/test/{tc_node_cdata.rb → test_node_cdata.rb} +12 -13
  158. data/test/{tc_node_comment.rb → test_node_comment.rb} +7 -8
  159. data/test/{tc_node_copy.rb → test_node_copy.rb} +4 -6
  160. data/test/{tc_node_edit.rb → test_node_edit.rb} +23 -41
  161. data/test/{tc_node_pi.rb → test_node_pi.rb} +37 -40
  162. data/test/{tc_node_text.rb → test_node_text.rb} +10 -12
  163. data/test/{tc_node_write.rb → test_node_write.rb} +18 -29
  164. data/test/test_node_xlink.rb +28 -0
  165. data/test/test_parser.rb +324 -0
  166. data/test/{tc_parser_context.rb → test_parser_context.rb} +41 -42
  167. data/test/{tc_properties.rb → test_properties.rb} +6 -7
  168. data/test/test_reader.rb +363 -0
  169. data/test/test_relaxng.rb +53 -0
  170. data/test/{tc_sax_parser.rb → test_sax_parser.rb} +36 -37
  171. data/test/{tc_schema.rb → test_schema.rb} +43 -37
  172. data/test/test_suite.rb +38 -40
  173. data/test/{tc_traversal.rb → test_traversal.rb} +5 -6
  174. data/test/{tc_writer.rb → test_writer.rb} +468 -448
  175. data/test/{tc_xinclude.rb → test_xinclude.rb} +4 -5
  176. data/test/test_xml.rb +262 -0
  177. data/test/{tc_xpath.rb → test_xpath.rb} +31 -32
  178. data/test/{tc_xpath_context.rb → test_xpath_context.rb} +8 -9
  179. data/test/test_xpath_expression.rb +37 -0
  180. data/test/{tc_xpointer.rb → test_xpointer.rb} +16 -18
  181. metadata +117 -95
  182. data/lib/libxml/ns.rb +0 -22
  183. data/lib/libxml/properties.rb +0 -23
  184. data/lib/libxml/reader.rb +0 -29
  185. data/lib/libxml/xpath_object.rb +0 -16
  186. data/test/etc_doc_to_s.rb +0 -21
  187. data/test/ets_doc_file.rb +0 -17
  188. data/test/ets_doc_to_s.rb +0 -23
  189. data/test/ets_gpx.rb +0 -28
  190. data/test/ets_node_gc.rb +0 -23
  191. data/test/ets_test.xml +0 -2
  192. data/test/ets_tsr.rb +0 -11
  193. data/test/tc_deprecated_require.rb +0 -13
  194. data/test/tc_document_write.rb +0 -196
  195. data/test/tc_error.rb +0 -180
  196. data/test/tc_html_parser.rb +0 -153
  197. data/test/tc_html_parser_context.rb +0 -24
  198. data/test/tc_namespace.rb +0 -62
  199. data/test/tc_node_xlink.rb +0 -29
  200. data/test/tc_parser.rb +0 -381
  201. data/test/tc_reader.rb +0 -400
  202. data/test/tc_relaxng.rb +0 -54
  203. data/test/tc_xml.rb +0 -226
  204. data/test/tc_xpath_expression.rb +0 -38
@@ -1,23 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- module LibXML
4
- module XML
5
- class Node
6
- def property(name)
7
- warn('Node#properties is deprecated. Use Node#[] instead.')
8
- self[name]
9
- end
10
-
11
- def properties
12
- warn('Node#properties is deprecated. Use Node#attributes instead.')
13
- self.attributes
14
- end
15
-
16
- def properties?
17
- warn('Node#properties? is deprecated. Use Node#attributes? instead.')
18
- self.attributes?
19
- end
20
- end
21
-
22
- end
23
- end
@@ -1,29 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- module LibXML
4
- module XML
5
- class Reader
6
- def reset_error_handler
7
- warn('reset_error_handler is deprecated. Use Error.reset_handler instead')
8
- Error.reset_handler
9
- end
10
-
11
- def set_error_handler(&block)
12
- warn('set_error_handler is deprecated. Use Error.set_handler instead')
13
- Error.set_handler(&block)
14
- end
15
-
16
- # :enddoc:
17
-
18
- def self.walker(doc)
19
- warn("XML::Reader.walker is deprecated. Use XML::Reader.document instead")
20
- self.document(doc)
21
- end
22
-
23
- def self.data(string, options = nil)
24
- warn("XML::Reader.data is deprecated. Use XML::Reader.string instead")
25
- self.string(string, options)
26
- end
27
- end
28
- end
29
- end
@@ -1,16 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- module LibXML
4
- module XML
5
- module XPath
6
- class Object
7
- alias :size :length
8
-
9
- def set
10
- warn("XPath::Object#set is deprecated. Simply use the XPath::Object API instead")
11
- self
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,21 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require './test_helper'
4
-
5
- 1.times do |count|
6
-
7
- xml_doc = XML::Document.new()
8
- xml_doc.encoding = "UTF-8"
9
- xml_doc.root = XML::Node.new("Request")
10
-
11
- 1000.times do |index|
12
- xml_doc.root << node = XML::Node.new("row")
13
- node["user_id"] = index.to_s
14
- node << "600445"
15
- end
16
-
17
- xml_str = xml_doc.to_s
18
- print "\r#{count}"
19
- $stdout.flush
20
- end
21
- puts "\n"
@@ -1,17 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require './test_helper'
4
-
5
- # This is related to bug 8337, complaint is on amd64/fbsd
6
- # unknown if it happens on other amd64/os combos
7
-
8
- Process.setrlimit(Process::RLIMIT_NOFILE,10005)
9
-
10
- (1..10000).each{|time|
11
- XML::Document.file(File.join(File.dirname(__FILE__),'ets_test.xml'))
12
- if time % 100 == 0
13
- print "\r#{time}"
14
- $stdout.flush
15
- end
16
- }
17
- puts "\n"
@@ -1,23 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require './test_helper'
4
-
5
- 100.times do |count|
6
-
7
- xml_doc = XML::Document.new()
8
- xml_doc.encoding = "UTF-8"
9
- xml_doc.root = XML::Node.new("Request")
10
-
11
- 1000.times do |index|
12
-
13
- xml_doc.root << node = XML::Node.new("row")
14
- node["user_id"] = index.to_s
15
- node << "600445"
16
-
17
- end
18
-
19
- xml_str = xml_doc.to_s
20
- print "\r#{count}"
21
- $stdout.flush
22
- end
23
- puts "\n"
@@ -1,28 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'libxml'
4
-
5
- 100.times do
6
- doc = XML::Document.new
7
- doc.encoding = 'UTF-8'
8
-
9
- root = XML::Node.new 'gpx'
10
- root['version'] = '1.0'
11
- root['creator'] = 'OpenStreetMap.org'
12
- root['xmlns'] = "http://www.topografix.com/GPX/1/0/"
13
-
14
- doc.root = root
15
-
16
- track = XML::Node.new 'trk'
17
- doc.root << track
18
-
19
- trkseg = XML::Node.new 'trkseg'
20
- track << trkseg
21
-
22
- 1.upto(1000) do |n|
23
- trkpt = XML::Node.new 'trkpt'
24
- trkpt['lat'] = n.to_s
25
- trkpt['lon'] = n.to_s
26
- trkseg << trkpt
27
- end
28
- end
@@ -1,23 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require './test_helper'
4
-
5
- # test of bug 13310, clears MEM2
6
-
7
- include GC
8
-
9
- inner = XML::Node.new('inner')
10
- save = nil
11
- 1.times do
12
- outer = XML::Node.new('outer')
13
- outer.child = inner
14
- 1.times do
15
- doc = XML::Document.new
16
- doc.root = outer
17
- # Uncomment the following line and it won't crash
18
- save = doc
19
- end
20
- garbage_collect
21
- end
22
- garbage_collect
23
- puts inner
@@ -1,2 +0,0 @@
1
- <?xml version="1.0"?>
2
- <test/>
@@ -1,11 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require './test_helper'
4
-
5
- 10_000.times {|n|
6
- j=XML::Node.new2(nil,"happy#{n}")
7
- 10.times {|r|
8
- j1=XML::Node.new("happy#{r}","farts")
9
- j.child=j1
10
- }
11
- }
@@ -1,13 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'xml/libxml'
4
- require 'test/unit'
5
-
6
- class TestDeprecatedRequire < Test::Unit::TestCase
7
- def test_basic
8
- xp = XML::Parser.string('<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>')
9
- assert_instance_of(XML::Parser, xp)
10
- @doc = xp.parse
11
- assert_instance_of(XML::Document, @doc)
12
- end
13
- end
@@ -1,196 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require './test_helper'
4
- require 'tmpdir'
5
- require 'test/unit'
6
-
7
- class TestDocumentWrite < Test::Unit::TestCase
8
- def setup
9
- @file_name = "model/bands.utf-8.xml"
10
-
11
- # Strip spaces to make testing easier
12
- XML.default_keep_blanks = false
13
- file = File.join(File.dirname(__FILE__), @file_name)
14
- @doc = XML::Document.file(file)
15
- end
16
-
17
- def teardown
18
- XML.default_keep_blanks = true
19
- @doc = nil
20
- end
21
-
22
- # --- to_s tests ---
23
- def test_to_s_default
24
- # Default to_s has indentation
25
- if defined?(Encoding)
26
- assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bands genre=\"metal\">\n <m\u00F6tley_cr\u00FCe country=\"us\">M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\u00F6tley_cr\u00FCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
27
- @doc.to_s)
28
- else
29
- assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bands genre=\"metal\">\n <m\303\266tley_cr\303\274e country=\"us\">M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.</m\303\266tley_cr\303\274e>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
30
- @doc.to_s)
31
- end
32
- end
33
-
34
- def test_to_s_no_global_indentation
35
- # No indentation due to global setting
36
- XML.indent_tree_output = false
37
- value = @doc.to_s
38
-
39
- if defined?(Encoding)
40
- assert_equal(Encoding::UTF_8, value.encoding)
41
- assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bands genre=\"metal\">\n<m\u00F6tley_cr\u00FCe country=\"us\">M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\u00F6tley_cr\u00FCe>\n<iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
42
- value)
43
- else
44
- assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bands genre=\"metal\">\n<m\303\266tley_cr\303\274e country=\"us\">M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.</m\303\266tley_cr\303\274e>\n<iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
45
- value)
46
- end
47
- ensure
48
- XML.indent_tree_output = true
49
- end
50
-
51
- def test_to_s_no_indentation
52
- # No indentation due to local setting
53
- value = @doc.to_s(:indent => false)
54
- if defined?(Encoding)
55
- assert_equal(Encoding::UTF_8, value.encoding)
56
- assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bands genre=\"metal\"><m\u00F6tley_cr\u00FCe country=\"us\">M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\u00F6tley_cr\u00FCe><iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden></bands>\n",
57
- value)
58
- else
59
- assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bands genre=\"metal\"><m\303\266tley_cr\303\274e country=\"us\">M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.</m\303\266tley_cr\303\274e><iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden></bands>\n",
60
- value)
61
- end
62
- end
63
-
64
- def test_to_s_encoding
65
- # Test encodings
66
-
67
- # UTF8:
68
- # ö - c3 b6 in hex, \303\266 in octal
69
- # ü - c3 bc in hex, \303\274 in octal
70
- value = @doc.to_s(:encoding => XML::Encoding::UTF_8)
71
- if defined?(Encoding)
72
- assert_equal(Encoding::UTF_8, value.encoding)
73
- assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bands genre=\"metal\">\n <m\u00F6tley_cr\u00FCe country=\"us\">M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\u00F6tley_cr\u00FCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
74
- value)
75
- else
76
- assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bands genre=\"metal\">\n <m\303\266tley_cr\303\274e country=\"us\">M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.</m\303\266tley_cr\303\274e>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
77
- value)
78
- end
79
-
80
- # ISO_8859_1:
81
- # ö - f6 in hex, \366 in octal
82
- # ü - fc in hex, \374 in octal
83
- value = @doc.to_s(:encoding => XML::Encoding::ISO_8859_1)
84
- if defined?(Encoding)
85
- assert_equal(Encoding::ISO8859_1, value.encoding)
86
- assert_equal("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<bands genre=\"metal\">\n <m\xF6tley_cr\xFCe country=\"us\">M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\xF6tley_cr\xFCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n".force_encoding(Encoding::ISO8859_1),
87
- @doc.to_s(:encoding => XML::Encoding::ISO_8859_1))
88
- else
89
- assert_equal("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<bands genre=\"metal\">\n <m\366tley_cr\374e country=\"us\">M\366tley Cr\374e is an American heavy metal band formed in Los Angeles, California in 1981.</m\366tley_cr\374e>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
90
- @doc.to_s(:encoding => XML::Encoding::ISO_8859_1))
91
- end
92
-
93
- # Invalid encoding
94
- error = assert_raise(ArgumentError) do
95
- @doc.to_s(:encoding => -9999)
96
- end
97
- assert_equal('Unknown encoding value: -9999', error.to_s)
98
- end
99
-
100
- # --- save tests -----
101
- def test_save_utf8
102
- temp_filename = File.join(Dir.tmpdir, "tc_document_write_test_save_utf8.xml")
103
-
104
- bytes = @doc.save(temp_filename)
105
- assert_equal(305, bytes)
106
-
107
- if defined?(Encoding)
108
- contents = File.read(temp_filename, nil, nil, :encoding => Encoding::UTF_8)
109
- assert_equal(Encoding::UTF_8, contents.encoding)
110
- assert_equal("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<bands genre=\"metal\">\n <m\u00F6tley_cr\u00FCe country=\"us\">M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\u00F6tley_cr\u00FCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
111
- contents)
112
- else
113
- contents = File.read(temp_filename)
114
- assert_equal("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<bands genre=\"metal\">\n <m\303\266tley_cr\303\274e country=\"us\">M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.</m\303\266tley_cr\303\274e>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
115
- contents)
116
- end
117
- ensure
118
- File.delete(temp_filename)
119
- end
120
-
121
- def test_save_utf8_no_indents
122
- temp_filename = File.join(Dir.tmpdir, "tc_document_write_test_save_utf8_no_indents.xml")
123
-
124
- bytes = @doc.save(temp_filename, :indent => false)
125
- assert_equal(298, bytes)
126
-
127
- if defined?(Encoding)
128
- contents = File.read(temp_filename, nil, nil, :encoding => Encoding::UTF_8)
129
- assert_equal("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<bands genre=\"metal\"><m\u00F6tley_cr\u00FCe country=\"us\">M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\u00F6tley_cr\u00FCe><iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden></bands>\n",
130
- contents)
131
- else
132
- contents = File.read(temp_filename)
133
- assert_equal("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<bands genre=\"metal\"><m\303\266tley_cr\303\274e country=\"us\">M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.</m\303\266tley_cr\303\274e><iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden></bands>\n",
134
- contents)
135
- end
136
- ensure
137
- File.delete(temp_filename)
138
- end
139
-
140
- def test_save_iso_8859_1
141
- temp_filename = File.join(Dir.tmpdir, "tc_document_write_test_save_iso_8859_1.xml")
142
- bytes = @doc.save(temp_filename, :encoding => XML::Encoding::ISO_8859_1)
143
- assert_equal(304, bytes)
144
-
145
- if defined?(Encoding)
146
- contents = File.read(temp_filename, nil, nil, :encoding => Encoding::ISO8859_1)
147
- assert_equal(Encoding::ISO8859_1, contents.encoding)
148
- assert_equal("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<bands genre=\"metal\">\n <m\xF6tley_cr\xFCe country=\"us\">M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\xF6tley_cr\xFCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n".force_encoding(Encoding::ISO8859_1),
149
- contents)
150
- else
151
- contents = File.read(temp_filename)
152
- assert_equal("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<bands genre=\"metal\">\n <m\xF6tley_cr\xFCe country=\"us\">M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\xF6tley_cr\xFCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
153
- contents)
154
- end
155
- ensure
156
- File.delete(temp_filename)
157
- end
158
-
159
- def test_save_iso_8859_1_no_indent
160
- temp_filename = File.join(Dir.tmpdir, "tc_document_write_test_save_iso_8859_1_no_indent.xml")
161
- bytes = @doc.save(temp_filename, :indent => false, :encoding => XML::Encoding::ISO_8859_1)
162
- assert_equal(297, bytes)
163
-
164
- if defined?(Encoding)
165
- contents = File.read(temp_filename, nil, nil, :encoding => Encoding::ISO8859_1)
166
- assert_equal(Encoding::ISO8859_1, contents.encoding)
167
- assert_equal("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<bands genre=\"metal\"><m\xF6tley_cr\xFCe country=\"us\">M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\xF6tley_cr\xFCe><iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden></bands>\n".force_encoding(Encoding::ISO8859_1),
168
- contents)
169
- else
170
- contents = File.read(temp_filename)
171
- assert_equal("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<bands genre=\"metal\"><m\xF6tley_cr\xFCe country=\"us\">M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\xF6tley_cr\xFCe><iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden></bands>\n",
172
- contents)
173
- end
174
- ensure
175
- File.delete(temp_filename)
176
- end
177
-
178
- def test_thread_set_root
179
- # Previously a segmentation fault occurred when running libxml in
180
- # background threads.
181
- thread = Thread.new do
182
- 100000.times do |i|
183
- document = LibXML::XML::Document.new
184
- node = LibXML::XML::Node.new('test')
185
- document.root = node
186
- end
187
- end
188
- thread.join
189
- assert(true)
190
- end
191
-
192
- # --- Debug ---
193
- def test_debug
194
- assert(@doc.debug)
195
- end
196
- end
@@ -1,180 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require './test_helper'
4
- require 'test/unit'
5
- require 'stringio'
6
-
7
- class TestError < Test::Unit::TestCase
8
- def test_error_codes
9
- assert_equal(4, XML::Error::DTD)
10
- assert_equal(4, XML::Error.const_get('DTD'))
11
-
12
- assert_equal(4, XML::Error::DOCUMENT_EMPTY)
13
- assert_equal(4, XML::Error.const_get('DOCUMENT_EMPTY'))
14
- end
15
-
16
- def test_invalid_handler
17
- assert_raise(RuntimeError) do
18
- XML::Error.set_handler
19
- end
20
- end
21
-
22
- def test_handler
23
- exception = nil
24
- XML::Error.set_handler do |error|
25
- exception = error
26
- end
27
-
28
- # Raise the error
29
- error = assert_raise(XML::Error) do
30
- XML::Reader.string('<foo').read
31
- end
32
- assert_equal(exception, error)
33
-
34
- # Check the handler worked
35
- assert_not_nil(exception)
36
- assert_kind_of(XML::Error, exception)
37
- assert_equal("Fatal error: Couldn't find end of Start Tag foo at :1.", exception.message)
38
- assert_equal(XML::Error::PARSER, exception.domain)
39
- assert_equal(XML::Error::GT_REQUIRED, exception.code)
40
- assert_equal(XML::Error::FATAL, exception.level)
41
- assert_nil(exception.file)
42
- assert_equal(1, exception.line)
43
- assert_equal('foo', exception.str1)
44
- assert_nil(exception.str2)
45
- assert_nil(exception.str3)
46
- assert_equal(0, exception.int1)
47
- assert_equal(5, exception.int2)
48
- assert_nil(exception.node)
49
- end
50
-
51
- def test_reset_handler
52
- exception = nil
53
- XML::Error.set_handler do |error|
54
- exception = error
55
- end
56
-
57
- XML::Error.reset_handler
58
- XML::Reader.string('<foo')
59
- assert_nil(exception)
60
- end
61
-
62
- def test_get_handler
63
- assert_respond_to(XML::Error, :get_handler)
64
- assert_equal(0, XML::Error.method(:get_handler).arity)
65
-
66
- saved_handler = XML::Error.get_handler
67
- XML::Error.set_handler{ puts "New handler" }
68
- assert_not_equal(XML::Error.get_handler, saved_handler)
69
-
70
- XML::Error.set_handler(&saved_handler)
71
- assert_equal(XML::Error.get_handler, saved_handler)
72
- end
73
-
74
- def test_verbose_handler
75
- XML::Error.set_handler(&XML::Error::VERBOSE_HANDLER)
76
- output = StringIO.new
77
- original_stderr = Object::STDERR
78
-
79
- Object.const_set(:STDERR, output)
80
- begin
81
- assert_raise(XML::Error) do
82
- XML::Parser.string('<foo><bar/></foz>').parse
83
- end
84
- ensure
85
- Object.const_set(:STDERR, original_stderr)
86
- end
87
- assert_equal("Fatal error: Opening and ending tag mismatch: foo line 1 and foz at :1.\n", output.string)
88
- end
89
-
90
- def test_no_hanlder
91
- XML::Error.reset_handler
92
- output = StringIO.new
93
- original_stderr = Object::STDERR
94
-
95
- Object.const_set(:STDERR, output)
96
- begin
97
- assert_raise(XML::Error) do
98
- XML::Parser.string('<foo><bar/></foz>').parse
99
- end
100
- ensure
101
- Object.const_set(:STDERR, original_stderr)
102
- end
103
- assert_equal('', output.string)
104
- end
105
-
106
- def test_parse_error
107
- exception = assert_raise(XML::Error) do
108
- XML::Parser.string('<foo><bar/></foz>').parse
109
- end
110
-
111
- assert_instance_of(XML::Error, exception)
112
- assert_equal("Fatal error: Opening and ending tag mismatch: foo line 1 and foz at :1.", exception.message)
113
- assert_equal(XML::Error::PARSER, exception.domain)
114
- assert_equal(XML::Error::TAG_NAME_MISMATCH, exception.code)
115
- assert_equal(XML::Error::FATAL, exception.level)
116
- assert_nil(exception.file)
117
- assert_equal(1, exception.line)
118
- end
119
-
120
- def test_xpath_error
121
- doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
122
-
123
- exception = assert_raise(XML::Error) do
124
- doc.find('/foo[bar=test')
125
- end
126
-
127
- assert_instance_of(XML::Error, exception)
128
- assert_equal("Error: Invalid predicate.", exception.message)
129
- assert_equal(XML::Error::XPATH, exception.domain)
130
- assert_equal(XML::Error::XPATH_INVALID_PREDICATE_ERROR, exception.code)
131
- assert_equal(XML::Error::ERROR, exception.level)
132
- assert_nil(exception.file)
133
- assert_nil(nil)
134
- end
135
-
136
- def test_double_parse
137
- XML::Parser.register_error_handler(lambda {|msg| nil })
138
- parser = XML::Parser.string("<test>something</test>")
139
- parser.parse
140
-
141
- error = assert_raise(XML::Error) do
142
- # Try parsing a second time
143
- parser.parse
144
- end
145
-
146
- assert_equal(" LibXML::XML::Error.", error.to_s)
147
- end
148
-
149
- def test_libxml_parser_empty_string
150
- xp = XML::Parser.new
151
-
152
- error = assert_raise(TypeError) do
153
- xp.string = nil
154
- end
155
- assert_equal('wrong argument type nil (expected String)', error.to_s)
156
-
157
- error = assert_raise(ArgumentError) do
158
- xp.string = ''
159
- end
160
- assert_equal('Must specify a string with one or more characters', error.to_s)
161
- end
162
-
163
- def test_error_domain_to_s
164
- exception = assert_raise(XML::Error) do
165
- XML::Parser.string('<foo href="http://example.org/cgi?k1=v1&k2=v2"></foo>').parse
166
- end
167
-
168
- assert_equal(XML::Error::PARSER, exception.domain)
169
- assert_equal("PARSER",exception.domain_to_s)
170
- end
171
-
172
- def test_error_code_to_s
173
- exception = assert_raise(XML::Error) do
174
- XML::Parser.string('<foo href="http://example.org/cgi?k1=v1&k2=v2"></foo>').parse
175
- end
176
- assert_equal(XML::Error::ENTITYREF_SEMICOL_MISSING, exception.code)
177
- assert_equal("ENTITYREF_SEMICOL_MISSING",exception.code_to_s)
178
- end
179
-
180
- end