rubypodder 0.1.2 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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: