nokogiri 1.8.5 → 1.13.6

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 (356) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -21
  3. data/LICENSE-DEPENDENCIES.md +1159 -868
  4. data/LICENSE.md +5 -28
  5. data/README.md +196 -90
  6. data/bin/nokogiri +63 -50
  7. data/dependencies.yml +13 -59
  8. data/ext/nokogiri/depend +38 -358
  9. data/ext/nokogiri/extconf.rb +750 -420
  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 +119 -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 +228 -91
  18. data/ext/nokogiri/nokogiri.h +191 -89
  19. data/ext/nokogiri/test_global_handlers.c +40 -0
  20. data/ext/nokogiri/xml_attr.c +41 -36
  21. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  22. data/ext/nokogiri/xml_cdata.c +13 -18
  23. data/ext/nokogiri/xml_comment.c +19 -26
  24. data/ext/nokogiri/xml_document.c +291 -216
  25. data/ext/nokogiri/xml_document_fragment.c +12 -16
  26. data/ext/nokogiri/xml_dtd.c +56 -50
  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 +43 -18
  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 +61 -52
  33. data/ext/nokogiri/xml_node.c +1044 -616
  34. data/ext/nokogiri/xml_node_set.c +174 -162
  35. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  36. data/ext/nokogiri/xml_reader.c +226 -175
  37. data/ext/nokogiri/xml_relax_ng.c +52 -28
  38. data/ext/nokogiri/xml_sax_parser.c +112 -112
  39. data/ext/nokogiri/xml_sax_parser_context.c +112 -86
  40. data/ext/nokogiri/xml_sax_push_parser.c +36 -27
  41. data/ext/nokogiri/xml_schema.c +112 -33
  42. data/ext/nokogiri/xml_syntax_error.c +42 -21
  43. data/ext/nokogiri/xml_text.c +13 -17
  44. data/ext/nokogiri/xml_xpath_context.c +223 -115
  45. data/ext/nokogiri/xslt_stylesheet.c +265 -173
  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 +4875 -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/class_resolver.rb +67 -0
  92. data/lib/nokogiri/css/node.rb +10 -8
  93. data/lib/nokogiri/css/parser.rb +397 -377
  94. data/lib/nokogiri/css/parser.y +250 -245
  95. data/lib/nokogiri/css/parser_extras.rb +54 -49
  96. data/lib/nokogiri/css/syntax_error.rb +3 -1
  97. data/lib/nokogiri/css/tokenizer.rb +107 -104
  98. data/lib/nokogiri/css/tokenizer.rex +3 -2
  99. data/lib/nokogiri/css/xpath_visitor.rb +218 -91
  100. data/lib/nokogiri/css.rb +50 -17
  101. data/lib/nokogiri/decorators/slop.rb +9 -7
  102. data/lib/nokogiri/extension.rb +31 -0
  103. data/lib/nokogiri/gumbo.rb +15 -0
  104. data/lib/nokogiri/html.rb +38 -27
  105. data/lib/nokogiri/{html → html4}/builder.rb +4 -2
  106. data/lib/nokogiri/{html → html4}/document.rb +103 -105
  107. data/lib/nokogiri/html4/document_fragment.rb +54 -0
  108. data/lib/nokogiri/{html → html4}/element_description.rb +3 -1
  109. data/lib/nokogiri/html4/element_description_defaults.rb +578 -0
  110. data/lib/nokogiri/{html → html4}/entity_lookup.rb +4 -2
  111. data/lib/nokogiri/{html → html4}/sax/parser.rb +17 -16
  112. data/lib/nokogiri/html4/sax/parser_context.rb +20 -0
  113. data/lib/nokogiri/{html → html4}/sax/push_parser.rb +12 -11
  114. data/lib/nokogiri/html4.rb +46 -0
  115. data/lib/nokogiri/html5/document.rb +91 -0
  116. data/lib/nokogiri/html5/document_fragment.rb +83 -0
  117. data/lib/nokogiri/html5/node.rb +100 -0
  118. data/lib/nokogiri/html5.rb +478 -0
  119. data/lib/nokogiri/jruby/dependencies.rb +21 -0
  120. data/lib/nokogiri/syntax_error.rb +2 -0
  121. data/lib/nokogiri/version/constant.rb +6 -0
  122. data/lib/nokogiri/version/info.rb +222 -0
  123. data/lib/nokogiri/version.rb +3 -108
  124. data/lib/nokogiri/xml/attr.rb +6 -3
  125. data/lib/nokogiri/xml/attribute_decl.rb +3 -1
  126. data/lib/nokogiri/xml/builder.rb +97 -53
  127. data/lib/nokogiri/xml/cdata.rb +3 -1
  128. data/lib/nokogiri/xml/character_data.rb +2 -0
  129. data/lib/nokogiri/xml/document.rb +224 -86
  130. data/lib/nokogiri/xml/document_fragment.rb +57 -44
  131. data/lib/nokogiri/xml/dtd.rb +4 -2
  132. data/lib/nokogiri/xml/element_content.rb +2 -0
  133. data/lib/nokogiri/xml/element_decl.rb +3 -1
  134. data/lib/nokogiri/xml/entity_decl.rb +4 -2
  135. data/lib/nokogiri/xml/entity_reference.rb +2 -0
  136. data/lib/nokogiri/xml/namespace.rb +3 -0
  137. data/lib/nokogiri/xml/node/save_options.rb +10 -5
  138. data/lib/nokogiri/xml/node.rb +895 -377
  139. data/lib/nokogiri/xml/node_set.rb +92 -65
  140. data/lib/nokogiri/xml/notation.rb +13 -0
  141. data/lib/nokogiri/xml/parse_options.rb +22 -8
  142. data/lib/nokogiri/xml/pp/character_data.rb +9 -6
  143. data/lib/nokogiri/xml/pp/node.rb +25 -26
  144. data/lib/nokogiri/xml/pp.rb +4 -2
  145. data/lib/nokogiri/xml/processing_instruction.rb +3 -1
  146. data/lib/nokogiri/xml/reader.rb +23 -28
  147. data/lib/nokogiri/xml/relax_ng.rb +8 -2
  148. data/lib/nokogiri/xml/sax/document.rb +45 -49
  149. data/lib/nokogiri/xml/sax/parser.rb +38 -34
  150. data/lib/nokogiri/xml/sax/parser_context.rb +8 -3
  151. data/lib/nokogiri/xml/sax/push_parser.rb +6 -5
  152. data/lib/nokogiri/xml/sax.rb +6 -4
  153. data/lib/nokogiri/xml/schema.rb +19 -9
  154. data/lib/nokogiri/xml/searchable.rb +112 -72
  155. data/lib/nokogiri/xml/syntax_error.rb +6 -4
  156. data/lib/nokogiri/xml/text.rb +2 -0
  157. data/lib/nokogiri/xml/xpath/syntax_error.rb +4 -2
  158. data/lib/nokogiri/xml/xpath.rb +15 -4
  159. data/lib/nokogiri/xml/xpath_context.rb +3 -3
  160. data/lib/nokogiri/xml.rb +38 -37
  161. data/lib/nokogiri/xslt/stylesheet.rb +3 -1
  162. data/lib/nokogiri/xslt.rb +29 -20
  163. data/lib/nokogiri.rb +49 -65
  164. data/lib/xsd/xmlparser/nokogiri.rb +26 -24
  165. data/patches/libxml2/0001-Remove-script-macro-support.patch +40 -0
  166. data/patches/libxml2/0002-Update-entities-to-remove-handling-of-ssi.patch +44 -0
  167. data/patches/libxml2/0003-libxml2.la-is-in-top_builddir.patch +25 -0
  168. data/patches/libxml2/0004-use-glibc-strlen.patch +53 -0
  169. data/patches/libxml2/0005-avoid-isnan-isinf.patch +81 -0
  170. data/patches/libxml2/0006-update-automake-files-for-arm64.patch +3040 -0
  171. data/patches/libxml2/0008-htmlParseComment-handle-abruptly-closed-comments.patch +61 -0
  172. data/patches/libxml2/0009-allow-wildcard-namespaces.patch +77 -0
  173. data/patches/libxslt/0001-update-automake-files-for-arm64.patch +3037 -0
  174. data/ports/archives/libxml2-2.9.14.tar.xz +0 -0
  175. data/ports/archives/libxslt-1.1.35.tar.xz +0 -0
  176. metadata +220 -266
  177. data/.autotest +0 -22
  178. data/.cross_rubies +0 -8
  179. data/.editorconfig +0 -17
  180. data/.gemtest +0 -0
  181. data/.travis.yml +0 -63
  182. data/CHANGELOG.md +0 -1368
  183. data/CONTRIBUTING.md +0 -42
  184. data/C_CODING_STYLE.rdoc +0 -33
  185. data/Gemfile-libxml-ruby +0 -3
  186. data/Manifest.txt +0 -370
  187. data/ROADMAP.md +0 -111
  188. data/Rakefile +0 -348
  189. data/SECURITY.md +0 -19
  190. data/STANDARD_RESPONSES.md +0 -47
  191. data/Y_U_NO_GEMSPEC.md +0 -155
  192. data/appveyor.yml +0 -29
  193. data/build_all +0 -44
  194. data/ext/nokogiri/html_document.c +0 -170
  195. data/ext/nokogiri/html_document.h +0 -10
  196. data/ext/nokogiri/html_element_description.c +0 -279
  197. data/ext/nokogiri/html_element_description.h +0 -10
  198. data/ext/nokogiri/html_entity_lookup.c +0 -32
  199. data/ext/nokogiri/html_entity_lookup.h +0 -8
  200. data/ext/nokogiri/html_sax_parser_context.c +0 -116
  201. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  202. data/ext/nokogiri/html_sax_push_parser.c +0 -87
  203. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  204. data/ext/nokogiri/xml_attr.h +0 -9
  205. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  206. data/ext/nokogiri/xml_cdata.h +0 -9
  207. data/ext/nokogiri/xml_comment.h +0 -9
  208. data/ext/nokogiri/xml_document.h +0 -23
  209. data/ext/nokogiri/xml_document_fragment.h +0 -10
  210. data/ext/nokogiri/xml_dtd.h +0 -10
  211. data/ext/nokogiri/xml_element_content.h +0 -10
  212. data/ext/nokogiri/xml_element_decl.h +0 -9
  213. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  214. data/ext/nokogiri/xml_entity_decl.h +0 -10
  215. data/ext/nokogiri/xml_entity_reference.h +0 -9
  216. data/ext/nokogiri/xml_io.c +0 -61
  217. data/ext/nokogiri/xml_io.h +0 -11
  218. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  219. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  220. data/ext/nokogiri/xml_namespace.h +0 -15
  221. data/ext/nokogiri/xml_node.h +0 -13
  222. data/ext/nokogiri/xml_node_set.h +0 -12
  223. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  224. data/ext/nokogiri/xml_reader.h +0 -10
  225. data/ext/nokogiri/xml_relax_ng.h +0 -9
  226. data/ext/nokogiri/xml_sax_parser.h +0 -39
  227. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  228. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  229. data/ext/nokogiri/xml_schema.h +0 -9
  230. data/ext/nokogiri/xml_syntax_error.h +0 -13
  231. data/ext/nokogiri/xml_text.h +0 -9
  232. data/ext/nokogiri/xml_xpath_context.h +0 -10
  233. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  234. data/lib/nokogiri/html/document_fragment.rb +0 -49
  235. data/lib/nokogiri/html/element_description_defaults.rb +0 -671
  236. data/lib/nokogiri/html/sax/parser_context.rb +0 -16
  237. data/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +0 -78
  238. data/patches/libxml2/0002-Fix-nullptr-deref-with-XPath-logic-ops.patch +0 -54
  239. data/patches/libxml2/0003-Fix-infinite-loop-in-LZMA-decompression.patch +0 -50
  240. data/patches/sort-patches-by-date +0 -25
  241. data/ports/archives/libxml2-2.9.8.tar.gz +0 -0
  242. data/ports/archives/libxslt-1.1.32.tar.gz +0 -0
  243. data/suppressions/README.txt +0 -1
  244. data/suppressions/nokogiri_ruby-2.supp +0 -10
  245. data/tasks/test.rb +0 -100
  246. data/test/css/test_nthiness.rb +0 -226
  247. data/test/css/test_parser.rb +0 -386
  248. data/test/css/test_tokenizer.rb +0 -215
  249. data/test/css/test_xpath_visitor.rb +0 -96
  250. data/test/decorators/test_slop.rb +0 -23
  251. data/test/files/2ch.html +0 -108
  252. data/test/files/GH_1042.html +0 -18
  253. data/test/files/address_book.rlx +0 -12
  254. data/test/files/address_book.xml +0 -10
  255. data/test/files/atom.xml +0 -344
  256. data/test/files/bar/bar.xsd +0 -4
  257. data/test/files/bogus.xml +0 -0
  258. data/test/files/dont_hurt_em_why.xml +0 -422
  259. data/test/files/encoding.html +0 -82
  260. data/test/files/encoding.xhtml +0 -84
  261. data/test/files/exslt.xml +0 -8
  262. data/test/files/exslt.xslt +0 -35
  263. data/test/files/foo/foo.xsd +0 -4
  264. data/test/files/metacharset.html +0 -10
  265. data/test/files/namespace_pressure_test.xml +0 -1684
  266. data/test/files/noencoding.html +0 -47
  267. data/test/files/po.xml +0 -32
  268. data/test/files/po.xsd +0 -66
  269. data/test/files/saml/saml20assertion_schema.xsd +0 -283
  270. data/test/files/saml/saml20protocol_schema.xsd +0 -302
  271. data/test/files/saml/xenc_schema.xsd +0 -146
  272. data/test/files/saml/xmldsig_schema.xsd +0 -318
  273. data/test/files/shift_jis.html +0 -10
  274. data/test/files/shift_jis.xml +0 -5
  275. data/test/files/shift_jis_no_charset.html +0 -9
  276. data/test/files/slow-xpath.xml +0 -25509
  277. data/test/files/snuggles.xml +0 -3
  278. data/test/files/staff.dtd +0 -10
  279. data/test/files/staff.xml +0 -59
  280. data/test/files/staff.xslt +0 -32
  281. data/test/files/test_document_url/bar.xml +0 -2
  282. data/test/files/test_document_url/document.dtd +0 -4
  283. data/test/files/test_document_url/document.xml +0 -6
  284. data/test/files/tlm.html +0 -851
  285. data/test/files/to_be_xincluded.xml +0 -2
  286. data/test/files/valid_bar.xml +0 -2
  287. data/test/files/xinclude.xml +0 -4
  288. data/test/helper.rb +0 -271
  289. data/test/html/sax/test_parser.rb +0 -168
  290. data/test/html/sax/test_parser_context.rb +0 -46
  291. data/test/html/sax/test_parser_text.rb +0 -163
  292. data/test/html/sax/test_push_parser.rb +0 -87
  293. data/test/html/test_attributes.rb +0 -85
  294. data/test/html/test_builder.rb +0 -164
  295. data/test/html/test_document.rb +0 -712
  296. data/test/html/test_document_encoding.rb +0 -143
  297. data/test/html/test_document_fragment.rb +0 -310
  298. data/test/html/test_element_description.rb +0 -105
  299. data/test/html/test_named_characters.rb +0 -14
  300. data/test/html/test_node.rb +0 -212
  301. data/test/html/test_node_encoding.rb +0 -91
  302. data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +0 -14
  303. data/test/namespaces/test_namespaces_aliased_default.rb +0 -24
  304. data/test/namespaces/test_namespaces_in_builder_doc.rb +0 -75
  305. data/test/namespaces/test_namespaces_in_cloned_doc.rb +0 -31
  306. data/test/namespaces/test_namespaces_in_created_doc.rb +0 -75
  307. data/test/namespaces/test_namespaces_in_parsed_doc.rb +0 -80
  308. data/test/namespaces/test_namespaces_preservation.rb +0 -31
  309. data/test/test_convert_xpath.rb +0 -135
  310. data/test/test_css_cache.rb +0 -47
  311. data/test/test_encoding_handler.rb +0 -48
  312. data/test/test_memory_leak.rb +0 -156
  313. data/test/test_nokogiri.rb +0 -138
  314. data/test/test_soap4r_sax.rb +0 -52
  315. data/test/test_xslt_transforms.rb +0 -314
  316. data/test/xml/node/test_save_options.rb +0 -28
  317. data/test/xml/node/test_subclass.rb +0 -44
  318. data/test/xml/sax/test_parser.rb +0 -402
  319. data/test/xml/sax/test_parser_context.rb +0 -115
  320. data/test/xml/sax/test_parser_text.rb +0 -202
  321. data/test/xml/sax/test_push_parser.rb +0 -265
  322. data/test/xml/test_attr.rb +0 -74
  323. data/test/xml/test_attribute_decl.rb +0 -86
  324. data/test/xml/test_builder.rb +0 -341
  325. data/test/xml/test_c14n.rb +0 -180
  326. data/test/xml/test_cdata.rb +0 -54
  327. data/test/xml/test_comment.rb +0 -40
  328. data/test/xml/test_document.rb +0 -982
  329. data/test/xml/test_document_encoding.rb +0 -31
  330. data/test/xml/test_document_fragment.rb +0 -298
  331. data/test/xml/test_dtd.rb +0 -187
  332. data/test/xml/test_dtd_encoding.rb +0 -31
  333. data/test/xml/test_element_content.rb +0 -56
  334. data/test/xml/test_element_decl.rb +0 -73
  335. data/test/xml/test_entity_decl.rb +0 -122
  336. data/test/xml/test_entity_reference.rb +0 -262
  337. data/test/xml/test_namespace.rb +0 -96
  338. data/test/xml/test_node.rb +0 -1325
  339. data/test/xml/test_node_attributes.rb +0 -115
  340. data/test/xml/test_node_encoding.rb +0 -75
  341. data/test/xml/test_node_inheritance.rb +0 -32
  342. data/test/xml/test_node_reparenting.rb +0 -592
  343. data/test/xml/test_node_set.rb +0 -809
  344. data/test/xml/test_parse_options.rb +0 -64
  345. data/test/xml/test_processing_instruction.rb +0 -30
  346. data/test/xml/test_reader.rb +0 -620
  347. data/test/xml/test_reader_encoding.rb +0 -134
  348. data/test/xml/test_relax_ng.rb +0 -60
  349. data/test/xml/test_schema.rb +0 -142
  350. data/test/xml/test_syntax_error.rb +0 -36
  351. data/test/xml/test_text.rb +0 -60
  352. data/test/xml/test_unparented_node.rb +0 -483
  353. data/test/xml/test_xinclude.rb +0 -83
  354. data/test/xml/test_xpath.rb +0 -470
  355. data/test/xslt/test_custom_functions.rb +0 -133
  356. data/test/xslt/test_exception_handling.rb +0 -37
@@ -1,122 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestEntityDecl < Nokogiri::TestCase
6
- def setup
7
- super
8
- @xml = Nokogiri::XML(<<-eoxml)
9
- <?xml version="1.0"?><?TEST-STYLE PIDATA?>
10
- <!DOCTYPE staff SYSTEM "staff.dtd" [
11
- <!ENTITY ent1 "es">
12
- <!ENTITY nocontent "">
13
- ]>
14
- <root />
15
- eoxml
16
-
17
- @entities = @xml.internal_subset.children
18
- @entity_decl = @entities.first
19
- end
20
-
21
- def test_constants
22
- assert_equal 1, EntityDecl::INTERNAL_GENERAL
23
- assert_equal 2, EntityDecl::EXTERNAL_GENERAL_PARSED
24
- assert_equal 3, EntityDecl::EXTERNAL_GENERAL_UNPARSED
25
- assert_equal 4, EntityDecl::INTERNAL_PARAMETER
26
- assert_equal 5, EntityDecl::EXTERNAL_PARAMETER
27
- assert_equal 6, EntityDecl::INTERNAL_PREDEFINED
28
- end
29
-
30
- def test_create_typed_entity
31
- entity = @xml.create_entity(
32
- 'foo', EntityDecl::INTERNAL_GENERAL, nil, nil, nil
33
- )
34
- assert_equal EntityDecl::INTERNAL_GENERAL, entity.entity_type
35
- assert_equal 'foo', entity.name
36
- end
37
-
38
- def test_new
39
- entity = Nokogiri::XML::EntityDecl.new(
40
- 'foo', @xml, EntityDecl::INTERNAL_GENERAL, nil, nil, nil
41
- )
42
- assert_equal EntityDecl::INTERNAL_GENERAL, entity.entity_type
43
- assert_equal 'foo', entity.name
44
- end
45
-
46
- def test_create_default_args
47
- entity = @xml.create_entity('foo')
48
- assert_equal EntityDecl::INTERNAL_GENERAL, entity.entity_type
49
- assert_equal 'foo', entity.name
50
- end
51
-
52
- def test_external_id
53
- assert_nil @entity_decl.external_id
54
- end
55
-
56
- def test_system_id
57
- assert_nil @entity_decl.system_id
58
- end
59
-
60
- def test_entity_type
61
- assert_equal 1, @entity_decl.entity_type
62
- end
63
-
64
- def test_original_content
65
- assert_equal "es", @entity_decl.original_content
66
- if Nokogiri.jruby?
67
- assert_nil @entities[1].original_content
68
- else
69
- assert_equal "", @entities[1].original_content
70
- end
71
- end
72
-
73
- def test_content
74
- assert_equal "es", @entity_decl.content
75
- if Nokogiri.jruby?
76
- assert_nil @entities[1].content
77
- else
78
- assert_equal "", @entities[1].content
79
- end
80
- end
81
-
82
- def test_type
83
- assert_equal 17, @entities.first.type
84
- end
85
-
86
- def test_class
87
- assert_instance_of Nokogiri::XML::EntityDecl, @entities.first
88
- end
89
-
90
- def test_attributes
91
- assert_raise NoMethodError do
92
- @entity_decl.attributes
93
- end
94
- end
95
-
96
- def test_namespace
97
- assert_raise NoMethodError do
98
- @entity_decl.namespace
99
- end
100
- end
101
-
102
- def test_namespace_definitions
103
- assert_raise NoMethodError do
104
- @entity_decl.namespace_definitions
105
- end
106
- end
107
-
108
- def test_line
109
- assert_raise NoMethodError do
110
- @entity_decl.line
111
- end
112
- end
113
-
114
- def test_inspect
115
- assert_equal(
116
- "#<#{@entity_decl.class.name}:#{sprintf("0x%x", @entity_decl.object_id)} #{@entity_decl.to_s.inspect}>",
117
- @entity_decl.inspect
118
- )
119
- end
120
- end
121
- end
122
- end
@@ -1,262 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestEntityReference < Nokogiri::TestCase
6
- def setup
7
- super
8
- @xml = Nokogiri::XML(File.open(XML_FILE), XML_FILE)
9
- end
10
-
11
- def test_new
12
- assert ref = EntityReference.new(@xml, 'ent4')
13
- assert_instance_of EntityReference, ref
14
- end
15
-
16
- def test_many_references
17
- 100.times { EntityReference.new(@xml, 'foo') }
18
- end
19
-
20
- def test_newline_node
21
- # issue 719
22
- xml = <<EOF
23
- <?xml version="1.0" ?>
24
- <item></item>
25
- EOF
26
- doc = Nokogiri::XML xml
27
- lf_node = Nokogiri::XML::EntityReference.new(doc, "#xa")
28
- doc.xpath('/item').first.add_child(lf_node)
29
- assert_match(/&#xa;/, doc.to_xml)
30
- end
31
-
32
- def test_children_should_always_be_empty
33
- # https://github.com/sparklemotion/nokogiri/issues/1238
34
- #
35
- # libxml2 will create a malformed child node for predefined
36
- # entities. because any use of that child is likely to cause a
37
- # segfault, we shall pretend that it doesn't exist.
38
- entity = Nokogiri::XML::EntityReference.new(@xml, "amp")
39
- assert_equal 0, entity.children.length
40
- entity.inspect # should not segfault
41
- end
42
- end
43
-
44
- module Common
45
- PATH = 'test/files/test_document_url/'
46
-
47
- attr_accessor :path, :parser
48
-
49
- def xml_document
50
- File.join path, 'document.xml'
51
- end
52
-
53
- def self.included base
54
- def base.test_relative_and_absolute_path method_name, &block
55
- test_relative_path method_name, &block
56
- test_absolute_path method_name, &block
57
- end
58
-
59
- def base.test_absolute_path method_name, &block
60
- define_method "#{method_name}_with_absolute_path" do
61
- self.path = "#{File.expand_path PATH}/"
62
- instance_eval(&block)
63
- end
64
- end
65
-
66
- def base.test_relative_path method_name, &block
67
- define_method method_name do
68
- self.path = PATH
69
- instance_eval(&block)
70
- end
71
- end
72
- end
73
- end
74
-
75
- class TestDOMEntityReference < Nokogiri::TestCase
76
- include Common
77
-
78
- def setup
79
- super
80
- @parser = Nokogiri::XML::Document
81
- end
82
-
83
- test_relative_and_absolute_path :test_dom_entity_reference_with_dtdloda do
84
- # Make sure that we can parse entity references and include them in the document
85
- html = File.read xml_document
86
- doc = @parser.parse html, path do |cfg|
87
- cfg.default_xml
88
- cfg.dtdload
89
- cfg.noent
90
- end
91
- assert_equal [], doc.errors
92
- assert_equal "foobar", doc.xpath('//blah').text
93
- end
94
-
95
- test_relative_and_absolute_path :test_dom_entity_reference_with_dtdvalid do
96
- # Make sure that we can parse entity references and include them in the document
97
- html = File.read xml_document
98
- doc = @parser.parse html, path do |cfg|
99
- cfg.default_xml
100
- cfg.dtdvalid
101
- cfg.noent
102
- end
103
- assert_equal [], doc.errors
104
- assert_equal "foobar", doc.xpath('//blah').text
105
- end
106
-
107
- test_absolute_path :test_dom_dtd_loading_with_absolute_path do
108
- # Make sure that we can parse entity references and include them in the document
109
- html = %Q[<?xml version="1.0" encoding="UTF-8" ?>
110
- <!DOCTYPE document SYSTEM "#{path}/document.dtd">
111
- <document>
112
- <body>&bar;</body>
113
- </document>
114
- ]
115
- doc = @parser.parse html, xml_document do |cfg|
116
- cfg.default_xml
117
- cfg.dtdvalid
118
- cfg.noent
119
- end
120
- assert_equal [], doc.errors
121
- assert_equal "foobar", doc.xpath('//blah').text
122
- end
123
-
124
- test_relative_and_absolute_path :test_dom_entity_reference_with_io do
125
- # Make sure that we can parse entity references and include them in the document
126
- html = File.open xml_document
127
- doc = @parser.parse html, nil do |cfg|
128
- cfg.default_xml
129
- cfg.dtdload
130
- cfg.noent
131
- end
132
- assert_equal [], doc.errors
133
- assert_equal "foobar", doc.xpath('//blah').text
134
- end
135
-
136
- test_relative_and_absolute_path :test_dom_entity_reference_without_noent do
137
- # Make sure that we don't include entity references unless NOENT is set to true
138
- html = File.read xml_document
139
- doc = @parser.parse html, path do |cfg|
140
- cfg.default_xml
141
- cfg.dtdload
142
- end
143
- assert_equal [], doc.errors
144
- assert_kind_of Nokogiri::XML::EntityReference, doc.xpath('//body').first.children.first
145
- end
146
-
147
- test_relative_and_absolute_path :test_dom_entity_reference_without_dtdload do
148
- # Make sure that we don't include entity references unless NOENT is set to true
149
- html = File.read xml_document
150
- doc = @parser.parse html, path do |cfg|
151
- cfg.default_xml
152
- end
153
- assert_kind_of Nokogiri::XML::EntityReference, doc.xpath('//body').first.children.first
154
- if Nokogiri.uses_libxml?
155
- assert_equal ["5:14: ERROR: Entity 'bar' not defined"], doc.errors.map(&:to_s)
156
- end
157
- end
158
-
159
- test_relative_and_absolute_path :test_document_dtd_loading_with_nonet do
160
- # Make sure that we don't include remote entities unless NOENT is set to true
161
- html = %Q[<?xml version="1.0" encoding="UTF-8" ?>
162
- <!DOCTYPE document SYSTEM "http://foo.bar.com/">
163
- <document>
164
- <body>&bar;</body>
165
- </document>
166
- ]
167
- doc = @parser.parse html, path do |cfg|
168
- cfg.default_xml
169
- cfg.dtdload
170
- end
171
- assert_kind_of Nokogiri::XML::EntityReference, doc.xpath('//body').first.children.first
172
- if Nokogiri.uses_libxml?
173
- assert_equal ["ERROR: Attempt to load network entity http://foo.bar.com/", "4:34: ERROR: Entity 'bar' not defined"], doc.errors.map(&:to_s)
174
- else
175
- assert_equal ["Attempt to load network entity http://foo.bar.com/"], doc.errors.map(&:to_s)
176
- end
177
- end
178
- # TODO: can we retreive a resource pointing to localhost when NONET is set to true ?
179
- end
180
-
181
- class TestSaxEntityReference < Nokogiri::SAX::TestCase
182
- include Common
183
-
184
- def setup
185
- super
186
- @parser = XML::SAX::Parser.new(Doc.new) do |ctx|
187
- ctx.replace_entities = true
188
- end
189
- end
190
-
191
- test_relative_and_absolute_path :test_sax_entity_reference do
192
- # Make sure that we can parse entity references and include them in the document
193
- html = File.read xml_document
194
- @parser.parse html
195
- refute_nil @parser.document.errors
196
- assert_equal ["Entity 'bar' not defined"], @parser.document.errors.map(&:to_s).map(&:strip)
197
- end
198
-
199
- test_relative_and_absolute_path :test_more_sax_entity_reference do
200
- # Make sure that we don't include entity references unless NOENT is set to true
201
- html = %Q[<?xml version="1.0" encoding="UTF-8" ?>
202
- <!DOCTYPE document SYSTEM "http://foo.bar.com/">
203
- <document>
204
- <body>&bar;</body>
205
- </document>
206
- ]
207
- @parser.parse html
208
- refute_nil @parser.document.errors
209
- assert_equal ["Entity 'bar' not defined"], @parser.document.errors.map(&:to_s).map(&:strip)
210
- end
211
- end
212
-
213
- class TestReaderEntityReference < Nokogiri::TestCase
214
- include Common
215
-
216
- def setup
217
- super
218
- end
219
-
220
- test_relative_and_absolute_path :test_reader_entity_reference do
221
- # Make sure that we can parse entity references and include them in the document
222
- html = File.read xml_document
223
- reader = Nokogiri::XML::Reader html, path do |cfg|
224
- cfg.default_xml
225
- cfg.dtdload
226
- cfg.noent
227
- end
228
- nodes = []
229
- reader.each { |n| nodes << n.value }
230
- assert_equal ['foobar'], nodes.compact.map(&:strip).reject(&:empty?)
231
- end
232
-
233
- test_relative_and_absolute_path :test_reader_entity_reference_without_noent do
234
- # Make sure that we can parse entity references and include them in the document
235
- html = File.read xml_document
236
- reader = Nokogiri::XML::Reader html, path do |cfg|
237
- cfg.default_xml
238
- cfg.dtdload
239
- end
240
- nodes = []
241
- reader.each { |n| nodes << n.value }
242
- assert_equal [], nodes.compact.map(&:strip).reject(&:empty?)
243
- end
244
-
245
- test_relative_and_absolute_path :test_reader_entity_reference_without_dtdload do
246
- html = File.read xml_document
247
- reader = Nokogiri::XML::Reader html, path do |cfg|
248
- cfg.default_xml
249
- end
250
- if Nokogiri.uses_libxml? && Nokogiri::LIBXML_PARSER_VERSION.to_i >= 20900
251
- # Unknown entity is not fatal in libxml2 >= 2.9
252
- assert_equal 8, reader.count
253
- else
254
- assert_raises(Nokogiri::XML::SyntaxError) {
255
- assert_equal 5, reader.count
256
- }
257
- end
258
- assert_operator reader.errors.size, :>, 0
259
- end
260
- end
261
- end
262
- end
@@ -1,96 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestNamespace < Nokogiri::TestCase
6
- def setup
7
- super
8
- @xml = Nokogiri::XML <<-eoxml
9
- <root xmlns="http://tenderlovemaking.com/" xmlns:foo="bar">
10
- <awesome/>
11
- </root>
12
- eoxml
13
- end
14
-
15
- if Nokogiri.uses_libxml?
16
- def test_namespace_is_in_node_cache
17
- node = @xml.root.namespace
18
- assert @xml.instance_variable_get(:@node_cache).include?(node)
19
- end
20
- end
21
-
22
- def test_built_nodes_keep_namespace_decls
23
- doc = Document.new
24
- e = Node.new 'element', doc
25
- c = Node.new 'child', doc
26
- c.default_namespace = 'woop:de:doo'
27
-
28
- assert c.namespace, 'has a namespace'
29
- e.add_child c
30
- assert c.namespace, 'has a namespace'
31
-
32
- doc.add_child e
33
- assert c.namespace, 'has a namespace'
34
- end
35
-
36
- def test_inspect
37
- ns = @xml.root.namespace
38
- assert_equal "#<#{ns.class.name}:#{sprintf("0x%x", ns.object_id)} href=#{ns.href.inspect}>", ns.inspect
39
- end
40
-
41
- def test_namespace_node_prefix
42
- namespaces = @xml.root.namespace_definitions
43
- assert_equal [nil, 'foo'], namespaces.map(&:prefix)
44
- end
45
-
46
- def test_namespace_node_href
47
- namespaces = @xml.root.namespace_definitions
48
- assert_equal [
49
- 'http://tenderlovemaking.com/',
50
- 'bar'
51
- ], namespaces.map(&:href)
52
- end
53
-
54
- def test_equality
55
- namespaces = @xml.root.namespace_definitions
56
- assert_equal namespaces, @xml.root.namespace_definitions
57
- end
58
-
59
- def test_add_definition
60
- @xml.root.add_namespace_definition('baz', 'bar')
61
- assert_equal 3, @xml.root.namespace_definitions.length
62
- end
63
-
64
- def test_add_definition_return
65
- ns = @xml.root.add_namespace_definition('baz', 'bar')
66
- assert_equal 'baz', ns.prefix
67
- end
68
-
69
- def test_remove_entity_namespace
70
- s = %q{<?xml version='1.0'?><!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" [<!ENTITY % p ''>]>}
71
- Nokogiri::XML(s).remove_namespaces!
72
- # TODO: we should probably assert something here. See commit 14d2f59.
73
- end
74
-
75
- def test_maintain_element_namespaces
76
- doc = Document.new
77
- subject = Nokogiri::XML::Node.new 'foo', doc
78
- subject << '<foobar xmlns="barfoo"/>'
79
- child = subject.children.first
80
- assert_equal 'foobar', child.name
81
- assert_equal 'barfoo', child.namespace.href
82
- assert_empty child.attributes
83
- end
84
-
85
- def test_maintain_element_namespaces_in_urn
86
- doc = Document.new
87
- subject = Nokogiri::XML::Node.new 'foo', doc
88
- subject << '<foobar xmlns="urn:xmpp:foospec:barfoo"/>'
89
- child = subject.children.first
90
- assert_equal 'foobar', child.name
91
- assert_equal 'urn:xmpp:foospec:barfoo', child.namespace.href
92
- assert_empty child.attributes
93
- end
94
- end
95
- end
96
- end