rubypodder 0.1.2 → 0.1.4

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.
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require 'rake/gempackagetask'
4
4
  spec = Gem::Specification.new do |s|
5
5
  s.platform = Gem::Platform::RUBY
6
6
  s.name = "rubypodder"
7
- s.version = "0.1.2"
7
+ s.version = "0.1.4"
8
8
  s.author = "Lex Miller"
9
9
  s.email = "lex.miller @nospam@ gmail.com"
10
10
  s.summary = "A podcast aggregator without an interface"
@@ -15,6 +15,8 @@ spec = Gem::Specification.new do |s|
15
15
  s.default_executable = "rubypodder"
16
16
  s.autorequire = "rubypodder"
17
17
  s.add_dependency("rio")
18
+ s.add_dependency("rake")
19
+ s.add_dependency("mocha")
18
20
  s.test_files = Dir.glob('tests/*.rb')
19
21
  s.has_rdoc = true
20
22
  s.extra_rdoc_files = ["README", "MIT-LICENSE"]
@@ -25,3 +27,6 @@ end
25
27
  task :default => "pkg/#{spec.name}-#{spec.version}.gem" do
26
28
  puts "generated latest version"
27
29
  end
30
+ task :test do
31
+ ruby "tests/ts_rubypodder.rb"
32
+ end
data/lib/rubypodder.rb CHANGED
@@ -17,7 +17,7 @@ end
17
17
 
18
18
  class RubyPodder
19
19
 
20
- Version = 'rubypodder v0.1.2'
20
+ Version = 'rubypodder v0.1.4'
21
21
 
22
22
  attr_reader :conf_file, :log_file, :done_file, :date_dir
23
23
 
@@ -83,9 +83,10 @@ class RubyPodder
83
83
  begin
84
84
  file_name = dest_file_name(url)
85
85
  rio(file_name) < rio(url)
86
- record_download(url)
87
86
  rescue
88
87
  @log.error(" Failed to download #{url}")
88
+ else
89
+ record_download(url)
89
90
  end
90
91
  end
91
92
 
@@ -108,7 +109,12 @@ class RubyPodder
108
109
  @log.error(" Can't read from #{url}")
109
110
  next
110
111
  end
111
- rss = parse_rss(http_body)
112
+ begin
113
+ rss = parse_rss(http_body)
114
+ rescue
115
+ @log.error(" Can't parse this feed")
116
+ next
117
+ end
112
118
  @log.info("Channel: #{rss.channel.title}")
113
119
  rss.items.each do |item|
114
120
  download(item.enclosure.url)
@@ -1,6 +1,7 @@
1
1
  $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2
2
  require 'test/unit'
3
3
  require 'rubypodder'
4
+ require 'mocha'
4
5
 
5
6
  class TC_RubyPodder < Test::Unit::TestCase
6
7
 
@@ -174,6 +175,9 @@ class TC_RubyPodder < Test::Unit::TestCase
174
175
  url1 = "http://www.google.com/index.html"
175
176
  assert(!@rp.already_downloaded(url1), "url1 should not be already downloaded before download of url1")
176
177
  @rp.download(url1)
178
+ File.open( @rp.log_file ) do |f|
179
+ return if (f.any? { |line| line =~ /ERROR/ }) # Don't test this case if no internet connection
180
+ end
177
181
  assert(@rp.already_downloaded(url1), "url1 should be already downloaded after download of url1")
178
182
  url2 = "http://www.google.co.nz/index.html"
179
183
  @rp.download(url2)
@@ -182,11 +186,11 @@ class TC_RubyPodder < Test::Unit::TestCase
182
186
  end
183
187
 
184
188
  def test_download_omits_done_items
185
- @rp.download("http://www.google.com/index.html")
186
189
  dest_file = @rp.date_dir + "/" + "index.html"
187
190
  system("rm -rf " + dest_file)
191
+ @rp.record_download("http://www.google.com/index.html")
188
192
  @rp.download("http://www.google.com/index.html")
189
- assert(!File.exists?(dest_file))
193
+ assert(!File.exists?(dest_file), "#{dest_file} should not be downloaded again if already recorded as done")
190
194
  end
191
195
 
192
196
  def test_download_error_is_logged
@@ -224,4 +228,12 @@ class TC_RubyPodder < Test::Unit::TestCase
224
228
  end
225
229
  end
226
230
 
231
+ def test_log_contains_error_for_unparsable_rss_source
232
+ @rp.stubs(:parse_rss).raises(RSS::NotWellFormedError, 'This is not well formed XML')
233
+ @rp.run
234
+ File.open( @rp.log_file ) do |f|
235
+ assert(f.any? { |line| line =~ /ERROR/ }, "Parse error in rss source should be logged")
236
+ end
237
+ end
238
+
227
239
  end
data/tests/tc_stdout.rb CHANGED
@@ -40,7 +40,7 @@ class TC_stdout < Test::Unit::TestCase
40
40
  end
41
41
 
42
42
  def test_version
43
- assert_equal "rubypodder v0.1.2\n", wrap { puts `ruby #{@bindir}/rubypodder --version` }
43
+ assert_equal "rubypodder v0.1.4\n", wrap { puts `ruby #{@bindir}/rubypodder --version` }
44
44
  assert exits_without_doing_anything { `ruby #{@bindir}/rubypodder --version` }, "--version doesn't exit immediately"
45
45
  end
46
46
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.11
2
+ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: rubypodder
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.2
7
- date: 2007-02-25 00:00:00 +13:00
6
+ version: 0.1.4
7
+ date: 2007-05-17 00:00:00 +09:00
8
8
  summary: A podcast aggregator without an interface
9
9
  require_paths:
10
- - lib
10
+ - lib
11
11
  email: lex.miller @nospam@ gmail.com
12
12
  homepage:
13
13
  rubyforge_project:
@@ -18,44 +18,64 @@ bindir: bin
18
18
  has_rdoc: true
19
19
  required_ruby_version: !ruby/object:Gem::Version::Requirement
20
20
  requirements:
21
- -
22
- - ">"
23
- - !ruby/object:Gem::Version
24
- version: 0.0.0
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
25
24
  version:
26
25
  platform: ruby
27
26
  signing_key:
28
27
  cert_chain:
28
+ post_install_message:
29
29
  authors:
30
- - Lex Miller
30
+ - Lex Miller
31
31
  files:
32
- - lib/rubypodder.rb
33
- - tests/tc_rubypodder.rb
34
- - tests/ts_rubypodder.rb
35
- - tests/tc_stdout.rb
36
- - Rakefile
37
- - README
38
- - MIT-LICENSE
32
+ - lib/rubypodder.rb
33
+ - tests/tc_rubypodder.rb
34
+ - tests/ts_rubypodder.rb
35
+ - tests/tc_stdout.rb
36
+ - Rakefile
37
+ - README
38
+ - MIT-LICENSE
39
39
  test_files:
40
- - tests/tc_rubypodder.rb
41
- - tests/ts_rubypodder.rb
42
- - tests/tc_stdout.rb
40
+ - tests/tc_rubypodder.rb
41
+ - tests/ts_rubypodder.rb
42
+ - tests/tc_stdout.rb
43
43
  rdoc_options: []
44
+
44
45
  extra_rdoc_files:
45
- - README
46
- - MIT-LICENSE
46
+ - README
47
+ - MIT-LICENSE
47
48
  executables:
48
- - rubypodder
49
+ - rubypodder
49
50
  extensions: []
51
+
50
52
  requirements: []
53
+
51
54
  dependencies:
52
- - !ruby/object:Gem::Dependency
53
- name: rio
54
- version_requirement:
55
- version_requirements: !ruby/object:Gem::Version::Requirement
56
- requirements:
57
- -
58
- - ">"
59
- - !ruby/object:Gem::Version
60
- version: 0.0.0
61
- version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: rio
57
+ version_requirement:
58
+ version_requirements: !ruby/object:Gem::Version::Requirement
59
+ requirements:
60
+ - - ">"
61
+ - !ruby/object:Gem::Version
62
+ version: 0.0.0
63
+ version:
64
+ - !ruby/object:Gem::Dependency
65
+ name: rake
66
+ version_requirement:
67
+ version_requirements: !ruby/object:Gem::Version::Requirement
68
+ requirements:
69
+ - - ">"
70
+ - !ruby/object:Gem::Version
71
+ version: 0.0.0
72
+ version:
73
+ - !ruby/object:Gem::Dependency
74
+ name: mocha
75
+ version_requirement:
76
+ version_requirements: !ruby/object:Gem::Version::Requirement
77
+ requirements:
78
+ - - ">"
79
+ - !ruby/object:Gem::Version
80
+ version: 0.0.0
81
+ version: