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 +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:
|