nokogiri 1.6.0 → 1.13.2

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 (340) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -19
  3. data/LICENSE-DEPENDENCIES.md +1903 -0
  4. data/LICENSE.md +9 -0
  5. data/README.md +280 -0
  6. data/bin/nokogiri +84 -31
  7. data/dependencies.yml +23 -4
  8. data/ext/nokogiri/depend +38 -358
  9. data/ext/nokogiri/extconf.rb +952 -132
  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 +231 -96
  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 +327 -223
  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 +45 -20
  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 +1290 -680
  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 +227 -189
  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 +227 -140
  45. data/ext/nokogiri/xslt_stylesheet.c +269 -177
  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 -58
  93. data/lib/nokogiri/css/parser.rb +407 -357
  94. data/lib/nokogiri/css/parser.y +265 -246
  95. data/lib/nokogiri/css/parser_extras.rb +52 -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 +8 -7
  99. data/lib/nokogiri/css/xpath_visitor.rb +266 -80
  100. data/lib/nokogiri/css.rb +50 -17
  101. data/lib/nokogiri/decorators/slop.rb +17 -8
  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/html4/document.rb +331 -0
  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 +24 -15
  112. data/lib/nokogiri/html4/sax/parser_context.rb +20 -0
  113. data/lib/nokogiri/html4/sax/push_parser.rb +37 -0
  114. data/lib/nokogiri/html4.rb +46 -0
  115. data/lib/nokogiri/html5/document.rb +88 -0
  116. data/lib/nokogiri/html5/document_fragment.rb +83 -0
  117. data/lib/nokogiri/html5/node.rb +96 -0
  118. data/lib/nokogiri/html5.rb +477 -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 +221 -0
  123. data/lib/nokogiri/version.rb +3 -105
  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 +96 -54
  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 +234 -95
  130. data/lib/nokogiri/xml/document_fragment.rb +86 -36
  131. data/lib/nokogiri/xml/dtd.rb +16 -4
  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 +20 -0
  136. data/lib/nokogiri/xml/namespace.rb +3 -0
  137. data/lib/nokogiri/xml/node/save_options.rb +8 -4
  138. data/lib/nokogiri/xml/node.rb +947 -502
  139. data/lib/nokogiri/xml/node_set.rb +168 -159
  140. data/lib/nokogiri/xml/notation.rb +13 -0
  141. data/lib/nokogiri/xml/parse_options.rb +40 -5
  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 +43 -41
  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 +270 -0
  155. data/lib/nokogiri/xml/syntax_error.rb +25 -1
  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 -36
  161. data/lib/nokogiri/xslt/stylesheet.rb +3 -1
  162. data/lib/nokogiri/xslt.rb +29 -20
  163. data/lib/nokogiri.rb +69 -69
  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.13.tar.xz +0 -0
  175. data/ports/archives/libxslt-1.1.35.tar.xz +0 -0
  176. metadata +278 -362
  177. data/.autotest +0 -26
  178. data/.gemtest +0 -0
  179. data/.travis.yml +0 -27
  180. data/CHANGELOG.ja.rdoc +0 -819
  181. data/CHANGELOG.rdoc +0 -819
  182. data/C_CODING_STYLE.rdoc +0 -33
  183. data/Manifest.txt +0 -315
  184. data/README.ja.rdoc +0 -106
  185. data/README.rdoc +0 -175
  186. data/ROADMAP.md +0 -90
  187. data/Rakefile +0 -246
  188. data/STANDARD_RESPONSES.md +0 -47
  189. data/Y_U_NO_GEMSPEC.md +0 -155
  190. data/build_all +0 -105
  191. data/ext/nokogiri/html_document.c +0 -170
  192. data/ext/nokogiri/html_document.h +0 -10
  193. data/ext/nokogiri/html_element_description.c +0 -279
  194. data/ext/nokogiri/html_element_description.h +0 -10
  195. data/ext/nokogiri/html_entity_lookup.c +0 -32
  196. data/ext/nokogiri/html_entity_lookup.h +0 -8
  197. data/ext/nokogiri/html_sax_parser_context.c +0 -116
  198. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  199. data/ext/nokogiri/html_sax_push_parser.c +0 -87
  200. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  201. data/ext/nokogiri/xml_attr.h +0 -9
  202. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  203. data/ext/nokogiri/xml_cdata.h +0 -9
  204. data/ext/nokogiri/xml_comment.h +0 -9
  205. data/ext/nokogiri/xml_document.h +0 -23
  206. data/ext/nokogiri/xml_document_fragment.h +0 -10
  207. data/ext/nokogiri/xml_dtd.h +0 -10
  208. data/ext/nokogiri/xml_element_content.h +0 -10
  209. data/ext/nokogiri/xml_element_decl.h +0 -9
  210. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  211. data/ext/nokogiri/xml_entity_decl.h +0 -10
  212. data/ext/nokogiri/xml_entity_reference.h +0 -9
  213. data/ext/nokogiri/xml_io.c +0 -56
  214. data/ext/nokogiri/xml_io.h +0 -11
  215. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  216. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  217. data/ext/nokogiri/xml_namespace.h +0 -13
  218. data/ext/nokogiri/xml_node.h +0 -13
  219. data/ext/nokogiri/xml_node_set.h +0 -14
  220. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  221. data/ext/nokogiri/xml_reader.h +0 -10
  222. data/ext/nokogiri/xml_relax_ng.h +0 -9
  223. data/ext/nokogiri/xml_sax_parser.h +0 -39
  224. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  225. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  226. data/ext/nokogiri/xml_schema.h +0 -9
  227. data/ext/nokogiri/xml_syntax_error.h +0 -13
  228. data/ext/nokogiri/xml_text.h +0 -9
  229. data/ext/nokogiri/xml_xpath_context.h +0 -10
  230. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  231. data/lib/nokogiri/html/document.rb +0 -254
  232. data/lib/nokogiri/html/document_fragment.rb +0 -41
  233. data/lib/nokogiri/html/element_description_defaults.rb +0 -671
  234. data/lib/nokogiri/html/sax/parser_context.rb +0 -16
  235. data/lib/nokogiri/html/sax/push_parser.rb +0 -16
  236. data/ports/archives/libxml2-2.8.0.tar.gz +0 -0
  237. data/ports/archives/libxslt-1.1.26.tar.gz +0 -0
  238. data/tasks/cross_compile.rb +0 -132
  239. data/tasks/nokogiri.org.rb +0 -24
  240. data/tasks/test.rb +0 -95
  241. data/test/css/test_nthiness.rb +0 -159
  242. data/test/css/test_parser.rb +0 -341
  243. data/test/css/test_tokenizer.rb +0 -198
  244. data/test/css/test_xpath_visitor.rb +0 -91
  245. data/test/decorators/test_slop.rb +0 -16
  246. data/test/files/2ch.html +0 -108
  247. data/test/files/address_book.rlx +0 -12
  248. data/test/files/address_book.xml +0 -10
  249. data/test/files/bar/bar.xsd +0 -4
  250. data/test/files/bogus.xml +0 -0
  251. data/test/files/dont_hurt_em_why.xml +0 -422
  252. data/test/files/encoding.html +0 -82
  253. data/test/files/encoding.xhtml +0 -84
  254. data/test/files/exslt.xml +0 -8
  255. data/test/files/exslt.xslt +0 -35
  256. data/test/files/foo/foo.xsd +0 -4
  257. data/test/files/metacharset.html +0 -10
  258. data/test/files/noencoding.html +0 -47
  259. data/test/files/po.xml +0 -32
  260. data/test/files/po.xsd +0 -66
  261. data/test/files/saml/saml20assertion_schema.xsd +0 -283
  262. data/test/files/saml/saml20protocol_schema.xsd +0 -302
  263. data/test/files/saml/xenc_schema.xsd +0 -146
  264. data/test/files/saml/xmldsig_schema.xsd +0 -318
  265. data/test/files/shift_jis.html +0 -10
  266. data/test/files/shift_jis.xml +0 -5
  267. data/test/files/snuggles.xml +0 -3
  268. data/test/files/staff.dtd +0 -10
  269. data/test/files/staff.xml +0 -59
  270. data/test/files/staff.xslt +0 -32
  271. data/test/files/test_document_url/bar.xml +0 -2
  272. data/test/files/test_document_url/document.dtd +0 -4
  273. data/test/files/test_document_url/document.xml +0 -6
  274. data/test/files/tlm.html +0 -850
  275. data/test/files/to_be_xincluded.xml +0 -2
  276. data/test/files/valid_bar.xml +0 -2
  277. data/test/files/xinclude.xml +0 -4
  278. data/test/helper.rb +0 -154
  279. data/test/html/sax/test_parser.rb +0 -141
  280. data/test/html/sax/test_parser_context.rb +0 -46
  281. data/test/html/test_builder.rb +0 -164
  282. data/test/html/test_document.rb +0 -552
  283. data/test/html/test_document_encoding.rb +0 -138
  284. data/test/html/test_document_fragment.rb +0 -261
  285. data/test/html/test_element_description.rb +0 -105
  286. data/test/html/test_named_characters.rb +0 -14
  287. data/test/html/test_node.rb +0 -196
  288. data/test/html/test_node_encoding.rb +0 -27
  289. data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +0 -14
  290. data/test/namespaces/test_namespaces_in_builder_doc.rb +0 -75
  291. data/test/namespaces/test_namespaces_in_created_doc.rb +0 -75
  292. data/test/namespaces/test_namespaces_in_parsed_doc.rb +0 -66
  293. data/test/test_convert_xpath.rb +0 -135
  294. data/test/test_css_cache.rb +0 -45
  295. data/test/test_encoding_handler.rb +0 -46
  296. data/test/test_memory_leak.rb +0 -156
  297. data/test/test_nokogiri.rb +0 -132
  298. data/test/test_reader.rb +0 -555
  299. data/test/test_soap4r_sax.rb +0 -52
  300. data/test/test_xslt_transforms.rb +0 -254
  301. data/test/xml/node/test_save_options.rb +0 -28
  302. data/test/xml/node/test_subclass.rb +0 -44
  303. data/test/xml/sax/test_parser.rb +0 -366
  304. data/test/xml/sax/test_parser_context.rb +0 -106
  305. data/test/xml/sax/test_push_parser.rb +0 -157
  306. data/test/xml/test_attr.rb +0 -64
  307. data/test/xml/test_attribute_decl.rb +0 -86
  308. data/test/xml/test_builder.rb +0 -306
  309. data/test/xml/test_c14n.rb +0 -151
  310. data/test/xml/test_cdata.rb +0 -48
  311. data/test/xml/test_comment.rb +0 -29
  312. data/test/xml/test_document.rb +0 -828
  313. data/test/xml/test_document_encoding.rb +0 -28
  314. data/test/xml/test_document_fragment.rb +0 -223
  315. data/test/xml/test_dtd.rb +0 -103
  316. data/test/xml/test_dtd_encoding.rb +0 -33
  317. data/test/xml/test_element_content.rb +0 -56
  318. data/test/xml/test_element_decl.rb +0 -73
  319. data/test/xml/test_entity_decl.rb +0 -122
  320. data/test/xml/test_entity_reference.rb +0 -245
  321. data/test/xml/test_namespace.rb +0 -95
  322. data/test/xml/test_node.rb +0 -1137
  323. data/test/xml/test_node_attributes.rb +0 -96
  324. data/test/xml/test_node_encoding.rb +0 -107
  325. data/test/xml/test_node_inheritance.rb +0 -32
  326. data/test/xml/test_node_reparenting.rb +0 -374
  327. data/test/xml/test_node_set.rb +0 -755
  328. data/test/xml/test_parse_options.rb +0 -64
  329. data/test/xml/test_processing_instruction.rb +0 -30
  330. data/test/xml/test_reader_encoding.rb +0 -142
  331. data/test/xml/test_relax_ng.rb +0 -60
  332. data/test/xml/test_schema.rb +0 -103
  333. data/test/xml/test_syntax_error.rb +0 -12
  334. data/test/xml/test_text.rb +0 -45
  335. data/test/xml/test_unparented_node.rb +0 -422
  336. data/test/xml/test_xinclude.rb +0 -83
  337. data/test/xml/test_xpath.rb +0 -295
  338. data/test/xslt/test_custom_functions.rb +0 -133
  339. data/test/xslt/test_exception_handling.rb +0 -37
  340. data/test_all +0 -81
@@ -1,28 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- if RUBY_VERSION =~ /^1\.9/
6
- class TestDocumentEncoding < Nokogiri::TestCase
7
- def setup
8
- super
9
- @xml = Nokogiri::XML(File.read(XML_FILE), XML_FILE, 'UTF-8')
10
- end
11
-
12
- def test_url
13
- assert_equal @xml.encoding, @xml.url.encoding.name
14
- end
15
-
16
- def test_encoding
17
- assert_equal @xml.encoding, @xml.encoding.encoding.name
18
- end
19
-
20
- def test_dotted_version
21
- if Nokogiri.uses_libxml?
22
- assert_equal 'UTF-8', Nokogiri::LIBXML_VERSION.encoding.name
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,223 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestDocumentFragment < Nokogiri::TestCase
6
- def setup
7
- super
8
- @xml = Nokogiri::XML.parse(File.read(XML_FILE), XML_FILE)
9
- end
10
-
11
- def test_replace_text_node
12
- html = "foo"
13
- doc = Nokogiri::XML::DocumentFragment.parse(html)
14
- doc.children[0].replace "bar"
15
- assert_equal 'bar', doc.children[0].content
16
- end
17
-
18
- def test_fragment_is_relative
19
- doc = Nokogiri::XML('<root><a xmlns="blah" /></root>')
20
- ctx = doc.root.child
21
- fragment = Nokogiri::XML::DocumentFragment.new(doc, '<hello />', ctx)
22
- hello = fragment.child
23
-
24
- assert_equal 'hello', hello.name
25
- assert_equal doc.root.child.namespace, hello.namespace
26
- end
27
-
28
- def test_node_fragment_is_relative
29
- doc = Nokogiri::XML('<root><a xmlns="blah" /></root>')
30
- assert doc.root.child
31
- fragment = doc.root.child.fragment('<hello />')
32
- hello = fragment.child
33
-
34
- assert_equal 'hello', hello.name
35
- assert_equal doc.root.child.namespace, hello.namespace
36
- end
37
-
38
- def test_new
39
- assert Nokogiri::XML::DocumentFragment.new(@xml)
40
- end
41
-
42
- def test_fragment_should_have_document
43
- fragment = Nokogiri::XML::DocumentFragment.new(@xml)
44
- assert_equal @xml, fragment.document
45
- end
46
-
47
- def test_name
48
- fragment = Nokogiri::XML::DocumentFragment.new(@xml)
49
- assert_equal '#document-fragment', fragment.name
50
- end
51
-
52
- def test_static_method
53
- fragment = Nokogiri::XML::DocumentFragment.parse("<div>a</div>")
54
- assert_instance_of Nokogiri::XML::DocumentFragment, fragment
55
- end
56
-
57
- def test_static_method_with_namespaces
58
- # follows different path in FragmentHandler#start_element which blew up after 597195ff
59
- fragment = Nokogiri::XML::DocumentFragment.parse("<o:div>a</o:div>")
60
- assert_instance_of Nokogiri::XML::DocumentFragment, fragment
61
- end
62
-
63
- def test_many_fragments
64
- 100.times { Nokogiri::XML::DocumentFragment.new(@xml) }
65
- end
66
-
67
- def test_subclass
68
- klass = Class.new(Nokogiri::XML::DocumentFragment)
69
- fragment = klass.new(@xml, "<div>a</div>")
70
- assert_instance_of klass, fragment
71
- end
72
-
73
- def test_subclass_parse
74
- klass = Class.new(Nokogiri::XML::DocumentFragment)
75
- doc = klass.parse("<div>a</div>")
76
- assert_instance_of klass, doc
77
- end
78
-
79
- def test_xml_fragment
80
- fragment = Nokogiri::XML.fragment("<div>a</div>")
81
- assert_equal "<div>a</div>", fragment.to_s
82
- end
83
-
84
- def test_xml_fragment_has_multiple_toplevel_children
85
- doc = "<div>b</div><div>e</div>"
86
- fragment = Nokogiri::XML::Document.new.fragment(doc)
87
- assert_equal "<div>b</div><div>e</div>", fragment.to_s
88
- end
89
-
90
- def test_xml_fragment_has_outer_text
91
- # this test is descriptive, not prescriptive.
92
- doc = "a<div>b</div>"
93
- fragment = Nokogiri::XML::Document.new.fragment(doc)
94
- assert_equal "a<div>b</div>", fragment.to_s
95
-
96
- doc = "<div>b</div>c"
97
- fragment = Nokogiri::XML::Document.new.fragment(doc)
98
- assert_equal "<div>b</div>c", fragment.to_s
99
- end
100
-
101
- def test_xml_fragment_case_sensitivity
102
- doc = "<crazyDiv>b</crazyDiv>"
103
- fragment = Nokogiri::XML::Document.new.fragment(doc)
104
- assert_equal "<crazyDiv>b</crazyDiv>", fragment.to_s
105
- end
106
-
107
- def test_xml_fragment_with_leading_whitespace
108
- doc = " <div>b</div> "
109
- fragment = Nokogiri::XML::Document.new.fragment(doc)
110
- assert_equal " <div>b</div> ", fragment.to_s
111
- end
112
-
113
- def test_xml_fragment_with_leading_whitespace_and_newline
114
- doc = " \n<div>b</div> "
115
- fragment = Nokogiri::XML::Document.new.fragment(doc)
116
- assert_equal " \n<div>b</div> ", fragment.to_s
117
- end
118
-
119
- def test_fragment_children_search
120
- fragment = Nokogiri::XML::Document.new.fragment(
121
- '<div><p id="content">hi</p></div>'
122
- )
123
- css = fragment.children.css('p')
124
- xpath = fragment.children.xpath('.//p')
125
- assert_equal css, xpath
126
- end
127
-
128
- def test_fragment_search
129
- frag = Nokogiri::XML::Document.new.fragment '<p id="content">hi</p>'
130
-
131
- p_tag = frag.css('#content').first
132
- assert_equal 'p', p_tag.name
133
-
134
- assert_equal p_tag, frag.xpath('./*[@id = \'content\']').first
135
- end
136
-
137
- def test_fragment_without_a_namespace_does_not_get_a_namespace
138
- doc = Nokogiri::XML <<-EOX
139
- <root xmlns="http://tenderlovemaking.com/" xmlns:foo="http://flavorjon.es/" xmlns:bar="http://google.com/">
140
- <foo:existing></foo:existing>
141
- </root>
142
- EOX
143
- frag = doc.fragment "<newnode></newnode>"
144
- assert_nil frag.namespace
145
- end
146
-
147
- def test_fragment_namespace_resolves_against_document_root
148
- doc = Nokogiri::XML <<-EOX
149
- <root xmlns:foo="http://flavorjon.es/" xmlns:bar="http://google.com/">
150
- <foo:existing></foo:existing>
151
- </root>
152
- EOX
153
- ns = doc.root.namespace_definitions.detect { |x| x.prefix == "bar" }
154
-
155
- frag = doc.fragment "<bar:newnode></bar:newnode>"
156
- assert frag.children.first.namespace
157
- assert_equal ns, frag.children.first.namespace
158
- end
159
-
160
- def test_fragment_invalid_namespace_is_silently_ignored
161
- doc = Nokogiri::XML <<-EOX
162
- <root xmlns:foo="http://flavorjon.es/" xmlns:bar="http://google.com/">
163
- <foo:existing></foo:existing>
164
- </root>
165
- EOX
166
- frag = doc.fragment "<baz:newnode></baz:newnode>"
167
- assert_nil frag.children.first.namespace
168
- end
169
-
170
- def test_decorator_is_applied
171
- x = Module.new do
172
- def awesome!
173
- end
174
- end
175
- util_decorate(@xml, x)
176
- fragment = Nokogiri::XML::DocumentFragment.new(@xml, "<div>a</div><div>b</div>")
177
-
178
- assert node_set = fragment.css('div')
179
- assert node_set.respond_to?(:awesome!)
180
- node_set.each do |node|
181
- assert node.respond_to?(:awesome!), node.class
182
- end
183
- assert fragment.children.respond_to?(:awesome!), fragment.children.class
184
- end
185
-
186
- def test_add_node_to_doc_fragment_segfault
187
- frag = Nokogiri::XML::DocumentFragment.new(@xml, '<p>hello world</p>')
188
- Nokogiri::XML::Comment.new(frag,'moo')
189
- end
190
-
191
- if Nokogiri.uses_libxml?
192
- def test_for_libxml_in_context_fragment_parsing_bug_workaround
193
- 10.times do
194
- begin
195
- fragment = Nokogiri::XML.fragment("<div></div>")
196
- parent = fragment.children.first
197
- child = parent.parse("<h1></h1>").first
198
- parent.add_child child
199
- end
200
- GC.start
201
- end
202
- end
203
-
204
- def test_for_libxml_in_context_memory_badness_when_encountering_encoding_errors
205
- # see issue #643 for background
206
- # this test exists solely to raise an error during valgrind test runs.
207
- html = <<-EOHTML
208
- <html>
209
- <head>
210
- <meta http-equiv="Content-Type" content="text/html; charset=shizzle" />
211
- </head>
212
- <body>
213
- <div>Foo</div>
214
- </body>
215
- </html>
216
- EOHTML
217
- doc = Nokogiri::HTML html
218
- doc.at_css("div").replace("Bar")
219
- end
220
- end
221
- end
222
- end
223
- end
data/test/xml/test_dtd.rb DELETED
@@ -1,103 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestDTD < Nokogiri::TestCase
6
- def setup
7
- super
8
- @xml = Nokogiri::XML(File.open(XML_FILE))
9
- assert @dtd = @xml.internal_subset
10
- end
11
-
12
- def test_system_id
13
- assert_equal 'staff.dtd', @dtd.system_id
14
- end
15
-
16
- def test_external_id
17
- xml = Nokogiri::XML('<!DOCTYPE foo PUBLIC "bar" ""><foo />')
18
- assert dtd = xml.internal_subset, 'no internal subset'
19
- assert_equal 'bar', dtd.external_id
20
- end
21
-
22
- def test_content
23
- assert_raise NoMethodError do
24
- @dtd.content
25
- end
26
- end
27
-
28
- def test_empty_attributes
29
- dtd = Nokogiri::HTML("<html></html>").internal_subset
30
- assert_equal Hash.new, dtd.attributes
31
- end
32
-
33
- def test_attributes
34
- assert_equal ['width'], @dtd.attributes.keys
35
- assert_equal '0', @dtd.attributes['width'].default
36
- end
37
-
38
- def test_keys
39
- assert_equal ['width'], @dtd.keys
40
- end
41
-
42
- def test_each
43
- hash = {}
44
- @dtd.each { |key, value| hash[key] = value }
45
- assert_equal @dtd.attributes, hash
46
- end
47
-
48
- def test_namespace
49
- assert_raise NoMethodError do
50
- @dtd.namespace
51
- end
52
- end
53
-
54
- def test_namespace_definitions
55
- assert_raise NoMethodError do
56
- @dtd.namespace_definitions
57
- end
58
- end
59
-
60
- def test_line
61
- assert_raise NoMethodError do
62
- @dtd.line
63
- end
64
- end
65
-
66
- def test_validate
67
- if Nokogiri.uses_libxml?
68
- list = @xml.internal_subset.validate @xml
69
- assert_equal 44, list.length
70
- else
71
- xml = Nokogiri::XML(File.open(XML_FILE)) {|cfg| cfg.dtdvalid}
72
- list = xml.internal_subset.validate xml
73
- assert_equal 40, list.length
74
- end
75
- end
76
-
77
- def test_external_subsets
78
- assert subset = @xml.internal_subset
79
- assert_equal 'staff', subset.name
80
- end
81
-
82
- def test_entities
83
- assert entities = @dtd.entities
84
- assert_equal %w[ ent1 ent2 ent3 ent4 ent5 ].sort, entities.keys.sort
85
- end
86
-
87
- def test_elements
88
- assert elements = @dtd.elements
89
- assert_equal %w[ br ], elements.keys
90
- assert_equal 'br', elements['br'].name
91
- end
92
-
93
- def test_notations
94
- assert notations = @dtd.notations
95
- assert_equal %w[ notation1 notation2 ].sort, notations.keys.sort
96
- assert notation1 = notations['notation1']
97
- assert_equal 'notation1', notation1.name
98
- assert_equal 'notation1File', notation1.public_id
99
- assert_nil notation1.system_id
100
- end
101
- end
102
- end
103
- end
@@ -1,33 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- require "helper"
4
-
5
- module Nokogiri
6
- module XML
7
- if RUBY_VERSION =~ /^1\.9/
8
- class TestDTDEncoding < Nokogiri::TestCase
9
- def setup
10
- super
11
- @xml = Nokogiri::XML(File.read(XML_FILE), XML_FILE, 'UTF-8')
12
- assert @dtd = @xml.internal_subset
13
- end
14
-
15
- def test_entities
16
- @dtd.entities.each do |k,v|
17
- assert_equal @xml.encoding, k.encoding.name
18
- end
19
- end
20
-
21
- def test_notations
22
- @dtd.notations.each do |k,notation|
23
- assert_equal 'UTF-8', k.encoding.name
24
- %w{ name public_id system_id }.each do |attribute|
25
- v = notation.send(:"#{attribute}") || next
26
- assert_equal 'UTF-8', v.encoding.name
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,56 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestElementContent < 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
- <!ELEMENT br EMPTY>
12
- <!ELEMENT div1 (head, (p | list | note)*, div2*)>
13
- <!ELEMENT div2 (tender:love)>
14
- ]>
15
- <root/>
16
- eoxml
17
- @elements = @xml.internal_subset.children.find_all { |x|
18
- x.type == 15
19
- }
20
- @tree = @elements[1].content
21
- end
22
-
23
- def test_allowed_content_not_defined
24
- assert_nil @elements.first.content
25
- end
26
-
27
- def test_document
28
- assert @tree
29
- assert_equal @xml, @tree.document
30
- end
31
-
32
- def test_type
33
- assert_equal ElementContent::SEQ, @tree.type
34
- end
35
-
36
- def test_children
37
- assert_equal 2, @tree.children.length
38
- end
39
-
40
- def test_name
41
- assert_nil @tree.name
42
- assert_equal 'head', @tree.children.first.name
43
- assert_equal 'p', @tree.children[1].children.first.children.first.name
44
- end
45
-
46
- def test_occur
47
- assert_equal ElementContent::ONCE, @tree.occur
48
- end
49
-
50
- def test_prefix
51
- assert_nil @tree.prefix
52
- assert_equal 'tender', @elements[2].content.prefix
53
- end
54
- end
55
- end
56
- end
@@ -1,73 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestElementDecl < 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
- <!ELEMENT br EMPTY>
12
- <!ELEMENT div1 (head, (p | list | note)*, div2*)>
13
- <!ELEMENT my:way EMPTY>
14
- <!ATTLIST br width CDATA "0">
15
- <!ATTLIST br height CDATA "0">
16
- ]>
17
- <root/>
18
- eoxml
19
- @elements = @xml.internal_subset.children.find_all { |x|
20
- x.type == 15
21
- }
22
- end
23
-
24
- def test_inspect
25
- e = @elements.first
26
- assert_equal(
27
- "#<#{e.class.name}:#{sprintf("0x%x", e.object_id)} #{e.to_s.inspect}>",
28
- e.inspect
29
- )
30
- end
31
-
32
- def test_prefix
33
- assert_nil @elements[1].prefix
34
- assert_equal 'my', @elements[2].prefix
35
- end
36
-
37
- def test_line
38
- assert_raise NoMethodError do
39
- @elements.first.line
40
- end
41
- end
42
-
43
- def test_namespace
44
- assert_raise NoMethodError do
45
- @elements.first.namespace
46
- end
47
- end
48
-
49
- def test_namespace_definitions
50
- assert_raise NoMethodError do
51
- @elements.first.namespace_definitions
52
- end
53
- end
54
-
55
- def test_element_type
56
- assert_equal 1, @elements.first.element_type
57
- end
58
-
59
- def test_type
60
- assert_equal 15, @elements.first.type
61
- end
62
-
63
- def test_class
64
- assert_instance_of Nokogiri::XML::ElementDecl, @elements.first
65
- end
66
-
67
- def test_attributes
68
- assert_equal 2, @elements.first.attribute_nodes.length
69
- assert_equal 'width', @elements.first.attribute_nodes.first.name
70
- end
71
- end
72
- end
73
- end
@@ -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