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 +6 -1
- data/lib/rubypodder.rb +9 -3
- data/tests/tc_rubypodder.rb +14 -2
- data/tests/tc_stdout.rb +1 -1
- metadata +52 -32
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.
|
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.
|
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
|
-
|
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)
|
data/tests/tc_rubypodder.rb
CHANGED
@@ -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.
|
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.
|
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.
|
7
|
-
date: 2007-
|
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
|
-
|
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
|
-
|
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
|
-
|
30
|
+
- Lex Miller
|
31
31
|
files:
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
-
|
41
|
-
|
42
|
-
|
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
|
-
|
46
|
-
|
46
|
+
- README
|
47
|
+
- MIT-LICENSE
|
47
48
|
executables:
|
48
|
-
|
49
|
+
- rubypodder
|
49
50
|
extensions: []
|
51
|
+
|
50
52
|
requirements: []
|
53
|
+
|
51
54
|
dependencies:
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
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:
|