rss 0.2.8 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/NEWS.md +16 -0
  3. data/Rakefile +8 -1
  4. data/lib/rss/itunes.rb +49 -1
  5. data/lib/rss/maker/itunes.rb +13 -0
  6. data/lib/rss/parser.rb +1 -1
  7. data/lib/rss/version.rb +1 -1
  8. data/rss.gemspec +6 -56
  9. data/test/dot.png +0 -0
  10. data/test/rss-assertions.rb +2116 -0
  11. data/test/rss-testcase.rb +479 -0
  12. data/test/run-test.rb +15 -0
  13. data/test/test_1.0.rb +308 -0
  14. data/test/test_2.0.rb +412 -0
  15. data/test/test_accessor.rb +104 -0
  16. data/test/test_atom.rb +684 -0
  17. data/test/test_content.rb +105 -0
  18. data/test/test_dublincore.rb +270 -0
  19. data/test/test_image.rb +215 -0
  20. data/test/test_inherit.rb +41 -0
  21. data/test/test_itunes.rb +360 -0
  22. data/test/test_maker_0.9.rb +477 -0
  23. data/test/test_maker_1.0.rb +519 -0
  24. data/test/test_maker_2.0.rb +758 -0
  25. data/test/test_maker_atom_entry.rb +394 -0
  26. data/test/test_maker_atom_feed.rb +455 -0
  27. data/test/test_maker_content.rb +48 -0
  28. data/test/test_maker_dc.rb +150 -0
  29. data/test/test_maker_image.rb +63 -0
  30. data/test/test_maker_itunes.rb +488 -0
  31. data/test/test_maker_slash.rb +38 -0
  32. data/test/test_maker_sy.rb +45 -0
  33. data/test/test_maker_taxo.rb +82 -0
  34. data/test/test_maker_trackback.rb +42 -0
  35. data/test/test_maker_xml-stylesheet.rb +84 -0
  36. data/test/test_parser.rb +122 -0
  37. data/test/test_parser_1.0.rb +529 -0
  38. data/test/test_parser_2.0.rb +123 -0
  39. data/test/test_parser_atom_entry.rb +164 -0
  40. data/test/test_parser_atom_feed.rb +277 -0
  41. data/test/test_setup_maker_0.9.rb +247 -0
  42. data/test/test_setup_maker_1.0.rb +551 -0
  43. data/test/test_setup_maker_2.0.rb +309 -0
  44. data/test/test_setup_maker_atom_entry.rb +410 -0
  45. data/test/test_setup_maker_atom_feed.rb +446 -0
  46. data/test/test_setup_maker_itunes.rb +146 -0
  47. data/test/test_setup_maker_slash.rb +39 -0
  48. data/test/test_slash.rb +65 -0
  49. data/test/test_syndication.rb +126 -0
  50. data/test/test_taxonomy.rb +173 -0
  51. data/test/test_to_s.rb +701 -0
  52. data/test/test_trackback.rb +136 -0
  53. data/test/test_xml-stylesheet.rb +109 -0
  54. metadata +109 -7
  55. data/.gitignore +0 -9
  56. data/.travis.yml +0 -26
@@ -0,0 +1,136 @@
1
+ # frozen_string_literal: false
2
+ require "cgi"
3
+ require "rexml/document"
4
+
5
+ require_relative "rss-testcase"
6
+
7
+ require "rss/1.0"
8
+ require "rss/2.0"
9
+ require "rss/trackback"
10
+
11
+ module RSS
12
+ class TestTrackBack < TestCase
13
+
14
+ def setup
15
+ @prefix = "trackback"
16
+ @uri = "http://madskills.com/public/xml/rss/module/trackback/"
17
+
18
+ @parents = %w(item)
19
+
20
+ @elems = {
21
+ :ping => "http://bar.com/tb.cgi?tb_id=rssplustrackback",
22
+ :about => "http://foo.com/trackback/tb.cgi?tb_id=20020923",
23
+ }
24
+
25
+ @content_nodes = @elems.collect do |name, value|
26
+ "<#{@prefix}:#{name} rdf:resource=\"#{CGI.escapeHTML(value.to_s)}\"/>"
27
+ end.join("\n")
28
+
29
+ @content_nodes2 = @elems.collect do |name, value|
30
+ "<#{@prefix}:#{name}>#{CGI.escapeHTML(value.to_s)}</#{@prefix}:#{name}>"
31
+ end.join("\n")
32
+
33
+ @rss_source = make_RDF(<<-EOR, {@prefix => @uri})
34
+ #{make_channel()}
35
+ #{make_image()}
36
+ #{make_item(@content_nodes)}
37
+ #{make_textinput()}
38
+ EOR
39
+
40
+ @rss = Parser.parse(@rss_source)
41
+
42
+ @rss20_source = make_rss20(nil, {@prefix => @uri}) do
43
+ make_channel20(nil) do
44
+ make_item20(@content_nodes2)
45
+ end
46
+ end
47
+
48
+ @rss20 = Parser.parse(@rss20_source, false)
49
+ end
50
+
51
+ def test_parser
52
+
53
+ assert_nothing_raised do
54
+ Parser.parse(@rss_source)
55
+ end
56
+
57
+ @elems.find_all{|k, v| k == :ping}.each do |tag, value|
58
+ assert_too_much_tag(tag.to_s, "item") do
59
+ Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
60
+ #{make_channel()}
61
+ #{make_item(("<" + @prefix + ":" + tag.to_s + " rdf:resource=\"" +
62
+ CGI.escapeHTML(value.to_s) +
63
+ "\"/>") * 2)}
64
+ EOR
65
+ end
66
+ end
67
+
68
+ @elems.find_all{|k, v| k == :about}.each do |tag, value|
69
+ assert_missing_tag("trackback:ping", "item") do
70
+ Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
71
+ #{make_channel()}
72
+ #{make_item(("<" + @prefix + ":" + tag.to_s + " rdf:resource=\"" +
73
+ CGI.escapeHTML(value.to_s) +
74
+ "\"/>") * 2)}
75
+ EOR
76
+ end
77
+
78
+ end
79
+
80
+ end
81
+
82
+ def test_accessor
83
+
84
+ new_value = {
85
+ :ping => "http://baz.com/trackback/tb.cgi?tb_id=20030808",
86
+ :about => "http://hoge.com/trackback/tb.cgi?tb_id=90030808",
87
+ }
88
+
89
+ @elems.each do |name, value|
90
+ @parents.each do |parent|
91
+ accessor = "#{RSS::TRACKBACK_PREFIX}_#{name}"
92
+ target = @rss.__send__(parent)
93
+ target20 = @rss20.channel.__send__(parent, -1)
94
+ assert_equal(value, target.__send__(accessor))
95
+ assert_equal(value, target20.__send__(accessor))
96
+ if name == :about
97
+ # abount is zero or more
98
+ target.__send__("#{accessor}=", 0, new_value[name].to_s)
99
+ target20.__send__("#{accessor}=", 0, new_value[name].to_s)
100
+ else
101
+ target.__send__("#{accessor}=", new_value[name].to_s)
102
+ target20.__send__("#{accessor}=", new_value[name].to_s)
103
+ end
104
+ assert_equal(new_value[name], target.__send__(accessor))
105
+ assert_equal(new_value[name], target20.__send__(accessor))
106
+ end
107
+ end
108
+
109
+ end
110
+
111
+ def test_to_s
112
+
113
+ @elems.each do |name, value|
114
+ excepted = %Q!<#{@prefix}:#{name} rdf:resource="#{CGI.escapeHTML(value)}"/>!
115
+ @parents.each do |parent|
116
+ meth = "#{RSS::TRACKBACK_PREFIX}_#{name}_element"
117
+ meth << "s" if name == :about
118
+ assert_equal(excepted, @rss.__send__(parent).__send__(meth))
119
+ end
120
+ end
121
+
122
+ REXML::Document.new(@rss_source).root.each_element do |parent|
123
+ if @parents.include?(parent.name)
124
+ parent.each_element do |elem|
125
+ if elem.namespace == @uri
126
+ assert_equal(elem.attributes["resource"], @elems[elem.name.intern])
127
+ end
128
+ end
129
+ end
130
+ end
131
+
132
+ end
133
+
134
+ end
135
+ end
136
+
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: false
2
+ require "rexml/document"
3
+
4
+ require_relative "rss-testcase"
5
+
6
+ require "rss/1.0"
7
+ require "rss/xml-stylesheet"
8
+
9
+ module RSS
10
+ class TestXMLStyleSheet < TestCase
11
+
12
+ def test_accessor
13
+ [
14
+ {:href => "a.xsl", :type => "text/xsl"},
15
+ {:media => "print", :title => "FOO"},
16
+ {:charset => "UTF-8", :alternate => "yes"},
17
+ ].each do |attrs|
18
+ assert_xml_stylesheet_attrs(attrs, XMLStyleSheet.new(attrs))
19
+ end
20
+ end
21
+
22
+ def test_to_s
23
+ [
24
+ {:href => "a.xsl", :type => "text/xsl"},
25
+ {:type => "text/xsl"},
26
+ {:href => "a.xsl", :guess_type => "text/xsl"},
27
+ {:href => "a.css", :type => "text/css"},
28
+ {:href => "a.css", :type => "text/xsl",
29
+ :guess_type => "text/css"},
30
+ {:href => "a.xsl", :type => "text/xsl",
31
+ :title => "sample", :media => "printer",
32
+ :charset => "UTF-8", :alternate => "yes"},
33
+ {:href => "a.css", :guess_type => "text/css",
34
+ :alternate => "no"},
35
+ {:type => "text/xsl", :title => "sample",
36
+ :media => "printer", :charset => "UTF-8",
37
+ :alternate => "yes"},
38
+ ].each do |attrs|
39
+ target, contents = parse_pi(XMLStyleSheet.new(attrs).to_s)
40
+ assert_xml_stylesheet(target, attrs, XMLStyleSheet.new(contents))
41
+ end
42
+ end
43
+
44
+ def test_bad_alternate
45
+ %w(a ___ ??? BAD_ALTERNATE).each do |value|
46
+ xss = XMLStyleSheet.new
47
+ assert_raise(NotAvailableValueError) do
48
+ xss.alternate = value
49
+ end
50
+ xss.do_validate = false
51
+ assert_nothing_raised do
52
+ xss.alternate = value
53
+ end
54
+ assert_nil(xss.alternate)
55
+ end
56
+ end
57
+
58
+ def test_parse
59
+ [
60
+ [{:href => "a.xsl", :type => "text/xsl"},],
61
+ [{:media => "print", :title => "FOO"},],
62
+ [{:charset => "UTF-8", :alternate => "yes"},],
63
+ [{:href => "a.xsl", :type => "text/xsl"},
64
+ {:type => "text/xsl"},
65
+ {:href => "a.xsl", :guess_type => "text/xsl"},
66
+ {:href => "a.css", :type => "text/css"},
67
+ {:href => "a.css", :type => "text/xsl",
68
+ :guess_type => "text/css"},
69
+ {:href => "a.xsl", :type => "text/xsl",
70
+ :title => "sample", :media => "printer",
71
+ :charset => "UTF-8", :alternate => "yes"},
72
+ {:href => "a.css", :guess_type => "text/css",
73
+ :alternate => "no"},
74
+ {:type => "text/xsl", :title => "sample",
75
+ :media => "printer", :charset => "UTF-8",
76
+ :alternate => "yes"},],
77
+ ].each do |xsss|
78
+ doc = REXML::Document.new(make_sample_RDF)
79
+ root = doc.root
80
+ xsss.each do |xss|
81
+ content = xss.collect do |key, name|
82
+ %Q[#{key}="#{name}"]
83
+ end.join(" ")
84
+ pi = REXML::Instruction.new("xml-stylesheet", content)
85
+ root.previous_sibling = pi
86
+ end
87
+ rss = Parser.parse(doc.to_s)
88
+ have_href_xsss = xsss.find_all {|xss| xss.has_key?(:href)}
89
+ assert_equal(have_href_xsss.size, rss.xml_stylesheets.size)
90
+ rss.xml_stylesheets.each_with_index do |stylesheet, i|
91
+ target, = parse_pi(stylesheet.to_s)
92
+ assert_xml_stylesheet(target, have_href_xsss[i], stylesheet)
93
+ end
94
+ end
95
+ end
96
+
97
+ def parse_pi(pi)
98
+ /\A\s*<\?(\S+)([^?]*\?+(?:[^?>][^?]*\?+)*)>\s*\z/ =~ pi
99
+ target = $1
100
+ dummy = REXML::Document.new("<dummy #{$2.to_s.chop}/>").root
101
+ contents = {}
102
+ dummy.attributes.each do |name, value|
103
+ contents[name] = value
104
+ end
105
+ [target, contents]
106
+ end
107
+
108
+ end
109
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-25 00:00:00.000000000 Z
11
+ date: 2020-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rexml
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -59,8 +73,6 @@ executables: []
59
73
  extensions: []
60
74
  extra_rdoc_files: []
61
75
  files:
62
- - ".gitignore"
63
- - ".travis.yml"
64
76
  - Gemfile
65
77
  - LICENSE.txt
66
78
  - NEWS.md
@@ -111,6 +123,51 @@ files:
111
123
  - lib/rss/xmlparser.rb
112
124
  - lib/rss/xmlscanner.rb
113
125
  - rss.gemspec
126
+ - test/dot.png
127
+ - test/rss-assertions.rb
128
+ - test/rss-testcase.rb
129
+ - test/run-test.rb
130
+ - test/test_1.0.rb
131
+ - test/test_2.0.rb
132
+ - test/test_accessor.rb
133
+ - test/test_atom.rb
134
+ - test/test_content.rb
135
+ - test/test_dublincore.rb
136
+ - test/test_image.rb
137
+ - test/test_inherit.rb
138
+ - test/test_itunes.rb
139
+ - test/test_maker_0.9.rb
140
+ - test/test_maker_1.0.rb
141
+ - test/test_maker_2.0.rb
142
+ - test/test_maker_atom_entry.rb
143
+ - test/test_maker_atom_feed.rb
144
+ - test/test_maker_content.rb
145
+ - test/test_maker_dc.rb
146
+ - test/test_maker_image.rb
147
+ - test/test_maker_itunes.rb
148
+ - test/test_maker_slash.rb
149
+ - test/test_maker_sy.rb
150
+ - test/test_maker_taxo.rb
151
+ - test/test_maker_trackback.rb
152
+ - test/test_maker_xml-stylesheet.rb
153
+ - test/test_parser.rb
154
+ - test/test_parser_1.0.rb
155
+ - test/test_parser_2.0.rb
156
+ - test/test_parser_atom_entry.rb
157
+ - test/test_parser_atom_feed.rb
158
+ - test/test_setup_maker_0.9.rb
159
+ - test/test_setup_maker_1.0.rb
160
+ - test/test_setup_maker_2.0.rb
161
+ - test/test_setup_maker_atom_entry.rb
162
+ - test/test_setup_maker_atom_feed.rb
163
+ - test/test_setup_maker_itunes.rb
164
+ - test/test_setup_maker_slash.rb
165
+ - test/test_slash.rb
166
+ - test/test_syndication.rb
167
+ - test/test_taxonomy.rb
168
+ - test/test_to_s.rb
169
+ - test/test_trackback.rb
170
+ - test/test_xml-stylesheet.rb
114
171
  homepage: https://github.com/ruby/rss
115
172
  licenses:
116
173
  - BSD-2-Clause
@@ -131,8 +188,53 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
188
  version: '0'
132
189
  requirements: []
133
190
  rubyforge_project:
134
- rubygems_version: 2.7.6
191
+ rubygems_version: 2.7.6.2
135
192
  signing_key:
136
193
  specification_version: 4
137
194
  summary: Family of libraries that support various formats of XML "feeds".
138
- test_files: []
195
+ test_files:
196
+ - test/test_maker_2.0.rb
197
+ - test/test_dublincore.rb
198
+ - test/test_setup_maker_slash.rb
199
+ - test/test_parser.rb
200
+ - test/test_maker_xml-stylesheet.rb
201
+ - test/test_maker_0.9.rb
202
+ - test/test_setup_maker_atom_feed.rb
203
+ - test/test_maker_image.rb
204
+ - test/test_parser_atom_entry.rb
205
+ - test/test_maker_taxo.rb
206
+ - test/run-test.rb
207
+ - test/test_itunes.rb
208
+ - test/test_maker_content.rb
209
+ - test/test_maker_dc.rb
210
+ - test/test_inherit.rb
211
+ - test/dot.png
212
+ - test/test_maker_atom_entry.rb
213
+ - test/test_setup_maker_2.0.rb
214
+ - test/test_to_s.rb
215
+ - test/test_setup_maker_itunes.rb
216
+ - test/rss-assertions.rb
217
+ - test/test_xml-stylesheet.rb
218
+ - test/test_1.0.rb
219
+ - test/test_accessor.rb
220
+ - test/test_taxonomy.rb
221
+ - test/test_maker_trackback.rb
222
+ - test/rss-testcase.rb
223
+ - test/test_slash.rb
224
+ - test/test_setup_maker_atom_entry.rb
225
+ - test/test_syndication.rb
226
+ - test/test_maker_1.0.rb
227
+ - test/test_parser_atom_feed.rb
228
+ - test/test_maker_itunes.rb
229
+ - test/test_image.rb
230
+ - test/test_setup_maker_1.0.rb
231
+ - test/test_atom.rb
232
+ - test/test_maker_slash.rb
233
+ - test/test_parser_1.0.rb
234
+ - test/test_setup_maker_0.9.rb
235
+ - test/test_2.0.rb
236
+ - test/test_trackback.rb
237
+ - test/test_content.rb
238
+ - test/test_maker_sy.rb
239
+ - test/test_parser_2.0.rb
240
+ - test/test_maker_atom_feed.rb
data/.gitignore DELETED
@@ -1,9 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
- Gemfile.lock
@@ -1,26 +0,0 @@
1
- notifications:
2
- webhooks:
3
- - https://webhook.commit-email.info/
4
-
5
- language: ruby
6
- matrix:
7
- include:
8
- - name: "2.3"
9
- rvm: 2.3
10
- - name: "2.4"
11
- rvm: 2.4.5
12
- - name: "2.5"
13
- rvm: 2.5.3
14
- - name: "2.6"
15
- rvm: 2.6
16
- - name: "trunk"
17
- rvm: ruby-head
18
- - name: "gem"
19
- rvm: 2.6
20
- install:
21
- - rake install
22
- script:
23
- - mkdir -p tmp
24
- - cd tmp
25
- - cp -a ../test/ ./
26
- - ../run-test.rb