nokogiri 1.5.10 → 1.12.5

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 (328) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/LICENSE-DEPENDENCIES.md +1903 -0
  4. data/LICENSE.md +9 -0
  5. data/README.md +278 -0
  6. data/bin/nokogiri +50 -10
  7. data/dependencies.yml +74 -0
  8. data/ext/nokogiri/depend +38 -358
  9. data/ext/nokogiri/extconf.rb +944 -100
  10. data/ext/nokogiri/gumbo.c +584 -0
  11. data/ext/nokogiri/html4_document.c +166 -0
  12. data/ext/nokogiri/html4_element_description.c +294 -0
  13. data/ext/nokogiri/html4_entity_lookup.c +37 -0
  14. data/ext/nokogiri/html4_sax_parser_context.c +120 -0
  15. data/ext/nokogiri/html4_sax_push_parser.c +95 -0
  16. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  17. data/ext/nokogiri/nokogiri.c +232 -87
  18. data/ext/nokogiri/nokogiri.h +188 -129
  19. data/ext/nokogiri/test_global_handlers.c +40 -0
  20. data/ext/nokogiri/xml_attr.c +49 -40
  21. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  22. data/ext/nokogiri/xml_cdata.c +24 -23
  23. data/ext/nokogiri/xml_comment.c +29 -21
  24. data/ext/nokogiri/xml_document.c +305 -201
  25. data/ext/nokogiri/xml_document_fragment.c +13 -15
  26. data/ext/nokogiri/xml_dtd.c +54 -48
  27. data/ext/nokogiri/xml_element_content.c +31 -26
  28. data/ext/nokogiri/xml_element_decl.c +22 -22
  29. data/ext/nokogiri/xml_encoding_handler.c +30 -19
  30. data/ext/nokogiri/xml_entity_decl.c +32 -30
  31. data/ext/nokogiri/xml_entity_reference.c +16 -18
  32. data/ext/nokogiri/xml_namespace.c +74 -32
  33. data/ext/nokogiri/xml_node.c +808 -503
  34. data/ext/nokogiri/xml_node_set.c +239 -208
  35. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  36. data/ext/nokogiri/xml_reader.c +198 -186
  37. data/ext/nokogiri/xml_relax_ng.c +52 -28
  38. data/ext/nokogiri/xml_sax_parser.c +123 -125
  39. data/ext/nokogiri/xml_sax_parser_context.c +138 -79
  40. data/ext/nokogiri/xml_sax_push_parser.c +88 -35
  41. data/ext/nokogiri/xml_schema.c +112 -33
  42. data/ext/nokogiri/xml_syntax_error.c +50 -23
  43. data/ext/nokogiri/xml_text.c +14 -18
  44. data/ext/nokogiri/xml_xpath_context.c +162 -98
  45. data/ext/nokogiri/xslt_stylesheet.c +162 -168
  46. data/gumbo-parser/CHANGES.md +63 -0
  47. data/gumbo-parser/Makefile +101 -0
  48. data/gumbo-parser/THANKS +27 -0
  49. data/gumbo-parser/src/Makefile +34 -0
  50. data/gumbo-parser/src/README.md +41 -0
  51. data/gumbo-parser/src/ascii.c +75 -0
  52. data/gumbo-parser/src/ascii.h +115 -0
  53. data/gumbo-parser/src/attribute.c +42 -0
  54. data/gumbo-parser/src/attribute.h +17 -0
  55. data/gumbo-parser/src/char_ref.c +22225 -0
  56. data/gumbo-parser/src/char_ref.h +29 -0
  57. data/gumbo-parser/src/char_ref.rl +2154 -0
  58. data/gumbo-parser/src/error.c +626 -0
  59. data/gumbo-parser/src/error.h +148 -0
  60. data/gumbo-parser/src/foreign_attrs.c +104 -0
  61. data/gumbo-parser/src/foreign_attrs.gperf +27 -0
  62. data/gumbo-parser/src/gumbo.h +943 -0
  63. data/gumbo-parser/src/insertion_mode.h +33 -0
  64. data/gumbo-parser/src/macros.h +91 -0
  65. data/gumbo-parser/src/parser.c +4886 -0
  66. data/gumbo-parser/src/parser.h +41 -0
  67. data/gumbo-parser/src/replacement.h +33 -0
  68. data/gumbo-parser/src/string_buffer.c +103 -0
  69. data/gumbo-parser/src/string_buffer.h +68 -0
  70. data/gumbo-parser/src/string_piece.c +48 -0
  71. data/gumbo-parser/src/svg_attrs.c +174 -0
  72. data/gumbo-parser/src/svg_attrs.gperf +77 -0
  73. data/gumbo-parser/src/svg_tags.c +137 -0
  74. data/gumbo-parser/src/svg_tags.gperf +55 -0
  75. data/gumbo-parser/src/tag.c +222 -0
  76. data/gumbo-parser/src/tag_lookup.c +382 -0
  77. data/gumbo-parser/src/tag_lookup.gperf +169 -0
  78. data/gumbo-parser/src/tag_lookup.h +13 -0
  79. data/gumbo-parser/src/token_buffer.c +79 -0
  80. data/gumbo-parser/src/token_buffer.h +71 -0
  81. data/gumbo-parser/src/token_type.h +17 -0
  82. data/gumbo-parser/src/tokenizer.c +3463 -0
  83. data/gumbo-parser/src/tokenizer.h +112 -0
  84. data/gumbo-parser/src/tokenizer_states.h +339 -0
  85. data/gumbo-parser/src/utf8.c +245 -0
  86. data/gumbo-parser/src/utf8.h +164 -0
  87. data/gumbo-parser/src/util.c +68 -0
  88. data/gumbo-parser/src/util.h +30 -0
  89. data/gumbo-parser/src/vector.c +111 -0
  90. data/gumbo-parser/src/vector.h +45 -0
  91. data/lib/nokogiri/css/node.rb +1 -50
  92. data/lib/nokogiri/css/parser.rb +317 -286
  93. data/lib/nokogiri/css/parser.y +57 -43
  94. data/lib/nokogiri/css/parser_extras.rb +39 -36
  95. data/lib/nokogiri/css/syntax_error.rb +2 -1
  96. data/lib/nokogiri/css/tokenizer.rb +105 -103
  97. data/lib/nokogiri/css/tokenizer.rex +5 -5
  98. data/lib/nokogiri/css/xpath_visitor.rb +137 -48
  99. data/lib/nokogiri/css.rb +15 -14
  100. data/lib/nokogiri/decorators/slop.rb +13 -5
  101. data/lib/nokogiri/extension.rb +31 -0
  102. data/lib/nokogiri/gumbo.rb +14 -0
  103. data/lib/nokogiri/html.rb +32 -27
  104. data/lib/nokogiri/{html → html4}/builder.rb +3 -2
  105. data/lib/nokogiri/{html → html4}/document.rb +118 -50
  106. data/lib/nokogiri/{html → html4}/document_fragment.rb +20 -11
  107. data/lib/nokogiri/{html → html4}/element_description.rb +2 -1
  108. data/lib/nokogiri/{html → html4}/element_description_defaults.rb +2 -1
  109. data/lib/nokogiri/{html → html4}/entity_lookup.rb +2 -1
  110. data/lib/nokogiri/{html → html4}/sax/parser.rb +22 -14
  111. data/lib/nokogiri/html4/sax/parser_context.rb +19 -0
  112. data/lib/nokogiri/html4/sax/push_parser.rb +37 -0
  113. data/lib/nokogiri/html4.rb +40 -0
  114. data/lib/nokogiri/html5/document.rb +74 -0
  115. data/lib/nokogiri/html5/document_fragment.rb +80 -0
  116. data/lib/nokogiri/html5/node.rb +93 -0
  117. data/lib/nokogiri/html5.rb +473 -0
  118. data/lib/nokogiri/jruby/dependencies.rb +20 -0
  119. data/lib/nokogiri/syntax_error.rb +1 -0
  120. data/lib/nokogiri/version/constant.rb +5 -0
  121. data/lib/nokogiri/version/info.rb +215 -0
  122. data/lib/nokogiri/version.rb +3 -91
  123. data/lib/nokogiri/xml/attr.rb +1 -0
  124. data/lib/nokogiri/xml/attribute_decl.rb +1 -0
  125. data/lib/nokogiri/xml/builder.rb +75 -33
  126. data/lib/nokogiri/xml/cdata.rb +1 -0
  127. data/lib/nokogiri/xml/character_data.rb +1 -0
  128. data/lib/nokogiri/xml/document.rb +157 -54
  129. data/lib/nokogiri/xml/document_fragment.rb +55 -8
  130. data/lib/nokogiri/xml/dtd.rb +15 -4
  131. data/lib/nokogiri/xml/element_content.rb +1 -0
  132. data/lib/nokogiri/xml/element_decl.rb +1 -0
  133. data/lib/nokogiri/xml/entity_decl.rb +1 -0
  134. data/lib/nokogiri/xml/entity_reference.rb +19 -0
  135. data/lib/nokogiri/xml/namespace.rb +1 -0
  136. data/lib/nokogiri/xml/node/save_options.rb +2 -1
  137. data/lib/nokogiri/xml/node.rb +712 -431
  138. data/lib/nokogiri/xml/node_set.rb +140 -123
  139. data/lib/nokogiri/xml/notation.rb +1 -0
  140. data/lib/nokogiri/xml/parse_options.rb +31 -0
  141. data/lib/nokogiri/xml/pp/character_data.rb +1 -0
  142. data/lib/nokogiri/xml/pp/node.rb +1 -0
  143. data/lib/nokogiri/xml/pp.rb +3 -2
  144. data/lib/nokogiri/xml/processing_instruction.rb +1 -0
  145. data/lib/nokogiri/xml/reader.rb +9 -12
  146. data/lib/nokogiri/xml/relax_ng.rb +7 -2
  147. data/lib/nokogiri/xml/sax/document.rb +25 -30
  148. data/lib/nokogiri/xml/sax/parser.rb +8 -8
  149. data/lib/nokogiri/xml/sax/parser_context.rb +1 -0
  150. data/lib/nokogiri/xml/sax/push_parser.rb +1 -0
  151. data/lib/nokogiri/xml/sax.rb +5 -4
  152. data/lib/nokogiri/xml/schema.rb +13 -4
  153. data/lib/nokogiri/xml/searchable.rb +239 -0
  154. data/lib/nokogiri/xml/syntax_error.rb +25 -1
  155. data/lib/nokogiri/xml/text.rb +1 -0
  156. data/lib/nokogiri/xml/xpath/syntax_error.rb +2 -1
  157. data/lib/nokogiri/xml/xpath.rb +4 -5
  158. data/lib/nokogiri/xml/xpath_context.rb +1 -0
  159. data/lib/nokogiri/xml.rb +37 -35
  160. data/lib/nokogiri/xslt/stylesheet.rb +2 -1
  161. data/lib/nokogiri/xslt.rb +17 -16
  162. data/lib/nokogiri.rb +55 -58
  163. data/lib/xsd/xmlparser/nokogiri.rb +1 -0
  164. data/patches/libxml2/0001-Remove-script-macro-support.patch +40 -0
  165. data/patches/libxml2/0002-Update-entities-to-remove-handling-of-ssi.patch +44 -0
  166. data/patches/libxml2/0003-libxml2.la-is-in-top_builddir.patch +25 -0
  167. data/patches/libxml2/0004-use-glibc-strlen.patch +53 -0
  168. data/patches/libxml2/0005-avoid-isnan-isinf.patch +81 -0
  169. data/patches/libxml2/0006-update-automake-files-for-arm64.patch +2511 -0
  170. data/patches/libxml2/0007-Fix-XPath-recursion-limit.patch +31 -0
  171. data/patches/libxslt/0001-update-automake-files-for-arm64.patch +2511 -0
  172. data/patches/libxslt/0002-Fix-xml2-config-check-in-configure-script.patch +19 -0
  173. data/ports/archives/libxml2-2.9.12.tar.gz +0 -0
  174. data/ports/archives/libxslt-1.1.34.tar.gz +0 -0
  175. metadata +307 -459
  176. data/.autotest +0 -26
  177. data/.gemtest +0 -0
  178. data/CHANGELOG.ja.rdoc +0 -785
  179. data/CHANGELOG.rdoc +0 -783
  180. data/C_CODING_STYLE.rdoc +0 -33
  181. data/Manifest.txt +0 -303
  182. data/README.ja.rdoc +0 -106
  183. data/README.rdoc +0 -175
  184. data/ROADMAP.md +0 -90
  185. data/Rakefile +0 -228
  186. data/STANDARD_RESPONSES.md +0 -47
  187. data/Y_U_NO_GEMSPEC.md +0 -155
  188. data/build_all +0 -105
  189. data/ext/nokogiri/html_document.c +0 -170
  190. data/ext/nokogiri/html_document.h +0 -10
  191. data/ext/nokogiri/html_element_description.c +0 -279
  192. data/ext/nokogiri/html_element_description.h +0 -10
  193. data/ext/nokogiri/html_entity_lookup.c +0 -32
  194. data/ext/nokogiri/html_entity_lookup.h +0 -8
  195. data/ext/nokogiri/html_sax_parser_context.c +0 -116
  196. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  197. data/ext/nokogiri/html_sax_push_parser.c +0 -87
  198. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  199. data/ext/nokogiri/xml_attr.h +0 -9
  200. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  201. data/ext/nokogiri/xml_cdata.h +0 -9
  202. data/ext/nokogiri/xml_comment.h +0 -9
  203. data/ext/nokogiri/xml_document.h +0 -23
  204. data/ext/nokogiri/xml_document_fragment.h +0 -10
  205. data/ext/nokogiri/xml_dtd.h +0 -10
  206. data/ext/nokogiri/xml_element_content.h +0 -10
  207. data/ext/nokogiri/xml_element_decl.h +0 -9
  208. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  209. data/ext/nokogiri/xml_entity_decl.h +0 -10
  210. data/ext/nokogiri/xml_entity_reference.h +0 -9
  211. data/ext/nokogiri/xml_io.c +0 -56
  212. data/ext/nokogiri/xml_io.h +0 -11
  213. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  214. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  215. data/ext/nokogiri/xml_namespace.h +0 -13
  216. data/ext/nokogiri/xml_node.h +0 -13
  217. data/ext/nokogiri/xml_node_set.h +0 -14
  218. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  219. data/ext/nokogiri/xml_reader.h +0 -10
  220. data/ext/nokogiri/xml_relax_ng.h +0 -9
  221. data/ext/nokogiri/xml_sax_parser.h +0 -39
  222. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  223. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  224. data/ext/nokogiri/xml_schema.h +0 -9
  225. data/ext/nokogiri/xml_syntax_error.h +0 -13
  226. data/ext/nokogiri/xml_text.h +0 -9
  227. data/ext/nokogiri/xml_xpath_context.h +0 -10
  228. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  229. data/lib/nokogiri/html/sax/parser_context.rb +0 -16
  230. data/lib/nokogiri/html/sax/push_parser.rb +0 -16
  231. data/tasks/cross_compile.rb +0 -150
  232. data/tasks/nokogiri.org.rb +0 -24
  233. data/tasks/test.rb +0 -95
  234. data/test/css/test_nthiness.rb +0 -159
  235. data/test/css/test_parser.rb +0 -341
  236. data/test/css/test_tokenizer.rb +0 -198
  237. data/test/css/test_xpath_visitor.rb +0 -91
  238. data/test/decorators/test_slop.rb +0 -16
  239. data/test/files/2ch.html +0 -108
  240. data/test/files/address_book.rlx +0 -12
  241. data/test/files/address_book.xml +0 -10
  242. data/test/files/bar/bar.xsd +0 -4
  243. data/test/files/dont_hurt_em_why.xml +0 -422
  244. data/test/files/encoding.html +0 -82
  245. data/test/files/encoding.xhtml +0 -84
  246. data/test/files/exslt.xml +0 -8
  247. data/test/files/exslt.xslt +0 -35
  248. data/test/files/foo/foo.xsd +0 -4
  249. data/test/files/metacharset.html +0 -10
  250. data/test/files/noencoding.html +0 -47
  251. data/test/files/po.xml +0 -32
  252. data/test/files/po.xsd +0 -66
  253. data/test/files/shift_jis.html +0 -10
  254. data/test/files/shift_jis.xml +0 -5
  255. data/test/files/snuggles.xml +0 -3
  256. data/test/files/staff.dtd +0 -10
  257. data/test/files/staff.xml +0 -59
  258. data/test/files/staff.xslt +0 -32
  259. data/test/files/test_document_url/bar.xml +0 -2
  260. data/test/files/test_document_url/document.dtd +0 -4
  261. data/test/files/test_document_url/document.xml +0 -6
  262. data/test/files/tlm.html +0 -850
  263. data/test/files/to_be_xincluded.xml +0 -2
  264. data/test/files/valid_bar.xml +0 -2
  265. data/test/files/xinclude.xml +0 -4
  266. data/test/helper.rb +0 -154
  267. data/test/html/sax/test_parser.rb +0 -141
  268. data/test/html/sax/test_parser_context.rb +0 -46
  269. data/test/html/test_builder.rb +0 -164
  270. data/test/html/test_document.rb +0 -552
  271. data/test/html/test_document_encoding.rb +0 -138
  272. data/test/html/test_document_fragment.rb +0 -261
  273. data/test/html/test_element_description.rb +0 -105
  274. data/test/html/test_named_characters.rb +0 -14
  275. data/test/html/test_node.rb +0 -196
  276. data/test/html/test_node_encoding.rb +0 -27
  277. data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +0 -14
  278. data/test/namespaces/test_namespaces_in_builder_doc.rb +0 -75
  279. data/test/namespaces/test_namespaces_in_created_doc.rb +0 -75
  280. data/test/namespaces/test_namespaces_in_parsed_doc.rb +0 -66
  281. data/test/test_convert_xpath.rb +0 -135
  282. data/test/test_css_cache.rb +0 -45
  283. data/test/test_encoding_handler.rb +0 -46
  284. data/test/test_memory_leak.rb +0 -156
  285. data/test/test_nokogiri.rb +0 -132
  286. data/test/test_reader.rb +0 -555
  287. data/test/test_soap4r_sax.rb +0 -52
  288. data/test/test_xslt_transforms.rb +0 -254
  289. data/test/xml/node/test_save_options.rb +0 -28
  290. data/test/xml/node/test_subclass.rb +0 -44
  291. data/test/xml/sax/test_parser.rb +0 -366
  292. data/test/xml/sax/test_parser_context.rb +0 -106
  293. data/test/xml/sax/test_push_parser.rb +0 -157
  294. data/test/xml/test_attr.rb +0 -64
  295. data/test/xml/test_attribute_decl.rb +0 -86
  296. data/test/xml/test_builder.rb +0 -306
  297. data/test/xml/test_c14n.rb +0 -151
  298. data/test/xml/test_cdata.rb +0 -48
  299. data/test/xml/test_comment.rb +0 -29
  300. data/test/xml/test_document.rb +0 -828
  301. data/test/xml/test_document_encoding.rb +0 -28
  302. data/test/xml/test_document_fragment.rb +0 -223
  303. data/test/xml/test_dtd.rb +0 -103
  304. data/test/xml/test_dtd_encoding.rb +0 -33
  305. data/test/xml/test_element_content.rb +0 -56
  306. data/test/xml/test_element_decl.rb +0 -73
  307. data/test/xml/test_entity_decl.rb +0 -122
  308. data/test/xml/test_entity_reference.rb +0 -245
  309. data/test/xml/test_namespace.rb +0 -95
  310. data/test/xml/test_node.rb +0 -1137
  311. data/test/xml/test_node_attributes.rb +0 -96
  312. data/test/xml/test_node_encoding.rb +0 -107
  313. data/test/xml/test_node_inheritance.rb +0 -32
  314. data/test/xml/test_node_reparenting.rb +0 -374
  315. data/test/xml/test_node_set.rb +0 -755
  316. data/test/xml/test_parse_options.rb +0 -64
  317. data/test/xml/test_processing_instruction.rb +0 -30
  318. data/test/xml/test_reader_encoding.rb +0 -142
  319. data/test/xml/test_relax_ng.rb +0 -60
  320. data/test/xml/test_schema.rb +0 -103
  321. data/test/xml/test_syntax_error.rb +0 -12
  322. data/test/xml/test_text.rb +0 -45
  323. data/test/xml/test_unparented_node.rb +0 -422
  324. data/test/xml/test_xinclude.rb +0 -83
  325. data/test/xml/test_xpath.rb +0 -295
  326. data/test/xslt/test_custom_functions.rb +0 -133
  327. data/test/xslt/test_exception_handling.rb +0 -37
  328. data/test_all +0 -81
@@ -1,64 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestParseOptions < Nokogiri::TestCase
6
- def test_new
7
- options = Nokogiri::XML::ParseOptions.new
8
- assert_equal 0, options.options
9
- end
10
-
11
- def test_to_i
12
- options = Nokogiri::XML::ParseOptions.new
13
- assert_equal 0, options.to_i
14
- end
15
-
16
- ParseOptions.constants.each do |constant|
17
- next if constant == 'STRICT'
18
- class_eval %{
19
- def test_predicate_#{constant.downcase}
20
- options = ParseOptions.new(ParseOptions::#{constant})
21
- assert options.#{constant.downcase}?
22
-
23
- assert ParseOptions.new.#{constant.downcase}.#{constant.downcase}?
24
- end
25
- }
26
- end
27
-
28
- def test_strict_noent
29
- options = ParseOptions.new.recover.noent
30
- assert !options.strict?
31
- end
32
-
33
- def test_new_with_argument
34
- options = Nokogiri::XML::ParseOptions.new 1 << 1
35
- assert_equal 1 << 1, options.options
36
- end
37
-
38
- def test_unsetting
39
- options = Nokogiri::XML::ParseOptions.new Nokogiri::XML::ParseOptions::DEFAULT_HTML
40
- assert options.nonet?
41
- assert options.recover?
42
- options.nononet.norecover
43
- assert ! options.nonet?
44
- assert ! options.recover?
45
- options.nonet.recover
46
- assert options.nonet?
47
- assert options.recover?
48
- end
49
-
50
- def test_chaining
51
- options = Nokogiri::XML::ParseOptions.new.recover.noent
52
- assert options.recover?
53
- assert options.noent?
54
- end
55
-
56
- def test_inspect
57
- options = Nokogiri::XML::ParseOptions.new.recover.noent
58
- ins = options.inspect
59
- assert_match(/recover/, ins)
60
- assert_match(/noent/, ins)
61
- end
62
- end
63
- end
64
- end
@@ -1,30 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestProcessingInstruction < Nokogiri::TestCase
6
- def setup
7
- super
8
- @xml = Nokogiri::XML.parse(File.read(XML_FILE), XML_FILE)
9
- end
10
-
11
- def test_type
12
- assert_equal(Node::PI_NODE, @xml.children[0].type)
13
- end
14
-
15
- def test_name
16
- assert_equal 'TEST-STYLE', @xml.children[0].name
17
- end
18
-
19
- def test_new
20
- assert ref = ProcessingInstruction.new(@xml, 'name', 'content')
21
- assert_instance_of ProcessingInstruction, ref
22
- end
23
-
24
- def test_many_new
25
- 100.times { ProcessingInstruction.new(@xml, 'foo', 'bar') }
26
- @xml.root << ProcessingInstruction.new(@xml, 'foo', 'bar')
27
- end
28
- end
29
- end
30
- end
@@ -1,142 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require "helper"
3
-
4
- module Nokogiri
5
- module XML
6
- if RUBY_VERSION =~ /^1\.9/
7
- class TestReaderEncoding < Nokogiri::TestCase
8
- def setup
9
- super
10
- @reader = Nokogiri::XML::Reader(
11
- File.read(XML_FILE),
12
- XML_FILE,
13
- 'UTF-8'
14
- )
15
- end
16
-
17
- def test_attribute_at
18
- @reader.each do |node|
19
- next unless attribute = node.attribute_at(0)
20
- assert_equal @reader.encoding, attribute.encoding.name
21
- end
22
- end
23
-
24
- def test_attributes
25
- @reader.each do |node|
26
- node.attributes.each do |k,v|
27
- assert_equal @reader.encoding, k.encoding.name
28
- assert_equal @reader.encoding, v.encoding.name
29
- end
30
- end
31
- end
32
-
33
- def test_attribute
34
- xml = <<-eoxml
35
- <x xmlns:tenderlove='http://tenderlovemaking.com/'>
36
- <tenderlove:foo awesome='true'>snuggles!</tenderlove:foo>
37
- </x>
38
- eoxml
39
- reader = Nokogiri::XML::Reader(xml, nil, 'UTF-8')
40
- reader.each do |node|
41
- next unless attribute = node.attribute('awesome')
42
- assert_equal reader.encoding, attribute.encoding.name
43
- end
44
- end
45
-
46
- def test_xml_version
47
- @reader.each do |node|
48
- next unless version = node.xml_version
49
- assert_equal @reader.encoding, version.encoding.name
50
- end
51
- end
52
-
53
- def test_lang
54
- xml = <<-eoxml
55
- <awesome>
56
- <p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
57
- <p xml:lang="ja">日本語が上手です</p>
58
- </awesome>
59
- eoxml
60
-
61
- reader = Nokogiri::XML::Reader(xml, nil, 'UTF-8')
62
- reader.each do |node|
63
- next unless lang = node.lang
64
- assert_equal reader.encoding, lang.encoding.name
65
- end
66
- end
67
-
68
- def test_value
69
- called = false
70
- @reader.each do |node|
71
- next unless value = node.value
72
- assert_equal @reader.encoding, value.encoding.name
73
- called = true
74
- end
75
- assert called
76
- end
77
-
78
- def test_prefix
79
- xml = <<-eoxml
80
- <x xmlns:edi='http://ecommerce.example.org/schema'>
81
- <edi:foo>hello</edi:foo>
82
- </x>
83
- eoxml
84
- reader = Nokogiri::XML::Reader(xml, nil, 'UTF-8')
85
- reader.each do |node|
86
- next unless prefix = node.prefix
87
- assert_equal reader.encoding, prefix.encoding.name
88
- end
89
- end
90
-
91
- def test_ns_uri
92
- xml = <<-eoxml
93
- <x xmlns:edi='http://ecommerce.example.org/schema'>
94
- <edi:foo>hello</edi:foo>
95
- </x>
96
- eoxml
97
- reader = Nokogiri::XML::Reader(xml, nil, 'UTF-8')
98
- reader.each do |node|
99
- next unless uri = node.namespace_uri
100
- assert_equal reader.encoding, uri.encoding.name
101
- end
102
- end
103
-
104
- def test_local_name
105
- xml = <<-eoxml
106
- <x xmlns:edi='http://ecommerce.example.org/schema'>
107
- <edi:foo>hello</edi:foo>
108
- </x>
109
- eoxml
110
- reader = Nokogiri::XML::Reader(xml, nil, 'UTF-8')
111
- reader.each do |node|
112
- next unless lname = node.local_name
113
- assert_equal reader.encoding, lname.encoding.name
114
- end
115
- end
116
-
117
- def test_name
118
- @reader.each do |node|
119
- next unless name = node.name
120
- assert_equal @reader.encoding, name.encoding.name
121
- end
122
- end
123
-
124
- def test_value_lookup_segfault
125
- skip("JRuby doesn't do GC.") if Nokogiri.jruby?
126
- old_stress = GC.stress
127
-
128
- begin
129
- GC.stress = true
130
-
131
- while node = @reader.read
132
- nodes = node.send(:attr_nodes)
133
- nodes.first.name if nodes.first
134
- end
135
- ensure
136
- GC.stress = old_stress
137
- end
138
- end
139
- end
140
- end
141
- end
142
- end
@@ -1,60 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestRelaxNG < Nokogiri::TestCase
6
- def setup
7
- assert @schema = Nokogiri::XML::RelaxNG(File.read(ADDRESS_SCHEMA_FILE))
8
- end
9
-
10
- def test_parse_with_memory
11
- assert_instance_of Nokogiri::XML::RelaxNG, @schema
12
- assert_equal 0, @schema.errors.length
13
- end
14
-
15
- def test_new
16
- assert schema = Nokogiri::XML::RelaxNG.new(
17
- File.read(ADDRESS_SCHEMA_FILE))
18
- assert_instance_of Nokogiri::XML::RelaxNG, schema
19
- end
20
-
21
- def test_parse_with_io
22
- xsd = nil
23
- File.open(ADDRESS_SCHEMA_FILE, 'rb') { |f|
24
- assert xsd = Nokogiri::XML::RelaxNG(f)
25
- }
26
- assert_equal 0, xsd.errors.length
27
- end
28
-
29
- def test_parse_with_errors
30
- xml = File.read(ADDRESS_SCHEMA_FILE).sub(/name="/, 'name=')
31
- assert_raises(Nokogiri::XML::SyntaxError) {
32
- Nokogiri::XML::RelaxNG(xml)
33
- }
34
- end
35
-
36
- def test_validate_document
37
- doc = Nokogiri::XML(File.read(ADDRESS_XML_FILE))
38
- assert errors = @schema.validate(doc)
39
- assert_equal 0, errors.length
40
- end
41
-
42
- def test_validate_invalid_document
43
- # Empty address book is not allowed
44
- read_doc = '<addressBook></addressBook>'
45
-
46
- assert errors = @schema.validate(Nokogiri::XML(read_doc))
47
- assert_equal 1, errors.length
48
- end
49
-
50
- def test_valid?
51
- valid_doc = Nokogiri::XML(File.read(ADDRESS_XML_FILE))
52
-
53
- invalid_doc = Nokogiri::XML('<addressBook></addressBook>')
54
-
55
- assert(@schema.valid?(valid_doc))
56
- assert(!@schema.valid?(invalid_doc))
57
- end
58
- end
59
- end
60
- end
@@ -1,103 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestSchema < Nokogiri::TestCase
6
- def setup
7
- assert @xsd = Nokogiri::XML::Schema(File.read(PO_SCHEMA_FILE))
8
- end
9
-
10
- def test_schema_from_document
11
- doc = Nokogiri::XML(File.open(PO_SCHEMA_FILE))
12
- assert doc
13
- xsd = Nokogiri::XML::Schema.from_document doc
14
- assert_instance_of Nokogiri::XML::Schema, xsd
15
- end
16
-
17
- def test_schema_from_document_node
18
- doc = Nokogiri::XML(File.open(PO_SCHEMA_FILE))
19
- assert doc
20
- xsd = Nokogiri::XML::Schema.from_document doc.root
21
- assert_instance_of Nokogiri::XML::Schema, xsd
22
- end
23
-
24
- def test_schema_validates_with_relative_paths
25
- xsd = File.join(ASSETS_DIR, 'foo', 'foo.xsd')
26
- xml = File.join(ASSETS_DIR, 'valid_bar.xml')
27
- doc = Nokogiri::XML(File.open(xsd))
28
- xsd = Nokogiri::XML::Schema.from_document doc
29
-
30
- doc = Nokogiri::XML(File.open(xml))
31
- assert xsd.valid?(doc)
32
- end
33
-
34
- def test_parse_with_memory
35
- assert_instance_of Nokogiri::XML::Schema, @xsd
36
- assert_equal 0, @xsd.errors.length
37
- end
38
-
39
- def test_new
40
- assert xsd = Nokogiri::XML::Schema.new(File.read(PO_SCHEMA_FILE))
41
- assert_instance_of Nokogiri::XML::Schema, xsd
42
- end
43
-
44
- def test_parse_with_io
45
- xsd = nil
46
- File.open(PO_SCHEMA_FILE, 'rb') { |f|
47
- assert xsd = Nokogiri::XML::Schema(f)
48
- }
49
- assert_equal 0, xsd.errors.length
50
- end
51
-
52
- def test_parse_with_errors
53
- xml = File.read(PO_SCHEMA_FILE).sub(/name="/, 'name=')
54
- assert_raises(Nokogiri::XML::SyntaxError) {
55
- Nokogiri::XML::Schema(xml)
56
- }
57
- end
58
-
59
- def test_validate_document
60
- doc = Nokogiri::XML(File.read(PO_XML_FILE))
61
- assert errors = @xsd.validate(doc)
62
- assert_equal 0, errors.length
63
- end
64
-
65
- def test_validate_file
66
- assert errors = @xsd.validate(PO_XML_FILE)
67
- assert_equal 0, errors.length
68
- end
69
-
70
- def test_validate_invalid_document
71
- read_doc = File.read(PO_XML_FILE).gsub(/<city>[^<]*<\/city>/, '')
72
-
73
- assert errors = @xsd.validate(Nokogiri::XML(read_doc))
74
- assert_equal 2, errors.length
75
- end
76
-
77
- def test_validate_non_document
78
- string = File.read(PO_XML_FILE)
79
- assert_raise(ArgumentError) {@xsd.validate(string)}
80
- end
81
-
82
- def test_valid?
83
- valid_doc = Nokogiri::XML(File.read(PO_XML_FILE))
84
-
85
- invalid_doc = Nokogiri::XML(
86
- File.read(PO_XML_FILE).gsub(/<city>[^<]*<\/city>/, '')
87
- )
88
-
89
- assert(@xsd.valid?(valid_doc))
90
- assert(!@xsd.valid?(invalid_doc))
91
- end
92
-
93
- def test_xsd_with_dtd
94
- Dir.chdir(File.join(ASSETS_DIR, 'saml')) do
95
- # works
96
- Nokogiri::XML::Schema(IO.read('xmldsig_schema.xsd'))
97
- # was not working
98
- Nokogiri::XML::Schema(IO.read('saml20protocol_schema.xsd'))
99
- end
100
- end
101
- end
102
- end
103
- end
@@ -1,12 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestSyntaxError < Nokogiri::TestCase
6
- def test_new
7
- error = Nokogiri::XML::SyntaxError.new 'hello'
8
- assert_equal 'hello', error.message
9
- end
10
- end
11
- end
12
- end
@@ -1,45 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestText < Nokogiri::TestCase
6
- def test_css_path
7
- doc = Nokogiri.XML "<root> foo <a>something</a> bar bazz </root>"
8
- node = doc.root.children[2]
9
- assert_instance_of Nokogiri::XML::Text, node
10
- assert_equal node, doc.at_css(node.css_path)
11
- end
12
-
13
- def test_inspect
14
- node = Text.new('hello world', Document.new)
15
- assert_equal "#<#{node.class.name}:#{sprintf("0x%x",node.object_id)} #{node.text.inspect}>", node.inspect
16
- end
17
-
18
- def test_new
19
- node = Text.new('hello world', Document.new)
20
- assert node
21
- assert_equal('hello world', node.content)
22
- assert_instance_of Nokogiri::XML::Text, node
23
- end
24
-
25
- def test_lots_of_text
26
- 100.times { Text.new('hello world', Document.new) }
27
- end
28
-
29
- def test_new_without_document
30
- doc = Document.new
31
- node = Nokogiri::XML::Element.new('foo', doc)
32
-
33
- assert Text.new('hello world', node)
34
- end
35
-
36
- def test_content=
37
- node = Text.new('foo', Document.new)
38
- assert_equal('foo', node.content)
39
- node.content = '& <foo> &amp;'
40
- assert_equal('& <foo> &amp;', node.content)
41
- assert_equal('&amp; &lt;foo&gt; &amp;amp;', node.to_xml)
42
- end
43
- end
44
- end
45
- end