nokogiri 1.5.2 → 1.5.3.rc2

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.

@@ -88,7 +88,7 @@ rule
88
88
  |
89
89
  ;
90
90
  attrib
91
- : LSQUARE namespaced_ident attrib_val_0or1 RSQUARE {
91
+ : LSQUARE attrib_name attrib_val_0or1 RSQUARE {
92
92
  result = Node.new(:ATTRIBUTE_CONDITION,
93
93
  [val[1]] + (val[2] || [])
94
94
  )
@@ -105,6 +105,18 @@ rule
105
105
  )
106
106
  }
107
107
  ;
108
+ attrib_name
109
+ : namespace '|' IDENT {
110
+ result = Node.new(:ELEMENT_NAME,
111
+ [[val.first, val.last].compact.join(':')]
112
+ )
113
+ }
114
+ | IDENT {
115
+ # Default namespace is not applied to attributes.
116
+ # So we don't add prefix "xmlns:" as in namespaced_ident.
117
+ result = Node.new(:ELEMENT_NAME, [val.first])
118
+ }
119
+ ;
108
120
  function
109
121
  : FUNCTION RPAREN {
110
122
  result = Node.new(:FUNCTION, [val.first.strip])
@@ -1,6 +1,6 @@
1
1
  module Nokogiri
2
2
  # The version of Nokogiri you are using
3
- VERSION = '1.5.2'
3
+ VERSION = '1.5.3.rc2'
4
4
 
5
5
  class VersionInfo # :nodoc:
6
6
  def jruby?
@@ -6,6 +6,10 @@ module Nokogiri
6
6
  def setup
7
7
  super
8
8
  @parser = Nokogiri::CSS::Parser.new
9
+ @parser_with_ns = Nokogiri::CSS::Parser.new({
10
+ "xmlns" => "http://default.example.com/",
11
+ "hoge" => "http://hoge.example.com/",
12
+ })
9
13
  end
10
14
 
11
15
  def test_extra_single_quote
@@ -292,6 +296,13 @@ module Nokogiri
292
296
  # assert_xpath ['//x/y', '//y/z'], @parser.parse('x > y | y > z')
293
297
  end
294
298
 
299
+ def test_attributes_with_namespace
300
+ ## Default namespace is not applied to attributes.
301
+ ## So this must be @class, not @xmlns:class.
302
+ assert_xpath "//xmlns:a[@class = 'bar']", @parser_with_ns.parse("a[class='bar']")
303
+ assert_xpath "//xmlns:a[@hoge:class = 'bar']", @parser_with_ns.parse("a[hoge|class='bar']")
304
+ end
305
+
295
306
  def assert_xpath expecteds, asts
296
307
  expecteds = [expecteds].flatten
297
308
  expecteds.zip(asts).each do |expected, actual|
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <included>this snippet is to be included from xinclude.xml</included>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <test xmlns:xi="http://www.w3.org/2001/XInclude">
3
+ <xi:include href="to_be_xincluded.xml"/>
4
+ </test>
@@ -358,13 +358,17 @@ module Nokogiri
358
358
  def test_subclass_parse
359
359
  klass = Class.new(Nokogiri::XML::Document)
360
360
  doc = klass.parse(File.read(XML_FILE))
361
- assert_equal @xml.to_s, doc.to_s
361
+ # lame hack uses root to avoid comparing DOCTYPE tags which can appear out of order.
362
+ # I should really finish lorax and use that here.
363
+ assert_equal @xml.root.to_s, doc.root.to_s
362
364
  assert_instance_of klass, doc
363
365
  end
364
366
 
365
367
  def test_document_parse_method
366
368
  xml = Nokogiri::XML::Document.parse(File.read(XML_FILE))
367
- assert_equal @xml.to_s, xml.to_s
369
+ # lame hack uses root to avoid comparing DOCTYPE tags which can appear out of order.
370
+ # I should really finish lorax and use that here.
371
+ assert_equal @xml.root.to_s, xml.root.to_s
368
372
  end
369
373
 
370
374
  def test_encoding=
@@ -252,8 +252,8 @@ module Nokogiri
252
252
  doc = Nokogiri::XML "<root>foo</root>"
253
253
  pi = Nokogiri::XML::ProcessingInstruction.new(doc, "xml-stylesheet", %q{type="text/xsl" href="foo.xsl"})
254
254
  doc.root.add_previous_sibling pi
255
- expected_doc = %Q{<?xml version="1.0"?>\n<?xml-stylesheet type="text/xsl" href="foo.xsl"?>\n<root>foo</root>\n}
256
- assert_equal expected_doc, doc.to_xml
255
+ expected_doc = %Q{<?xml version="1.0"?>\n<?xml-stylesheet type="text/xsl" href="foo.xsl"?>\n<root>foo</root>}
256
+ assert_includes doc.to_xml, expected_doc
257
257
  end
258
258
 
259
259
  def test_find_by_css_with_tilde_eql
@@ -254,6 +254,17 @@ module Nokogiri
254
254
  end
255
255
  assert_equal 123.456, value
256
256
  end
257
+
258
+ def test_custom_xpath_with_bullshit_arguments
259
+ xml = %q{<foo> </foo>}
260
+ doc = Nokogiri::XML.parse(xml)
261
+ foo = doc.xpath('//foo[bool_function(bar/baz)]', Class.new {
262
+ def bool_function(value)
263
+ true
264
+ end
265
+ }.new)
266
+ assert_equal foo, doc.xpath("//foo")
267
+ end
257
268
  end
258
269
  end
259
270
  end
@@ -0,0 +1,84 @@
1
+ #! /usr/bin/env bash
2
+ #
3
+ # script to run tests on all relevant rubies, and valgrind on supported rubies.
4
+ # outputs tests to `test.log` and valgrind output to `valgrind.log`.
5
+ #
6
+ # requires `rvm` to be installed. sorry about that, multiruby dudes.
7
+ #
8
+
9
+ RUBIES="ruby-1.9.3 jruby-1.6.5 ree-1.8.7 ruby-1.9.2 ruby-1.8.7"
10
+ TEST_LOG=test.log
11
+ VALGRIND_LOG=valgrind.log
12
+
13
+ # Load RVM into a shell session *as a function*
14
+ if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
15
+ source "$HOME/.rvm/scripts/rvm"
16
+ elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
17
+ source "/usr/local/rvm/scripts/rvm"
18
+ else
19
+ echo "ERROR: An RVM installation was not found.\n"
20
+ fi
21
+
22
+ > $TEST_LOG
23
+ > $VALGRIND_LOG
24
+ set -o errexit
25
+
26
+ function rvm_use {
27
+ current_ruby=$1
28
+ rvm use "${1}@nokogiri" --create
29
+ }
30
+
31
+ function generate_parser_and_tokenizer {
32
+ old_ruby=$current_ruby
33
+ rvm_use ruby-1.8.7
34
+ bundle exec rake generate 2>&1 > /dev/null
35
+ rvm_use $old_ruby
36
+ }
37
+
38
+ function clean {
39
+ bundle exec rake clean clobber 2>&1 > /dev/null
40
+ }
41
+
42
+ function compile {
43
+ echo "** compiling ..."
44
+ generate_parser_and_tokenizer
45
+ bundle exec rake compile 2>&1 > /dev/null
46
+ }
47
+
48
+ for ruby in $RUBIES ; do
49
+ rvm_use ${ruby}
50
+ if gem list bundler | fgrep -v 1.1.rc 2>&1 > /dev/null ; then
51
+ gem install bundler --pre
52
+ fi
53
+ bundle install --quiet --local || bundle install
54
+ clean
55
+ done
56
+
57
+ for ruby in $RUBIES ; do
58
+ rvm_use ${ruby}
59
+ echo -e "**\n** testing nokogiri on ${ruby}\n**" | tee -a $TEST_LOG
60
+ clean
61
+ compile
62
+ echo "** running tests ..."
63
+ if [[ $ruby =~ "jruby" ]] ; then
64
+ # I get:
65
+ # /usr/lib/jvm/java-7-oracle/bin/java: symbol lookup error: /home/mike/.rvm/gems/jruby-1.6.5@nokogiri/gems/racc-1.4.7/lib/racc/cparse.so: undefined symbol: rb_catch
66
+ # if I use 'bundle exec' with jruby. Anybody?
67
+ rake test 2>&1 | tee -a $TEST_LOG
68
+ else
69
+ bundle exec rake test 2>&1 | tee -a $TEST_LOG
70
+ fi
71
+ clean
72
+ done
73
+
74
+ for ruby in $RUBIES ; do
75
+ if [[ ! $ruby =~ "jruby" ]] ; then
76
+ rvm_use ${ruby}
77
+ echo -e "**\n** nokogiri prerelease: ${ruby}\n**" | tee -a $VALGRIND_LOG
78
+ clean
79
+ compile
80
+ echo "** running valgrind on tests ..."
81
+ bundle exec rake test:valgrind 2>&1 | tee -a $VALGRIND_LOG
82
+ clean
83
+ fi
84
+ done
metadata CHANGED
@@ -1,13 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nokogiri
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
5
- prerelease:
4
+ hash: -1629906982
5
+ prerelease: 6
6
6
  segments:
7
7
  - 1
8
8
  - 5
9
+ - 3
10
+ - rc
9
11
  - 2
10
- version: 1.5.2
12
+ version: 1.5.3.rc2
11
13
  platform: ruby
12
14
  authors:
13
15
  - Aaron Patterson
@@ -17,7 +19,7 @@ autorequire:
17
19
  bindir: bin
18
20
  cert_chain: []
19
21
 
20
- date: 2012-03-09 00:00:00 Z
22
+ date: 2012-03-22 00:00:00 Z
21
23
  dependencies:
22
24
  - !ruby/object:Gem::Dependency
23
25
  version_requirements: &id001 !ruby/object:Gem::Requirement
@@ -32,8 +34,8 @@ dependencies:
32
34
  version: "1.1"
33
35
  prerelease: false
34
36
  requirement: *id001
35
- type: :development
36
37
  name: hoe-bundler
38
+ type: :development
37
39
  - !ruby/object:Gem::Dependency
38
40
  version_requirements: &id002 !ruby/object:Gem::Requirement
39
41
  none: false
@@ -48,8 +50,8 @@ dependencies:
48
50
  version: 1.0.3
49
51
  prerelease: false
50
52
  requirement: *id002
51
- type: :development
52
53
  name: hoe-debugging
54
+ type: :development
53
55
  - !ruby/object:Gem::Dependency
54
56
  version_requirements: &id003 !ruby/object:Gem::Requirement
55
57
  none: false
@@ -63,8 +65,8 @@ dependencies:
63
65
  version: "1.0"
64
66
  prerelease: false
65
67
  requirement: *id003
66
- type: :development
67
68
  name: hoe-gemspec
69
+ type: :development
68
70
  - !ruby/object:Gem::Dependency
69
71
  version_requirements: &id004 !ruby/object:Gem::Requirement
70
72
  none: false
@@ -78,8 +80,8 @@ dependencies:
78
80
  version: "1.4"
79
81
  prerelease: false
80
82
  requirement: *id004
81
- type: :development
82
83
  name: hoe-git
84
+ type: :development
83
85
  - !ruby/object:Gem::Dependency
84
86
  version_requirements: &id005 !ruby/object:Gem::Requirement
85
87
  none: false
@@ -94,8 +96,8 @@ dependencies:
94
96
  version: 0.2.2
95
97
  prerelease: false
96
98
  requirement: *id005
97
- type: :development
98
99
  name: mini_portile
100
+ type: :development
99
101
  - !ruby/object:Gem::Dependency
100
102
  version_requirements: &id006 !ruby/object:Gem::Requirement
101
103
  none: false
@@ -110,8 +112,8 @@ dependencies:
110
112
  version: 2.2.2
111
113
  prerelease: false
112
114
  requirement: *id006
113
- type: :development
114
115
  name: minitest
116
+ type: :development
115
117
  - !ruby/object:Gem::Dependency
116
118
  version_requirements: &id007 !ruby/object:Gem::Requirement
117
119
  none: false
@@ -126,8 +128,8 @@ dependencies:
126
128
  version: 1.4.6
127
129
  prerelease: false
128
130
  requirement: *id007
129
- type: :development
130
131
  name: racc
132
+ type: :development
131
133
  - !ruby/object:Gem::Dependency
132
134
  version_requirements: &id008 !ruby/object:Gem::Requirement
133
135
  none: false
@@ -142,8 +144,8 @@ dependencies:
142
144
  version: 0.8.0
143
145
  prerelease: false
144
146
  requirement: *id008
145
- type: :development
146
147
  name: rake-compiler
148
+ type: :development
147
149
  - !ruby/object:Gem::Dependency
148
150
  version_requirements: &id009 !ruby/object:Gem::Requirement
149
151
  none: false
@@ -158,8 +160,8 @@ dependencies:
158
160
  version: 1.0.5
159
161
  prerelease: false
160
162
  requirement: *id009
161
- type: :development
162
163
  name: rexical
164
+ type: :development
163
165
  - !ruby/object:Gem::Dependency
164
166
  version_requirements: &id010 !ruby/object:Gem::Requirement
165
167
  none: false
@@ -173,8 +175,8 @@ dependencies:
173
175
  version: "3.10"
174
176
  prerelease: false
175
177
  requirement: *id010
176
- type: :development
177
178
  name: rdoc
179
+ type: :development
178
180
  - !ruby/object:Gem::Dependency
179
181
  version_requirements: &id011 !ruby/object:Gem::Requirement
180
182
  none: false
@@ -188,8 +190,8 @@ dependencies:
188
190
  version: "2.13"
189
191
  prerelease: false
190
192
  requirement: *id011
191
- type: :development
192
193
  name: hoe
194
+ type: :development
193
195
  description: "Nokogiri (\xE9\x8B\xB8) is an HTML, XML, SAX, and Reader parser. Among Nokogiri's\n\
194
196
  many features is the ability to search documents via XPath or CSS3 selectors.\n\n\
195
197
  XML is like violence - if it doesn\xE2\x80\x99t solve your problems, you are not using\n\
@@ -248,11 +250,16 @@ files:
248
250
  - .gemtest
249
251
  - CHANGELOG.ja.rdoc
250
252
  - CHANGELOG.rdoc
253
+ - C_CODING_STYLE.rdoc
251
254
  - Manifest.txt
252
255
  - README.ja.rdoc
253
256
  - README.rdoc
257
+ - ROADMAP.md
254
258
  - Rakefile
259
+ - STANDARD_RESPONSES.md
260
+ - Y_U_NO_GEMSPEC.md
255
261
  - bin/nokogiri
262
+ - build_all
256
263
  - ext/nokogiri/depend
257
264
  - ext/nokogiri/extconf.rb
258
265
  - ext/nokogiri/html_document.c
@@ -384,7 +391,6 @@ files:
384
391
  - lib/nokogiri/xslt.rb
385
392
  - lib/nokogiri/xslt/stylesheet.rb
386
393
  - lib/xsd/xmlparser/nokogiri.rb
387
- - nokogiri_help_responses.md
388
394
  - tasks/cross_compile.rb
389
395
  - tasks/nokogiri.org.rb
390
396
  - tasks/test.rb
@@ -414,7 +420,9 @@ files:
414
420
  - test/files/staff.xml
415
421
  - test/files/staff.xslt
416
422
  - test/files/tlm.html
423
+ - test/files/to_be_xincluded.xml
417
424
  - test/files/valid_bar.xml
425
+ - test/files/xinclude.xml
418
426
  - test/helper.rb
419
427
  - test/html/sax/test_parser.rb
420
428
  - test/html/sax/test_parser_context.rb
@@ -442,6 +450,7 @@ files:
442
450
  - test/xml/test_attr.rb
443
451
  - test/xml/test_attribute_decl.rb
444
452
  - test/xml/test_builder.rb
453
+ - test/xml/test_c14n.rb
445
454
  - test/xml/test_cdata.rb
446
455
  - test/xml/test_comment.rb
447
456
  - test/xml/test_document.rb
@@ -457,9 +466,9 @@ files:
457
466
  - test/xml/test_node.rb
458
467
  - test/xml/test_node_attributes.rb
459
468
  - test/xml/test_node_encoding.rb
469
+ - test/xml/test_node_inheritance.rb
460
470
  - test/xml/test_node_reparenting.rb
461
471
  - test/xml/test_node_set.rb
462
- - test/xml/test_node_inheritance.rb
463
472
  - test/xml/test_parse_options.rb
464
473
  - test/xml/test_processing_instruction.rb
465
474
  - test/xml/test_reader_encoding.rb
@@ -468,12 +477,11 @@ files:
468
477
  - test/xml/test_syntax_error.rb
469
478
  - test/xml/test_text.rb
470
479
  - test/xml/test_unparented_node.rb
480
+ - test/xml/test_xinclude.rb
471
481
  - test/xml/test_xpath.rb
472
482
  - test/xslt/test_custom_functions.rb
473
483
  - test/xslt/test_exception_handling.rb
474
- - test/xml/test_c14n.rb
475
- - test/xml/test_xinclude.rb
476
- - C_CODING_STYLE.rdoc
484
+ - test_all
477
485
  homepage: http://nokogiri.org
478
486
  licenses: []
479
487
 
@@ -497,16 +505,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
497
505
  required_rubygems_version: !ruby/object:Gem::Requirement
498
506
  none: false
499
507
  requirements:
500
- - - ">="
508
+ - - ">"
501
509
  - !ruby/object:Gem::Version
502
- hash: 3
510
+ hash: 25
503
511
  segments:
504
- - 0
505
- version: "0"
512
+ - 1
513
+ - 3
514
+ - 1
515
+ version: 1.3.1
506
516
  requirements: []
507
517
 
508
518
  rubyforge_project: nokogiri
509
- rubygems_version: 1.8.15
519
+ rubygems_version: 1.8.17
510
520
  signing_key:
511
521
  specification_version: 3
512
522
  summary: "Nokogiri (\xE9\x8B\xB8) is an HTML, XML, SAX, and Reader parser"