nokogiri 1.5.0.beta.4-java → 1.5.0-java

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 (87) hide show
  1. data/.gemtest +0 -0
  2. data/CHANGELOG.ja.rdoc +34 -0
  3. data/CHANGELOG.rdoc +40 -1
  4. data/Manifest.txt +11 -2
  5. data/README.rdoc +1 -1
  6. data/Rakefile +96 -105
  7. data/bin/nokogiri +1 -2
  8. data/ext/java/nokogiri/HtmlDocument.java +1 -31
  9. data/ext/java/nokogiri/HtmlSaxParserContext.java +1 -1
  10. data/ext/java/nokogiri/NokogiriService.java +77 -22
  11. data/ext/java/nokogiri/XmlAttr.java +5 -16
  12. data/ext/java/nokogiri/XmlCdata.java +4 -11
  13. data/ext/java/nokogiri/XmlComment.java +5 -5
  14. data/ext/java/nokogiri/XmlDocument.java +49 -59
  15. data/ext/java/nokogiri/XmlDocumentFragment.java +14 -8
  16. data/ext/java/nokogiri/XmlDtd.java +45 -43
  17. data/ext/java/nokogiri/XmlElement.java +19 -46
  18. data/ext/java/nokogiri/XmlElementDecl.java +9 -5
  19. data/ext/java/nokogiri/XmlEntityReference.java +24 -2
  20. data/ext/java/nokogiri/XmlNamespace.java +89 -34
  21. data/ext/java/nokogiri/XmlNode.java +31 -52
  22. data/ext/java/nokogiri/XmlNodeSet.java +42 -86
  23. data/ext/java/nokogiri/XmlProcessingInstruction.java +15 -19
  24. data/ext/java/nokogiri/XmlReader.java +40 -43
  25. data/ext/java/nokogiri/XmlSaxParserContext.java +2 -2
  26. data/ext/java/nokogiri/XmlSchema.java +14 -9
  27. data/ext/java/nokogiri/XmlText.java +18 -35
  28. data/ext/java/nokogiri/XmlXpathContext.java +43 -23
  29. data/ext/java/nokogiri/XsltStylesheet.java +17 -3
  30. data/ext/java/nokogiri/internals/HtmlDomParserContext.java +2 -4
  31. data/ext/java/nokogiri/internals/NokogiriHelpers.java +77 -20
  32. data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +13 -17
  33. data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +13 -1
  34. data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +23 -8
  35. data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +20 -3
  36. data/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +67 -0
  37. data/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +86 -0
  38. data/ext/java/nokogiri/internals/ParserContext.java +25 -27
  39. data/ext/java/nokogiri/internals/ReaderNode.java +58 -1
  40. data/ext/java/nokogiri/internals/SaveContextVisitor.java +567 -0
  41. data/ext/java/nokogiri/internals/XmlDomParser.java +1 -2
  42. data/ext/java/nokogiri/internals/XmlDomParserContext.java +6 -0
  43. data/ext/nokogiri/nokogiri.c +24 -1
  44. data/ext/nokogiri/xml_io.c +32 -7
  45. data/ext/nokogiri/xml_node.c +14 -13
  46. data/ext/nokogiri/xml_sax_parser.c +9 -4
  47. data/ext/nokogiri/xslt_stylesheet.c +7 -1
  48. data/lib/nokogiri.rb +3 -22
  49. data/lib/nokogiri/css.rb +4 -0
  50. data/lib/nokogiri/html/document.rb +10 -14
  51. data/lib/nokogiri/nokogiri.jar +0 -0
  52. data/lib/nokogiri/version.rb +76 -23
  53. data/lib/nokogiri/xml/builder.rb +7 -0
  54. data/lib/nokogiri/xml/document.rb +17 -1
  55. data/lib/nokogiri/xml/document_fragment.rb +14 -0
  56. data/lib/nokogiri/xml/node.rb +36 -28
  57. data/lib/nokogiri/xml/node/save_options.rb +17 -1
  58. data/lib/nokogiri/xml/node_set.rb +7 -0
  59. data/lib/nokogiri/xml/parse_options.rb +8 -0
  60. data/lib/nokogiri/xml/reader.rb +6 -6
  61. data/lib/nokogiri/xml/schema.rb +7 -1
  62. data/lib/xercesImpl.jar +0 -0
  63. data/nokogiri_help_responses.md +40 -0
  64. data/tasks/cross_compile.rb +134 -159
  65. data/tasks/nokogiri.org.rb +18 -0
  66. data/tasks/test.rb +1 -1
  67. data/test/files/encoding.html +82 -0
  68. data/test/files/encoding.xhtml +84 -0
  69. data/test/files/metacharset.html +10 -0
  70. data/test/files/noencoding.html +47 -0
  71. data/test/helper.rb +2 -0
  72. data/test/html/test_document.rb +15 -0
  73. data/test/html/test_document_encoding.rb +13 -0
  74. data/test/test_memory_leak.rb +20 -0
  75. data/test/test_reader.rb +22 -0
  76. data/test/test_xslt_transforms.rb +6 -2
  77. data/test/xml/node/test_save_options.rb +10 -2
  78. data/test/xml/test_builder.rb +17 -0
  79. data/test/xml/test_document.rb +22 -0
  80. data/test/xml/test_node.rb +19 -1
  81. data/test/xml/test_node_reparenting.rb +16 -3
  82. data/test/xml/test_node_set.rb +34 -0
  83. data/test/xml/test_schema.rb +5 -0
  84. data/test/xslt/test_exception_handling.rb +37 -0
  85. metadata +141 -107
  86. data/deps.rip +0 -5
  87. data/ext/java/nokogiri/internals/SaveContext.java +0 -288
@@ -0,0 +1,18 @@
1
+ namespace :docs do
2
+ desc "generate HTML docs for nokogiri.org"
3
+ task :website do
4
+ title = "#{HOE.name}-#{HOE.version} Documentation"
5
+
6
+ options = []
7
+ options << "--main=#{HOE.readme_file}"
8
+ options << '--format=activerecord'
9
+ options << '--threads=1'
10
+ options << "--title=#{title.inspect}"
11
+
12
+ options += HOE.spec.require_paths
13
+ options += HOE.spec.extra_rdoc_files
14
+ require 'rdoc/rdoc'
15
+ ENV['RAILS_ROOT'] ||= File.expand_path(File.join('..', 'nokogiri_ws'))
16
+ RDoc::RDoc.new.document options
17
+ end
18
+ end
@@ -73,7 +73,7 @@ namespace :test do
73
73
  libxslt = Dir[File.join(MULTI_XML, 'install', 'libxslt*')].first
74
74
 
75
75
  directories = ENV['MULTIXML2_DIR'] ? [ENV['MULTIXML2_DIR']] : Dir[File.join(MULTI_XML, 'install', '*')]
76
- directories.sort.reverse.each do |xml2_version|
76
+ directories.sort.reverse_each do |xml2_version|
77
77
  next unless xml2_version =~ /libxml2/
78
78
  extopts = "--with-xml2-include=#{xml2_version}/include/libxml2 --with-xml2-lib=#{xml2_version}/lib --with-xslt-dir=#{libxslt} --with-iconv-dir=/usr"
79
79
  cmd = "#{$0} clean test EXTOPTS='#{extopts}' LD_LIBRARY_PATH='#{xml2_version}/lib'"
@@ -0,0 +1,82 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <title>����������</title>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
6
+ </head>
7
+ <body>
8
+ <p>���������\�z���B</p>
9
+ <p>�����������\�z���B</p>
10
+ <p>�������������\�z���B</p>
11
+ <p>���������������\�z���B</p>
12
+ <p>�����������������\�z���B</p>
13
+ <p>�������������������\�z���B</p>
14
+ <p>���������������������\�z���B</p>
15
+ <p>�����������������������\�z���B</p>
16
+ <p>�������������������������\�z���B</p>
17
+ <p>���������������������������\�z���B</p>
18
+ <p>�����������������������������\�z���B</p>
19
+ <p>�������������������������������\�z���B</p>
20
+ <p>���������������������������������\�z���B</p>
21
+ <p>�����������������������������������\�z���B</p>
22
+ <p>�������������������������������������\�z���B</p>
23
+ <p>���������������������������������������\�z���B</p>
24
+ <p>�����������������������������������������\�z���B</p>
25
+ <p>�������������������������������������������\�z���B</p>
26
+ <p>���������������������������������������������\�z���B</p>
27
+ <p>�����������������������������������������������\�z���B</p>
28
+ <p>�������������������������������������������������\�z���B</p>
29
+ <p>���������������������������������������������������\�z���B</p>
30
+ <p>�����������������������������������������������������\�z���B</p>
31
+ <p>�������������������������������������������������������\�z���B</p>
32
+ <p>���������������������������������������������������������\�z���B</p>
33
+ <p>�����������������������������������������������������������\�z���B</p>
34
+ <p>�������������������������������������������������������������\�z���B</p>
35
+ <p>���������������������������������������������������������������\�z���B</p>
36
+ <p>�����������������������������������������������������������������\�z���B</p>
37
+ <p>�������������������������������������������������������������������\�z���B</p>
38
+ <p>���������������������������������������������������������������������\�z���B</p>
39
+ <p>�����������������������������������������������������������������������\�z���B</p>
40
+ <p>�������������������������������������������������������������������������\�z���B</p>
41
+ <p>���������������������������������������������������������������������������\�z���B</p>
42
+ <p>�����������������������������������������������������������������������������\�z���B</p>
43
+ <p>�������������������������������������������������������������������������������\�z���B</p>
44
+ <p>���������������������������������������������������������������������������������\�z���B</p>
45
+ <p>�����������������������������������������������������������������������������������\�z���B</p>
46
+ <p>�������������������������������������������������������������������������������������\�z���B</p>
47
+ <p>���������������������������������������������������������������������������������������\�z���B</p>
48
+ <p>�����������������������������������������������������������������������������������������\�z���B</p>
49
+ <p>�������������������������������������������������������������������������������������������\�z���B</p>
50
+ <p>���������������������������������������������������������������������������������������������\�z���B</p>
51
+ <p>�����������������������������������������������������������������������������������������������\�z���B</p>
52
+ <p>�������������������������������������������������������������������������������������������������\�z���B</p>
53
+ <p>���������������������������������������������������������������������������������������������������\�z���B</p>
54
+ <p>�����������������������������������������������������������������������������������������������������\�z���B</p>
55
+ <p>�������������������������������������������������������������������������������������������������������\�z���B</p>
56
+ <p>���������������������������������������������������������������������������������������������������������\�z���B</p>
57
+ <p>�����������������������������������������������������������������������������������������������������������\�z���B</p>
58
+ <p>�������������������������������������������������������������������������������������������������������������\�z���B</p>
59
+ <p>���������������������������������������������������������������������������������������������������������������\�z���B</p>
60
+ <p>�����������������������������������������������������������������������������������������������������������������\�z���B</p>
61
+ <p>�������������������������������������������������������������������������������������������������������������������\�z���B</p>
62
+ <p>���������������������������������������������������������������������������������������������������������������������\�z���B</p>
63
+ <p>�����������������������������������������������������������������������������������������������������������������������\�z���B</p>
64
+ <p>�������������������������������������������������������������������������������������������������������������������������\�z���B</p>
65
+ <p>���������������������������������������������������������������������������������������������������������������������������\�z���B</p>
66
+ <p>�����������������������������������������������������������������������������������������������������������������������������\�z���B</p>
67
+ <p>�������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
68
+ <p>���������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
69
+ <p>�����������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
70
+ <p>�������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
71
+ <p>���������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
72
+ <p>�����������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
73
+ <p>�������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
74
+ <p>���������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
75
+ <p>�����������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
76
+ <p>�������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
77
+ <p>���������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
78
+ <p>�����������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
79
+ <p>�������������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
80
+ <p>���������������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
81
+ </body>
82
+ </html>
@@ -0,0 +1,84 @@
1
+ <?xml version="1.0" encoding="Shift_JIS"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
5
+ <head>
6
+ <title>����������</title>
7
+ <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
8
+ </head>
9
+ <body>
10
+ <p>���������\�z���B</p>
11
+ <p>�����������\�z���B</p>
12
+ <p>�������������\�z���B</p>
13
+ <p>���������������\�z���B</p>
14
+ <p>�����������������\�z���B</p>
15
+ <p>�������������������\�z���B</p>
16
+ <p>���������������������\�z���B</p>
17
+ <p>�����������������������\�z���B</p>
18
+ <p>�������������������������\�z���B</p>
19
+ <p>���������������������������\�z���B</p>
20
+ <p>�����������������������������\�z���B</p>
21
+ <p>�������������������������������\�z���B</p>
22
+ <p>���������������������������������\�z���B</p>
23
+ <p>�����������������������������������\�z���B</p>
24
+ <p>�������������������������������������\�z���B</p>
25
+ <p>���������������������������������������\�z���B</p>
26
+ <p>�����������������������������������������\�z���B</p>
27
+ <p>�������������������������������������������\�z���B</p>
28
+ <p>���������������������������������������������\�z���B</p>
29
+ <p>�����������������������������������������������\�z���B</p>
30
+ <p>�������������������������������������������������\�z���B</p>
31
+ <p>���������������������������������������������������\�z���B</p>
32
+ <p>�����������������������������������������������������\�z���B</p>
33
+ <p>�������������������������������������������������������\�z���B</p>
34
+ <p>���������������������������������������������������������\�z���B</p>
35
+ <p>�����������������������������������������������������������\�z���B</p>
36
+ <p>�������������������������������������������������������������\�z���B</p>
37
+ <p>���������������������������������������������������������������\�z���B</p>
38
+ <p>�����������������������������������������������������������������\�z���B</p>
39
+ <p>�������������������������������������������������������������������\�z���B</p>
40
+ <p>���������������������������������������������������������������������\�z���B</p>
41
+ <p>�����������������������������������������������������������������������\�z���B</p>
42
+ <p>�������������������������������������������������������������������������\�z���B</p>
43
+ <p>���������������������������������������������������������������������������\�z���B</p>
44
+ <p>�����������������������������������������������������������������������������\�z���B</p>
45
+ <p>�������������������������������������������������������������������������������\�z���B</p>
46
+ <p>���������������������������������������������������������������������������������\�z���B</p>
47
+ <p>�����������������������������������������������������������������������������������\�z���B</p>
48
+ <p>�������������������������������������������������������������������������������������\�z���B</p>
49
+ <p>���������������������������������������������������������������������������������������\�z���B</p>
50
+ <p>�����������������������������������������������������������������������������������������\�z���B</p>
51
+ <p>�������������������������������������������������������������������������������������������\�z���B</p>
52
+ <p>���������������������������������������������������������������������������������������������\�z���B</p>
53
+ <p>�����������������������������������������������������������������������������������������������\�z���B</p>
54
+ <p>�������������������������������������������������������������������������������������������������\�z���B</p>
55
+ <p>���������������������������������������������������������������������������������������������������\�z���B</p>
56
+ <p>�����������������������������������������������������������������������������������������������������\�z���B</p>
57
+ <p>�������������������������������������������������������������������������������������������������������\�z���B</p>
58
+ <p>���������������������������������������������������������������������������������������������������������\�z���B</p>
59
+ <p>�����������������������������������������������������������������������������������������������������������\�z���B</p>
60
+ <p>�������������������������������������������������������������������������������������������������������������\�z���B</p>
61
+ <p>���������������������������������������������������������������������������������������������������������������\�z���B</p>
62
+ <p>�����������������������������������������������������������������������������������������������������������������\�z���B</p>
63
+ <p>�������������������������������������������������������������������������������������������������������������������\�z���B</p>
64
+ <p>���������������������������������������������������������������������������������������������������������������������\�z���B</p>
65
+ <p>�����������������������������������������������������������������������������������������������������������������������\�z���B</p>
66
+ <p>�������������������������������������������������������������������������������������������������������������������������\�z���B</p>
67
+ <p>���������������������������������������������������������������������������������������������������������������������������\�z���B</p>
68
+ <p>�����������������������������������������������������������������������������������������������������������������������������\�z���B</p>
69
+ <p>�������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
70
+ <p>���������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
71
+ <p>�����������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
72
+ <p>�������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
73
+ <p>���������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
74
+ <p>�����������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
75
+ <p>�������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
76
+ <p>���������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
77
+ <p>�����������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
78
+ <p>�������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
79
+ <p>���������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
80
+ <p>�����������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
81
+ <p>�������������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
82
+ <p>���������������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
83
+ </body>
84
+ </html>
@@ -0,0 +1,10 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <title>$B$?$3>F$-2>LL(B</title>
5
+ <meta charset="iso-2022-jp" />
6
+ </head>
7
+ <body>
8
+ <p>$B0-$$;v$r9=A[Cf!#(B</p>
9
+ </body>
10
+ </html>
@@ -0,0 +1,47 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <title>I have no encoding declaration.</title>
5
+ </head>
6
+ <body>
7
+ <p>I want one.</p>
8
+ <p>I really want one.</p>
9
+ <p>I really really want one.</p>
10
+ <p>I really really really want one.</p>
11
+ <p>I really really really really want one.</p>
12
+ <p>I really really really really really want one.</p>
13
+ <p>I really really really really really really want one.</p>
14
+ <p>I really really really really really really really want one.</p>
15
+ <p>I really really really really really really really really want one.</p>
16
+ <p>I really really really really really really really really really want one.</p>
17
+ <p>I really really really really really really really really really really want one.</p>
18
+ <p>I really really really really really really really really really really really want one.</p>
19
+ <p>I really really really really really really really really really really really really want one.</p>
20
+ <p>I really really really really really really really really really really really really really want one.</p>
21
+ <p>I really really really really really really really really really really really really really really want one.</p>
22
+ <p>I really really really really really really really really really really really really really really really want one.</p>
23
+ <p>I really really really really really really really really really really really really really really really really want one.</p>
24
+ <p>I really really really really really really really really really really really really really really really really really want one.</p>
25
+ <p>I really really really really really really really really really really really really really really really really really really want one.</p>
26
+ <p>I really really really really really really really really really really really really really really really really really really really want one.</p>
27
+ <p>I really really really really really really really really really really really really really really really really really really really really want one.</p>
28
+ <p>I really really really really really really really really really really really really really really really really really really really really really want one.</p>
29
+ <p>I really really really really really really really really really really really really really really really really really really really really really really want one.</p>
30
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
31
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
32
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
33
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
34
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
35
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
36
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
37
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
38
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
39
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
40
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
41
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
42
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
43
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
44
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
45
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
46
+ </body>
47
+ </html>
@@ -22,6 +22,8 @@ module Nokogiri
22
22
  SHIFT_JIS_HTML = File.join(ASSETS_DIR, 'shift_jis.html')
23
23
  ENCODING_XHTML_FILE = File.join(ASSETS_DIR, 'encoding.xhtml')
24
24
  ENCODING_HTML_FILE = File.join(ASSETS_DIR, 'encoding.html')
25
+ NOENCODING_FILE = File.join(ASSETS_DIR, 'noencoding.html')
26
+ METACHARSET_FILE = File.join(ASSETS_DIR, 'metacharset.html')
25
27
  PO_XML_FILE = File.join(ASSETS_DIR, 'po.xml')
26
28
  PO_SCHEMA_FILE = File.join(ASSETS_DIR, 'po.xsd')
27
29
  ADDRESS_SCHEMA_FILE = File.join(ASSETS_DIR, 'address_book.rlx')
@@ -8,6 +8,12 @@ module Nokogiri
8
8
  @html = Nokogiri::HTML.parse(File.read(HTML_FILE))
9
9
  end
10
10
 
11
+ def test_nil_css
12
+ # Behavior is undefined but shouldn't break
13
+ assert @html.css(nil)
14
+ assert @html.xpath(nil)
15
+ end
16
+
11
17
  def test_exceptions_remove_newlines
12
18
  errors = @html.errors
13
19
  assert errors.length > 0, 'has errors'
@@ -226,6 +232,15 @@ eohtml
226
232
  }
227
233
  end
228
234
 
235
+ def test_parse_temp_file
236
+ temp_html_file = Tempfile.new("TEMP_HTML_FILE")
237
+ File.open(HTML_FILE, 'rb') { |f| temp_html_file.write f.read }
238
+ temp_html_file.close
239
+ temp_html_file.open
240
+ assert_equal Nokogiri::HTML.parse(File.read(HTML_FILE)).xpath('//div/a').length,
241
+ Nokogiri::HTML.parse(temp_html_file).xpath('//div/a').length
242
+ end
243
+
229
244
  def test_to_xhtml
230
245
  assert_match 'XHTML', @html.to_xhtml
231
246
  assert_match 'XHTML', @html.to_xhtml(:encoding => 'UTF-8')
@@ -89,6 +89,19 @@ module Nokogiri
89
89
  File.open(file, 'rb')
90
90
  end
91
91
 
92
+ def test_document_html_noencoding
93
+ from_stream = Nokogiri::HTML(binopen(NOENCODING_FILE))
94
+ from_string = Nokogiri::HTML(binread(NOENCODING_FILE))
95
+
96
+ assert_equal from_string.to_s.size, from_stream.to_s.size
97
+ end
98
+
99
+ def test_document_html_charset
100
+ html = Nokogiri::HTML(binopen(METACHARSET_FILE))
101
+ assert_equal 'iso-2022-jp', html.encoding
102
+ assert_equal 'たこ焼き仮面', html.title
103
+ end
104
+
92
105
  def test_document_xhtml_enc
93
106
  [ENCODING_XHTML_FILE, ENCODING_HTML_FILE].each { |file|
94
107
  doc_from_string_enc = Nokogiri::HTML(binread(file), nil, 'Shift_JIS')
@@ -12,6 +12,26 @@ class TestMemoryLeak < Nokogiri::TestCase
12
12
  end
13
13
  end
14
14
 
15
+ class BadIO
16
+ def read(*args)
17
+ raise 'hell'
18
+ end
19
+
20
+ def write(*args)
21
+ raise 'chickens'
22
+ end
23
+ end
24
+
25
+ def test_for_mem_leak_on_io_callbacks
26
+ io = File.open SNUGGLES_FILE
27
+ Nokogiri::XML.parse(io)
28
+
29
+ (10**10).times do
30
+ Nokogiri::XML.parse(BadIO.new) rescue nil
31
+ doc.write BadIO.new rescue nil
32
+ end
33
+ end
34
+
15
35
  def test_for_memory_leak
16
36
  begin
17
37
  # we don't use Dike in any tests, but requiring it has side effects
@@ -81,6 +81,28 @@ class TestReader < Nokogiri::TestCase
81
81
  assert_equal [false, false, false, false, false, false, false],
82
82
  reader.map { |x| x.default? }
83
83
  end
84
+
85
+ class ReallyBadIO
86
+ def read(size)
87
+ 'a' * size ** 10
88
+ end
89
+ end
90
+
91
+ class ReallyBadIO4Java
92
+ def read(size=1)
93
+ 'a' * size ** 10
94
+ end
95
+ end
96
+
97
+ def test_io_that_reads_too_much
98
+ if Nokogiri.jruby?
99
+ io = ReallyBadIO4Java.new
100
+ Nokogiri::XML::Reader(io)
101
+ else
102
+ io = ReallyBadIO.new
103
+ Nokogiri::XML::Reader(io)
104
+ end
105
+ end
84
106
 
85
107
  def test_in_memory
86
108
  assert Nokogiri::XML::Reader(<<-eoxml)
@@ -1,7 +1,6 @@
1
1
  require "helper"
2
2
 
3
3
  class TestXsltTransforms < Nokogiri::TestCase
4
-
5
4
  def setup
6
5
  @doc = Nokogiri::XML(File.open(XML_FILE))
7
6
  end
@@ -179,11 +178,16 @@ encoding="iso-8859-1" indent="yes"/>
179
178
  assert_raises(RuntimeError) { Nokogiri::XSLT.parse(xslt_str) }
180
179
  end
181
180
 
181
+ def test_passing_a_non_document_to_transform
182
+ xsl = Nokogiri::XSLT('<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></xsl:stylesheet>')
183
+ assert_raises(ArgumentError) { xsl.transform("<div></div>") }
184
+ assert_raises(ArgumentError) { xsl.transform(Nokogiri::HTML("").css("body")) }
185
+ end
186
+
182
187
  def check_params result_doc, params
183
188
  result_doc.xpath('/root/params/*').each do |p|
184
189
  assert_equal p.content, params[p.name.intern]
185
190
  end
186
191
  end
187
-
188
192
  end
189
193
  end
@@ -5,14 +5,22 @@ module Nokogiri
5
5
  class Node
6
6
  class TestSaveOptions < Nokogiri::TestCase
7
7
  SaveOptions.constants.each do |constant|
8
- class_eval %{
8
+ class_eval <<-EOEVAL
9
9
  def test_predicate_#{constant.downcase}
10
10
  options = SaveOptions.new(SaveOptions::#{constant})
11
11
  assert options.#{constant.downcase}?
12
12
 
13
13
  assert SaveOptions.new.#{constant.downcase}.#{constant.downcase}?
14
14
  end
15
- }
15
+ EOEVAL
16
+ end
17
+
18
+ def test_default_xml_save_options
19
+ if Nokogiri.jruby?
20
+ assert_equal 0, (SaveOptions::DEFAULT_XML & SaveOptions::FORMAT)
21
+ else
22
+ assert_equal SaveOptions::FORMAT, (SaveOptions::DEFAULT_XML & SaveOptions::FORMAT)
23
+ end
16
24
  end
17
25
  end
18
26
  end
@@ -3,6 +3,23 @@ require "helper"
3
3
  module Nokogiri
4
4
  module XML
5
5
  class TestBuilder < Nokogiri::TestCase
6
+ def test_attribute_sensitivity
7
+ xml = Nokogiri::XML::Builder.new { |x|
8
+ x.tag "hello", "abcDef" => "world"
9
+ }.to_xml
10
+ doc = Nokogiri.XML xml
11
+ assert_equal 'world', doc.root['abcDef']
12
+ end
13
+
14
+ def test_builder_escape
15
+ xml = Nokogiri::XML::Builder.new { |x|
16
+ x.condition "value < 1", :attr => "value < 1"
17
+ }.to_xml
18
+ doc = Nokogiri.XML xml
19
+ assert_equal 'value < 1', doc.root['attr']
20
+ assert_equal 'value < 1', doc.root.content
21
+ end
22
+
6
23
  def test_builder_namespace
7
24
  doc = Nokogiri::XML::Builder.new { |xml|
8
25
  xml.a("xmlns:a" => "x") do