libxml-jruby-fixed 1.0.0-jruby

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +91 -0
  3. data/README.txt +50 -0
  4. data/Rakefile +40 -0
  5. data/lib/libxml-jruby.rb +84 -0
  6. data/lib/libxml-jruby/xml.rb +1 -0
  7. data/lib/libxml-jruby/xml/attr.rb +46 -0
  8. data/lib/libxml-jruby/xml/attributes.rb +68 -0
  9. data/lib/libxml-jruby/xml/document.rb +52 -0
  10. data/lib/libxml-jruby/xml/dtd.rb +25 -0
  11. data/lib/libxml-jruby/xml/node.rb +285 -0
  12. data/lib/libxml-jruby/xml/ns.rb +19 -0
  13. data/lib/libxml-jruby/xml/parser.rb +121 -0
  14. data/lib/libxml-jruby/xml/xpath.rb +98 -0
  15. data/lib/libxml.rb +1 -0
  16. data/lib/xml.rb +13 -0
  17. data/lib/xml/libxml.rb +8 -0
  18. data/script/benchmark/depixelate.rb +633 -0
  19. data/script/benchmark/hamlet.xml +9055 -0
  20. data/script/benchmark/sock_entries.xml +507 -0
  21. data/script/benchmark/throughput.rb +40 -0
  22. data/script/benchmark/xml_benchmarks.rb +228 -0
  23. data/script/test +6 -0
  24. data/tasks/ann.rake +81 -0
  25. data/tasks/bones.rake +21 -0
  26. data/tasks/gem.rake +126 -0
  27. data/tasks/git.rake +41 -0
  28. data/tasks/manifest.rake +49 -0
  29. data/tasks/notes.rake +28 -0
  30. data/tasks/post_load.rake +39 -0
  31. data/tasks/rdoc.rake +51 -0
  32. data/tasks/rubyforge.rake +57 -0
  33. data/tasks/setup.rb +268 -0
  34. data/tasks/spec.rake +55 -0
  35. data/tasks/svn.rake +48 -0
  36. data/tasks/test.rake +38 -0
  37. data/test/etc_doc_to_s.rb +19 -0
  38. data/test/ets_copy_bug.rb +21 -0
  39. data/test/ets_copy_bug3.rb +38 -0
  40. data/test/ets_doc_file.rb +15 -0
  41. data/test/ets_doc_to_s.rb +21 -0
  42. data/test/ets_gpx.rb +26 -0
  43. data/test/ets_node_gc.rb +21 -0
  44. data/test/ets_test.xml +2 -0
  45. data/test/ets_tsr.rb +9 -0
  46. data/test/model/books.xml +147 -0
  47. data/test/model/default_validation_bug.rb +0 -0
  48. data/test/model/merge_bug_data.xml +58 -0
  49. data/test/model/rubynet.xml +78 -0
  50. data/test/model/rubynet_project +1 -0
  51. data/test/model/saxtest.xml +5 -0
  52. data/test/model/shiporder.rnc +28 -0
  53. data/test/model/shiporder.rng +86 -0
  54. data/test/model/shiporder.xml +23 -0
  55. data/test/model/shiporder.xsd +31 -0
  56. data/test/model/simple.xml +7 -0
  57. data/test/model/soap.xml +27 -0
  58. data/test/model/xinclude.xml +5 -0
  59. data/test/tc_attributes.rb +110 -0
  60. data/test/tc_deprecated_require.rb +13 -0
  61. data/test/tc_document.rb +97 -0
  62. data/test/tc_document_write.rb +139 -0
  63. data/test/tc_dtd.rb +70 -0
  64. data/test/tc_html_parser.rb +63 -0
  65. data/test/tc_node.rb +108 -0
  66. data/test/tc_node_attr.rb +176 -0
  67. data/test/tc_node_cdata.rb +51 -0
  68. data/test/tc_node_comment.rb +32 -0
  69. data/test/tc_node_copy.rb +40 -0
  70. data/test/tc_node_edit.rb +98 -0
  71. data/test/tc_node_set.rb +24 -0
  72. data/test/tc_node_set2.rb +37 -0
  73. data/test/tc_node_text.rb +17 -0
  74. data/test/tc_node_xlink.rb +28 -0
  75. data/test/tc_ns.rb +18 -0
  76. data/test/tc_parser.rb +308 -0
  77. data/test/tc_parser_context.rb +126 -0
  78. data/test/tc_properties.rb +37 -0
  79. data/test/tc_reader.rb +112 -0
  80. data/test/tc_relaxng.rb +39 -0
  81. data/test/tc_sax_parser.rb +113 -0
  82. data/test/tc_schema.rb +39 -0
  83. data/test/tc_traversal.rb +220 -0
  84. data/test/tc_well_formed.rb +11 -0
  85. data/test/tc_xinclude.rb +26 -0
  86. data/test/tc_xpath.rb +130 -0
  87. data/test/tc_xpath_context.rb +72 -0
  88. data/test/tc_xpointer.rb +78 -0
  89. data/test/test_libxml-jruby.rb +0 -0
  90. data/test/test_suite.rb +31 -0
  91. data/test/ts_working.rb +31 -0
  92. metadata +146 -0
@@ -0,0 +1,17 @@
1
+ require 'xml'
2
+ require 'test/unit'
3
+
4
+ class TC_XML_Node_text < Test::Unit::TestCase
5
+ def setup
6
+ @t=XML::Node.new_text("testdata")
7
+ assert_instance_of(XML::Node,@t)
8
+ end
9
+
10
+ def test_content
11
+ assert_equal("testdata",@t.content)
12
+ end
13
+
14
+ def test_type
15
+ assert_equal(true,@t.text?)
16
+ end
17
+ end
@@ -0,0 +1,28 @@
1
+ # $Id$
2
+ require "xml"
3
+ require 'test/unit'
4
+
5
+ class TC_XML_Node_XLink < Test::Unit::TestCase
6
+ def setup()
7
+ xp = XML::Parser.new()
8
+ str = '<ruby_array xmlns:xlink="http://www.w3.org/1999/xlink/namespace/"><fixnum xlink:type="simple">one</fixnum></ruby_array>'
9
+ assert_equal(str, xp.string = str)
10
+ doc = xp.parse
11
+ assert_instance_of(XML::Document, doc)
12
+ @root = doc.root
13
+ assert_instance_of(XML::Node, @root)
14
+ end
15
+
16
+ def teardown()
17
+ @root = nil
18
+ end
19
+
20
+ def test_xml_node_xlink()
21
+ for elem in @root.find('fixnum')
22
+ assert_instance_of(XML::Node, elem)
23
+ assert_instance_of(TrueClass, elem.xlink?)
24
+ assert_equal("simple", elem.xlink_type_name)
25
+ assert_equal(XML::Node::XLINK_TYPE_SIMPLE, elem.xlink_type)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,18 @@
1
+ require "xml"
2
+ require 'test/unit'
3
+
4
+ class TestNS < Test::Unit::TestCase
5
+ def test_ns
6
+ node = XML::Node.new('foo')
7
+ ns = XML::NS.new(node, 'http://www.mynamespace.com', 'my_namepace')
8
+ assert_equal(ns.prefix, 'my_namepace')
9
+ assert_equal(ns.href, 'http://www.mynamespace.com')
10
+ end
11
+
12
+ def test_default_ns
13
+ node = XML::Node.new('foo')
14
+ ns = XML::NS.new(node, 'http://www.mynamespace.com', nil)
15
+ assert_equal(ns.prefix, nil)
16
+ assert_equal(ns.href, 'http://www.mynamespace.com')
17
+ end
18
+ end
@@ -0,0 +1,308 @@
1
+ require "xml"
2
+ require 'test/unit'
3
+ require 'test_helper'
4
+
5
+ class TestParser < Test::Unit::TestCase
6
+ def setup
7
+ XML::Parser.register_error_handler(nil)
8
+ @xp = XML::Parser.new
9
+ end
10
+
11
+ def teardown
12
+ @xp = nil
13
+ XML::Parser.register_error_handler(nil)
14
+ # Clear out all the files we opened up in
15
+ # the test_fd_gc test
16
+ GC.start
17
+ end
18
+
19
+ # ----- Constants ------
20
+ def test_lib_versions
21
+ assert(XML::Parser::check_lib_versions)
22
+ end
23
+
24
+ def test_debug_entities
25
+ XML::Parser::debug_entities = false
26
+ assert(!XML::Parser::debug_entities)
27
+
28
+ XML::Parser::debug_entities = true
29
+ assert(XML::Parser::debug_entities)
30
+
31
+ XML::Parser::debug_entities = false
32
+ assert(!XML::Parser::debug_entities)
33
+ end
34
+
35
+ def test_default_compression
36
+ return unless XML::Parser::default_compression
37
+
38
+ 0.upto(9) do |i|
39
+ XML::Parser::default_compression = i
40
+ assert_equal(i, XML::Parser::default_compression)
41
+ end
42
+
43
+ 9.downto(0) do |i|
44
+ assert_equal(i, XML::Parser::default_compression = i)
45
+ assert_equal(i, XML::Parser::default_compression)
46
+ end
47
+
48
+ 0.downto(-10) do |i|
49
+ assert_equal(i, XML::Parser::default_compression = i)
50
+ assert_equal(0, XML::Parser::default_compression)
51
+ end
52
+
53
+ 10.upto(20) do |i|
54
+ assert_equal(i, XML::Parser::default_compression = i)
55
+ assert_equal(9, XML::Parser::default_compression)
56
+ end
57
+ end
58
+
59
+ def test_default_keep_blanks
60
+ XML::Parser::default_keep_blanks = false
61
+ assert(!XML::Parser::default_keep_blanks)
62
+
63
+ XML::Parser::default_keep_blanks = true
64
+ assert(XML::Parser::default_keep_blanks)
65
+
66
+ XML::Parser::default_keep_blanks = false
67
+ assert(!XML::Parser::default_keep_blanks)
68
+
69
+ # other tests depend on keeping blanks by default,
70
+ # which is the default default behaviour anyway.
71
+ XML::Parser::default_keep_blanks = true
72
+ end
73
+
74
+ def test_default_line_numbers
75
+ XML::Parser::default_line_numbers = false
76
+ assert(!XML::Parser::default_line_numbers)
77
+
78
+ XML::Parser::default_line_numbers = true
79
+ assert(XML::Parser::default_line_numbers)
80
+
81
+ XML::Parser::default_line_numbers = false
82
+ assert(!XML::Parser::default_line_numbers)
83
+ end
84
+
85
+ def test_default_substitute_entities
86
+ XML::Parser::default_substitute_entities = false
87
+ assert(!XML::Parser::default_substitute_entities)
88
+
89
+ XML::Parser::default_substitute_entities = true
90
+ assert(XML::Parser::default_substitute_entities)
91
+
92
+ XML::Parser::default_substitute_entities = false
93
+ assert(!XML::Parser::default_substitute_entities)
94
+ end
95
+
96
+ def test_default_tree_indent_string
97
+ s = XML::Parser::default_tree_indent_string
98
+ assert_instance_of(String, s)
99
+ assert_equal(' ', s)
100
+ XML::Parser::default_tree_indent_string = 'uga'
101
+ s = XML::Parser::default_tree_indent_string
102
+ assert_instance_of(String, s)
103
+ assert_equal('uga', s)
104
+ XML::Parser::default_tree_indent_string = ' '
105
+ s = XML::Parser::default_tree_indent_string
106
+ assert_instance_of(String, s)
107
+ assert_equal(' ', s)
108
+ end
109
+
110
+ def test_default_validity_checking
111
+ XML::Parser::default_validity_checking = false
112
+ assert(!XML::Parser::default_validity_checking)
113
+
114
+ XML::Parser::default_validity_checking = true
115
+ assert(XML::Parser::default_validity_checking)
116
+
117
+ XML::Parser::default_validity_checking = false
118
+ assert(!XML::Parser::default_validity_checking)
119
+ end
120
+
121
+ def test_default_warnings
122
+ XML::Parser::default_warnings = false
123
+ assert(!XML::Parser::default_warnings)
124
+
125
+ XML::Parser::default_warnings = true
126
+ assert(XML::Parser::default_warnings)
127
+
128
+ XML::Parser::default_warnings = false
129
+ assert(!XML::Parser::default_warnings)
130
+ end
131
+
132
+ def test_intent_tree_output
133
+ assert(TrueClass, XML::Parser::indent_tree_output)
134
+
135
+ XML::Parser::indent_tree_output = false
136
+ assert(FalseClass, XML::Parser::indent_tree_output)
137
+
138
+ XML::Parser::indent_tree_output = true
139
+ assert(TrueClass, XML::Parser::indent_tree_output)
140
+ end
141
+
142
+ def test_version
143
+ assert_instance_of(String, XML::Parser::VERSION)
144
+ end
145
+
146
+ def test_vernum
147
+ assert_instance_of(Fixnum, XML::Parser::VERNUM)
148
+ end
149
+
150
+ # ----- IO ------
151
+ def test_string
152
+ str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
153
+ assert_equal(str, @xp.string = str)
154
+ assert_instance_of(XML::Document, @xp.parse)
155
+ end
156
+
157
+ def test_context
158
+ @xp = XML::Parser.string('<rubynet><testing>uga</testing><uga>foo</uga></rubynet>')
159
+ doc = @xp.parse
160
+ assert_instance_of(XML::Document, doc)
161
+ # FIXME Parser#context is not implemented
162
+ # assert_instance_of(XML::Parser::Context, @xp.context)
163
+ end
164
+
165
+ def test_file
166
+ file = File.expand_path(File.join(File.dirname(__FILE__), 'model/rubynet.xml'))
167
+
168
+ @xp.filename = file
169
+ assert_equal(file, @xp.filename)
170
+
171
+ doc = @xp.parse
172
+ assert_instance_of(XML::Document, doc)
173
+ end
174
+
175
+ def test_io
176
+ File.open(File.join(File.dirname(__FILE__), 'model/rubynet.xml')) do |f|
177
+ assert_kind_of(IO, f)
178
+ assert_kind_of(IO, @xp.io = f)
179
+ assert_instance_of(XML::Document, @xp.parse)
180
+ end
181
+ end
182
+
183
+ def test_string_io
184
+ data = File.read(File.join(File.dirname(__FILE__), 'model/rubynet.xml'))
185
+ string_io = StringIO.new(data)
186
+ assert_raises(TypeError) do
187
+ assert_kind_of(StringIO, @xp.io = string_io)
188
+ end
189
+ end
190
+
191
+ def test_fd_gc
192
+ # Test opening # of documents up to the file limit for the OS.
193
+ # Ideally it should run until libxml emits a warning,
194
+ # thereby knowing we've done a GC sweep. For the time being,
195
+ # re-open the same doc `limit descriptors` times.
196
+ # If we make it to the end, then we've succeeded,
197
+ # otherwise an exception will be thrown.
198
+
199
+ # FIXME removed test, extremely slow...
200
+ # XML::Parser.register_error_handler(lambda {|msg| nil })
201
+ #
202
+ # max_fd = if RUBY_PLATFORM.match(/mswin32/i)
203
+ # 500
204
+ # else
205
+ # (`ulimit -n`.chomp.to_i) + 1
206
+ # end
207
+ #
208
+ # filename = File.join(File.dirname(__FILE__), 'model/rubynet.xml')
209
+ # max_fd.times do
210
+ # XML::Document.file(filename)
211
+ # end
212
+ end
213
+
214
+ def test_libxml_parser_features
215
+ assert_instance_of(Array, XML::Parser::features)
216
+ end
217
+
218
+ # ----- Errors ------
219
+ def test_error_handler
220
+ assert_raise(XML::Parser::ParseError) do
221
+ XML::Parser.string('<foo><bar/></foz>').parse
222
+ end
223
+
224
+ ary = []
225
+ XML::Parser.register_error_handler do |msg|
226
+ ary << msg
227
+ end
228
+
229
+ # this will use our error handler
230
+ assert_raise(XML::Parser::ParseError) do
231
+ XML::Parser.string('<foo><bar/></foz>').parse
232
+ end
233
+
234
+ # FIXME Errors are not the same across platforms
235
+ # assert_equal(["Entity: line 1: ",
236
+ # "parser ",
237
+ # "error : ",
238
+ # "Opening and ending tag mismatch: foo line 1 and foz\n",
239
+ # "<foo><bar/></foz>\n",
240
+ # " ^\n"], ary)
241
+
242
+ # assert_instance_of(Proc, XML::Parser.register_error_handler(nil))
243
+
244
+ # this will go to stderr again
245
+ assert_raise(XML::Parser::ParseError) do
246
+ d = XML::Parser.string('<foo><bar/></foz>').parse
247
+ end
248
+ end
249
+
250
+ def test_error_handler_lambda
251
+ XML::Parser.register_error_handler(nil)
252
+ assert_raise(XML::Parser::ParseError) do
253
+ XML::Parser.string('<foo><bar/></foz>').parse
254
+ end
255
+
256
+ ary = []
257
+ assert_nil XML::Parser.register_error_handler(lambda { |msg| ary << msg })
258
+
259
+ # this will use our error handler
260
+ assert_raise(XML::Parser::ParseError) do
261
+ XML::Parser.string('<foo><bar/></foz>').parse
262
+ end
263
+
264
+ # FIXME Errors are not the same across platforms
265
+ # assert_equal(["Entity: line 1: ",
266
+ # "parser ",
267
+ # "error : ",
268
+ # "Opening and ending tag mismatch: foo line 1 and foz\n",
269
+ # "<foo><bar/></foz>\n",
270
+ # " ^\n"], ary)
271
+
272
+ # assert_instance_of(Proc, XML::Parser.register_error_handler(nil))
273
+
274
+ # this will go to stderr again
275
+ assert_raise(XML::Parser::ParseError) do
276
+ d = XML::Parser.string('<foo><bar/></foz>').parse
277
+ end
278
+ end
279
+
280
+ def test_bad_xml
281
+ @xp.string = '<ruby_array uga="booga" foo="bar"<fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
282
+ XML::Parser.register_error_handler(lambda {|msg| nil })
283
+ assert_raise(XML::Parser::ParseError) do
284
+ assert_not_nil(@xp.parse)
285
+ end
286
+ end
287
+
288
+ def test_double_parse
289
+ XML::Parser.register_error_handler(lambda {|msg| nil })
290
+ parser = XML::Parser.string("<test>something</test>")
291
+ doc = parser.parse
292
+
293
+ assert_raise(XML::Parser::ParseError) do
294
+ parser.parse
295
+ end
296
+ end
297
+
298
+ def test_libxml_parser_empty_string
299
+ assert_raise(XML::Parser::ParseError) do
300
+ @xp.string = ''
301
+ @xp.parse
302
+ end
303
+
304
+ assert_raise(TypeError) do
305
+ @xp.string = nil
306
+ end
307
+ end
308
+ end
@@ -0,0 +1,126 @@
1
+ require "xml"
2
+ require 'test/unit'
3
+
4
+ class TestParserContext < Test::Unit::TestCase
5
+ def setup
6
+ str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
7
+ xp = XML::Parser.string(str)
8
+ assert_equal(str, xp.string = str)
9
+ doc = xp.parse
10
+ assert_instance_of(XML::Document, doc)
11
+ @ctxt = xp.context
12
+ assert_instance_of(XML::Parser::Context, @ctxt)
13
+ end
14
+
15
+ def teardown
16
+ @ctxt = nil
17
+ end
18
+
19
+ def test_well_formed
20
+ if @ctxt.well_formed?
21
+ assert_instance_of(TrueClass, @ctxt.well_formed?)
22
+ else
23
+ assert_instance_of(FalseClass, @ctxt.well_formed?)
24
+ end
25
+ end
26
+
27
+ def test_version_info
28
+ assert_instance_of(String, @ctxt.version)
29
+ end
30
+
31
+ def test_depth
32
+ assert_instance_of(Fixnum, @ctxt.depth)
33
+ end
34
+
35
+ def test_disable_sax
36
+ assert(!@ctxt.disable_sax?)
37
+ end
38
+
39
+ def test_docbook
40
+ assert(!@ctxt.docbook?)
41
+ end
42
+
43
+ def test_encoding
44
+ assert(!@ctxt.encoding)
45
+ end
46
+
47
+ def test_html
48
+ assert(!@ctxt.html?)
49
+ end
50
+
51
+ def test_keep_blanks
52
+ if @ctxt.keep_blanks?
53
+ assert_instance_of(TrueClass, @ctxt.keep_blanks?)
54
+ else
55
+ assert_instance_of(FalseClass, @ctxt.keep_blanks?)
56
+ end
57
+ end
58
+
59
+ if ENV['NOTWORKING']
60
+ def test_num_chars
61
+ assert_equal(17, @ctxt.num_chars)
62
+ end
63
+ end
64
+
65
+ def test_replace_entities
66
+ if @ctxt.replace_entities?
67
+ assert_instance_of(TrueClass, @ctxt.replace_entities?)
68
+ else
69
+ assert_instance_of(FalseClass, @ctxt.replace_entities?)
70
+ end
71
+ end
72
+
73
+ def test_space_depth
74
+ assert_equal(1, @ctxt.space_depth)
75
+ end
76
+
77
+ def test_subset_external
78
+ assert(!@ctxt.subset_external?)
79
+ end
80
+
81
+ def test_data_directory_get
82
+ assert_nil(@ctxt.data_directory)
83
+ end
84
+
85
+ def test_parse_error
86
+ xp = XML::Parser.new
87
+ xp.string = '<foo><bar/></foz>'
88
+
89
+ assert_raise(XML::Parser::ParseError) do
90
+ xp.parse
91
+ end
92
+
93
+ # Now check context
94
+ context = xp.context
95
+ assert_equal(nil, context.data_directory)
96
+ assert_equal(0, context.depth)
97
+ assert_equal(true, context.disable_sax?)
98
+ assert_equal(false, context.docbook?)
99
+ assert_equal(nil, context.encoding)
100
+ assert_equal(76, context.errno)
101
+ assert_equal(false, context.html?)
102
+ assert_equal(5, context.io_max_num_streams)
103
+ assert_equal(1, context.io_num_streams)
104
+ assert_equal(true, context.keep_blanks?)
105
+ assert_equal(1, context.io_num_streams)
106
+ assert_equal(nil, context.name_node)
107
+ assert_equal(0, context.name_depth)
108
+ assert_equal(10, context.name_depth_max)
109
+ assert_equal(17, context.num_chars)
110
+ assert_equal(0, context.options)
111
+ assert_equal(true, context.replace_entities?)
112
+ assert_equal(1, context.space_depth)
113
+ assert_equal(10, context.space_depth_max)
114
+ assert_equal(false, context.subset_external?)
115
+ assert_equal(nil, context.subset_external_system_id)
116
+ assert_equal(nil, context.subset_external_uri)
117
+ assert_equal(false, context.subset_internal?)
118
+ assert_equal(nil, context.subset_internal_name)
119
+ assert_equal(false, context.stats?)
120
+ assert_equal(true, context.standalone?)
121
+ assert_equal(false, context.valid)
122
+ assert_equal(false, context.validate?)
123
+ assert_equal('1.0', context.version)
124
+ assert_equal(false, context.well_formed?)
125
+ end
126
+ end