diff options
author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-29 09:12:56 +0000 |
---|---|---|
committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-29 09:12:56 +0000 |
commit | 51bd9cada87c6f07499d767dc712f0177cb19a08 (patch) | |
tree | d8163b71056db73ec20a0a32dbdf552cefac0833 /test/rss/rss-assertions.rb | |
parent | 8272251f6dd058fab4e34150525f345eebb5693c (diff) |
* NEWS: add an entry for rss.
* lib/rss/, test/rss/: merge from trunk.
- 0.2.4 -> 0.2.5.
- RSS::Maker.make raise an exception not returns nil for invalid
feed making.
- RSS::Maker.make requires block.
- don't use instance_variable to initialize variables. (speed up)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17677 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rss/rss-assertions.rb')
-rw-r--r-- | test/rss/rss-assertions.rb | 48 |
1 files changed, 32 insertions, 16 deletions
diff --git a/test/rss/rss-assertions.rb b/test/rss/rss-assertions.rb index 41e6cd62c5..f396e9a446 100644 --- a/test/rss/rss-assertions.rb +++ b/test/rss/rss-assertions.rb @@ -570,7 +570,7 @@ EOA text << char char.succ! end - base64_content = Base64.encode64(Zlib::Deflate.deflate(text)) + base64_content = [Zlib::Deflate.deflate(text)].pack("m").delete("\n") [false, true].each do |with_space| xml_content = base64_content @@ -1272,22 +1272,32 @@ EOA invalid_feed_checker=nil) _wrap_assertion do elements = [] - invalid_feed = false - feed = RSS::Maker.make("atom:#{feed_type}") do |maker| - yield maker - targets = chain_reader(maker, maker_readers) - targets.each do |target| - element = maker_extractor.call(target) - elements << element if element + invalid_feed_exception = nil + feed = nil + begin + feed = RSS::Maker.make("atom:#{feed_type}") do |maker| + yield maker + targets = chain_reader(maker, maker_readers) + targets.each do |target| + element = maker_extractor.call(target) + elements << element if element + end + if invalid_feed_checker + invalid_feed_exception = invalid_feed_checker.call(targets) + end end - if invalid_feed_checker - invalid_feed = invalid_feed_checker.call(targets) + rescue RSS::Error + if invalid_feed_exception.is_a?(RSS::TooMuchTagError) + assert_too_much_tag(invalid_feed_exception.tag, + invalid_feed_exception.parent) do + raise + end + else + raise end end - if invalid_feed - assert_nil(feed) - else + if invalid_feed_exception.nil? actual_elements = chain_reader(feed, feed_readers) || [] actual_elements = actual_elements.collect do |target| feed_extractor.call(target) @@ -1542,18 +1552,24 @@ EOA :length => target.length, } end + + if feed_readers.first == "entries" + parent = "entry" + else + parent = feed_type + end invalid_feed_checker = Proc.new do |targets| infos = {} - invalid = false + invalid_exception = nil targets.each do |target| key = [target.hreflang, target.type] if infos.has_key?(key) - invalid = true + invalid_exception = RSS::TooMuchTagError.new("link", parent) break end infos[key] = true if target.rel.nil? or target.rel == "alternate" end - invalid + invalid_exception end invalid_feed_checker = nil if allow_duplication _assert_maker_atom_elements(feed_type, maker_readers, feed_readers, |