rubygems-update 0.8.3
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.
Potentially problematic release.
This version of rubygems-update might be problematic. Click here for more details.
- data/ChangeLog +2335 -0
- data/README +54 -0
- data/Rakefile +293 -0
- data/Releases +98 -0
- data/TODO +7 -0
- data/bin/gem +11 -0
- data/bin/gem_server +111 -0
- data/bin/generate_yaml_index.rb +58 -0
- data/bin/update_rubygems +18 -0
- data/doc/doc.css +73 -0
- data/doc/makedoc.rb +4 -0
- data/examples/application/an-app.gemspec +26 -0
- data/examples/application/bin/myapp +3 -0
- data/examples/application/lib/somefunctionality.rb +3 -0
- data/gemspecs/README +4 -0
- data/gemspecs/cgikit-1.1.0.gemspec +18 -0
- data/gemspecs/jabber4r.gemspec +26 -0
- data/gemspecs/linguistics.gemspec +22 -0
- data/gemspecs/ook.gemspec +21 -0
- data/gemspecs/progressbar.gemspec +22 -0
- data/gemspecs/redcloth.gemspec +22 -0
- data/gemspecs/rublog.gemspec +23 -0
- data/gemspecs/ruby-doom.gemspec +21 -0
- data/gemspecs/rubyjdwp.gemspec +21 -0
- data/gemspecs/statistics.gemspec +21 -0
- data/lib/rubygems.rb +353 -0
- data/lib/rubygems/builder.rb +54 -0
- data/lib/rubygems/cmd_manager.rb +127 -0
- data/lib/rubygems/command.rb +191 -0
- data/lib/rubygems/config_file.rb +57 -0
- data/lib/rubygems/doc_manager.rb +94 -0
- data/lib/rubygems/format.rb +65 -0
- data/lib/rubygems/gem_commands.rb +925 -0
- data/lib/rubygems/gem_runner.rb +23 -0
- data/lib/rubygems/installer.rb +621 -0
- data/lib/rubygems/loadpath_manager.rb +108 -0
- data/lib/rubygems/old_format.rb +150 -0
- data/lib/rubygems/open-uri.rb +604 -0
- data/lib/rubygems/package.rb +740 -0
- data/lib/rubygems/remote_installer.rb +499 -0
- data/lib/rubygems/rubygems_version.rb +6 -0
- data/lib/rubygems/source_index.rb +130 -0
- data/lib/rubygems/specification.rb +613 -0
- data/lib/rubygems/user_interaction.rb +176 -0
- data/lib/rubygems/validator.rb +148 -0
- data/lib/rubygems/version.rb +279 -0
- data/lib/ubygems.rb +4 -0
- data/pkgs/sources/lib/sources.rb +6 -0
- data/pkgs/sources/sources.gemspec +14 -0
- data/post-install.rb +75 -0
- data/redist/session.gem +433 -0
- data/scripts/buildtests.rb +25 -0
- data/scripts/gemdoc.rb +62 -0
- data/scripts/runtest.rb +17 -0
- data/scripts/specdoc.rb +164 -0
- data/setup.rb +1360 -0
- data/test/bogussources.rb +5 -0
- data/test/data/legacy/keyedlist-0.4.0.ruby +11 -0
- data/test/data/legacy/keyedlist-0.4.0.yaml +16 -0
- data/test/data/lib/code.rb +1 -0
- data/test/data/one/README.one +1 -0
- data/test/data/one/lib/one.rb +3 -0
- data/test/data/one/one.gemspec +17 -0
- data/test/data/one/one.yaml +40 -0
- data/test/functional.rb +145 -0
- data/test/gemenvironment.rb +45 -0
- data/test/gemutilities.rb +18 -0
- data/test/insure_session.rb +46 -0
- data/test/mock/gems/gems/sources-0.0.1/lib/sources.rb +5 -0
- data/test/mock/gems/specifications/sources-0.0.1.gemspec +8 -0
- data/test/mockgemui.rb +45 -0
- data/test/onegem.rb +23 -0
- data/test/simple_gem.rb +66 -0
- data/test/test_builder.rb +13 -0
- data/test/test_cached_fetcher.rb +60 -0
- data/test/test_check_command.rb +28 -0
- data/test/test_command.rb +130 -0
- data/test/test_configfile.rb +36 -0
- data/test/test_format.rb +70 -0
- data/test/test_gemloadpaths.rb +45 -0
- data/test/test_gempaths.rb +115 -0
- data/test/test_loadmanager.rb +40 -0
- data/test/test_local_cache.rb +157 -0
- data/test/test_package.rb +600 -0
- data/test/test_parse_commands.rb +179 -0
- data/test/test_process_commands.rb +21 -0
- data/test/test_remote_fetcher.rb +162 -0
- data/test/test_remote_installer.rb +154 -0
- data/test/test_source_index.rb +58 -0
- data/test/test_specification.rb +286 -0
- data/test/test_validator.rb +53 -0
- data/test/test_version_comparison.rb +204 -0
- data/test/testgem.rc +6 -0
- data/test/user_capture.rb +1 -0
- data/test/yaml_data.rb +59 -0
- metadata +151 -0
@@ -0,0 +1,179 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
$:.unshift '../lib'
|
3
|
+
require 'rubygems'
|
4
|
+
require 'test/mockgemui'
|
5
|
+
Gem::manage_gems
|
6
|
+
|
7
|
+
class TestParseCommands < Test::Unit::TestCase
|
8
|
+
include Gem::DefaultUserInteraction
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@cmd_manager = Gem::CommandManager.new
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_parsing_bad_options
|
15
|
+
use_ui(MockGemUi.new) do
|
16
|
+
assert_raises(MockGemUi::TermError) {
|
17
|
+
@cmd_manager.process_args("--bad-arg")
|
18
|
+
}
|
19
|
+
assert_match /invalid option: --bad-arg/i, ui.error
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_parsing_install_options
|
24
|
+
#capture all install options
|
25
|
+
use_ui(MockGemUi.new) do
|
26
|
+
check_options = nil
|
27
|
+
@cmd_manager['install'].when_invoked do |options|
|
28
|
+
check_options = options
|
29
|
+
true
|
30
|
+
end
|
31
|
+
|
32
|
+
#check defaults
|
33
|
+
@cmd_manager.process_args("install")
|
34
|
+
assert_equal false, check_options[:test]
|
35
|
+
assert_equal true, check_options[:generate_rdoc]
|
36
|
+
assert_equal false, check_options[:force]
|
37
|
+
assert_equal :both, check_options[:domain]
|
38
|
+
assert_equal "> 0", check_options[:version]
|
39
|
+
assert_equal Gem.dir, check_options[:install_dir]
|
40
|
+
|
41
|
+
#check settings
|
42
|
+
check_options = nil
|
43
|
+
@cmd_manager.process_args(
|
44
|
+
"install --force --test --local --rdoc --install-dir . --version 3.0")
|
45
|
+
assert_equal true, check_options[:test]
|
46
|
+
assert_equal true, check_options[:generate_rdoc]
|
47
|
+
assert_equal true, check_options[:force]
|
48
|
+
assert_equal :local, check_options[:domain]
|
49
|
+
assert_equal '3.0', check_options[:version]
|
50
|
+
assert_equal '.', check_options[:install_dir]
|
51
|
+
|
52
|
+
#check remote domain
|
53
|
+
check_options = nil
|
54
|
+
@cmd_manager.process_args("install --remote")
|
55
|
+
assert_equal :remote, check_options[:domain]
|
56
|
+
|
57
|
+
#check both domain
|
58
|
+
check_options = nil
|
59
|
+
@cmd_manager.process_args("install --both")
|
60
|
+
assert_equal :both, check_options[:domain]
|
61
|
+
|
62
|
+
#check both domain
|
63
|
+
check_options = nil
|
64
|
+
@cmd_manager.process_args("install --both")
|
65
|
+
assert_equal :both, check_options[:domain]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_parsing_uninstall_options
|
70
|
+
#capture all uninstall options
|
71
|
+
check_options = nil
|
72
|
+
@cmd_manager['uninstall'].when_invoked do |options|
|
73
|
+
check_options = options
|
74
|
+
true
|
75
|
+
end
|
76
|
+
|
77
|
+
#check defaults
|
78
|
+
@cmd_manager.process_args("uninstall")
|
79
|
+
assert_equal "> 0", check_options[:version]
|
80
|
+
|
81
|
+
#check settings
|
82
|
+
check_options = nil
|
83
|
+
@cmd_manager.process_args("uninstall foobar --version 3.0")
|
84
|
+
assert_equal "foobar", check_options[:args].first
|
85
|
+
assert_equal "3.0", check_options[:version]
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_parsing_check_options
|
89
|
+
#capture all check options
|
90
|
+
check_options = nil
|
91
|
+
@cmd_manager['check'].when_invoked do |options|
|
92
|
+
check_options = options
|
93
|
+
true
|
94
|
+
end
|
95
|
+
|
96
|
+
#check defaults
|
97
|
+
@cmd_manager.process_args("check")
|
98
|
+
assert_equal false, check_options[:verify]
|
99
|
+
assert_equal false, check_options[:alien]
|
100
|
+
|
101
|
+
#check settings
|
102
|
+
check_options = nil
|
103
|
+
@cmd_manager.process_args("check --verify foobar --alien")
|
104
|
+
assert_equal "foobar", check_options[:verify]
|
105
|
+
assert_equal true, check_options[:alien]
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_parsing_build_options
|
109
|
+
#capture all build options
|
110
|
+
check_options = nil
|
111
|
+
@cmd_manager['build'].when_invoked do |options|
|
112
|
+
check_options = options
|
113
|
+
true
|
114
|
+
end
|
115
|
+
|
116
|
+
#check defaults
|
117
|
+
@cmd_manager.process_args("build")
|
118
|
+
#NOTE: Currently no defaults
|
119
|
+
|
120
|
+
#check settings
|
121
|
+
check_options = nil
|
122
|
+
@cmd_manager.process_args("build foobar.rb")
|
123
|
+
assert_equal 'foobar.rb', check_options[:args].first
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_parsing_query_options
|
127
|
+
#capture all query options
|
128
|
+
check_options = nil
|
129
|
+
@cmd_manager['query'].when_invoked do |options|
|
130
|
+
check_options = options
|
131
|
+
true
|
132
|
+
end
|
133
|
+
|
134
|
+
#check defaults
|
135
|
+
@cmd_manager.process_args("query")
|
136
|
+
assert_equal /.*/, check_options[:name]
|
137
|
+
assert_equal :local, check_options[:domain]
|
138
|
+
assert_equal false, check_options[:details]
|
139
|
+
|
140
|
+
#check settings
|
141
|
+
check_options = nil
|
142
|
+
@cmd_manager.process_args("query --name foobar --local --details")
|
143
|
+
assert_equal /foobar/i, check_options[:name]
|
144
|
+
assert_equal :local, check_options[:domain]
|
145
|
+
assert_equal true, check_options[:details]
|
146
|
+
|
147
|
+
#remote domain
|
148
|
+
check_options = nil
|
149
|
+
@cmd_manager.process_args("query --remote")
|
150
|
+
assert_equal :remote, check_options[:domain]
|
151
|
+
|
152
|
+
#both (local/remote) domains
|
153
|
+
check_options = nil
|
154
|
+
@cmd_manager.process_args("query --both")
|
155
|
+
assert_equal :both, check_options[:domain]
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_parsing_update_options
|
159
|
+
#capture all update options
|
160
|
+
check_options = nil
|
161
|
+
@cmd_manager['update'].when_invoked do |options|
|
162
|
+
check_options = options
|
163
|
+
true
|
164
|
+
end
|
165
|
+
|
166
|
+
#check defaults
|
167
|
+
@cmd_manager.process_args("update")
|
168
|
+
assert_equal true, check_options[:generate_rdoc]
|
169
|
+
|
170
|
+
#check settings
|
171
|
+
check_options = nil
|
172
|
+
@cmd_manager.process_args("update --force --test --rdoc --install-dir .")
|
173
|
+
assert_equal true, check_options[:test]
|
174
|
+
assert_equal true, check_options[:generate_rdoc]
|
175
|
+
assert_equal true, check_options[:force]
|
176
|
+
assert_equal '.', check_options[:install_dir]
|
177
|
+
end
|
178
|
+
|
179
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
$:.unshift '../lib'
|
3
|
+
require 'rubygems'
|
4
|
+
Gem::manage_gems
|
5
|
+
|
6
|
+
require 'test/mockgemui'
|
7
|
+
|
8
|
+
class TestProcessCommands < Test::Unit::TestCase
|
9
|
+
include Gem::DefaultUserInteraction
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@cmd_manager = Gem::CommandManager.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_query_command
|
16
|
+
use_ui(MockGemUi.new) do
|
17
|
+
@cmd_manager.process_args "query"
|
18
|
+
assert_match /LOCAL GEMS/, ui.output
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,162 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'zlib'
|
5
|
+
require 'webrick'
|
6
|
+
require 'rubygems'
|
7
|
+
|
8
|
+
require 'test/mockgemui'
|
9
|
+
require 'test/yaml_data'
|
10
|
+
|
11
|
+
Gem.manage_gems
|
12
|
+
include WEBrick
|
13
|
+
|
14
|
+
class TestRemoteFetcher < Test::Unit::TestCase
|
15
|
+
include Gem::DefaultUserInteraction
|
16
|
+
|
17
|
+
def setup
|
18
|
+
self.class.start_servers
|
19
|
+
self.class.enable_yaml = true
|
20
|
+
self.class.enable_zip = false
|
21
|
+
ENV['http_proxy'] = nil
|
22
|
+
ENV['HTTP_PROXY'] = nil
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
def test_no_proxy
|
27
|
+
use_ui(MockGemUi.new) do
|
28
|
+
fetcher = Gem::RemoteSourceFetcher.new("http://localhost:12344", nil)
|
29
|
+
assert_equal YAML_DATA, fetcher.fetch_path("/yaml")
|
30
|
+
assert_equal YAML_DATA.size, fetcher.size
|
31
|
+
source_index = fetcher.source_index
|
32
|
+
gems = source_index.search('rake', "= 0.4.11")
|
33
|
+
assert_equal 1, gems.size
|
34
|
+
assert_equal "rake", gems.first.name
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_explicit_proxy
|
39
|
+
use_ui(MockGemUi.new) do
|
40
|
+
fetcher = Gem::RemoteSourceFetcher.new("http://localhost:12344", "http://localhost:12345")
|
41
|
+
assert_equal PROXY_DATA.size, fetcher.size
|
42
|
+
assert_equal PROXY_DATA, fetcher.fetch_path("/yaml")
|
43
|
+
source_index = fetcher.source_index
|
44
|
+
gems = source_index.search('rake', "= 0.4.2")
|
45
|
+
assert_equal 1, gems.size
|
46
|
+
assert_equal "rake", gems.first.name
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_implicit_proxy
|
51
|
+
use_ui(MockGemUi.new) do
|
52
|
+
ENV['http_proxy'] = 'http://localhost:12345'
|
53
|
+
fetcher = Gem::RemoteSourceFetcher.new("http://localhost:12344", true)
|
54
|
+
assert_equal PROXY_DATA, fetcher.fetch_path("/yaml")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_implicit_upper_case_proxy
|
59
|
+
use_ui(MockGemUi.new) do
|
60
|
+
ENV['HTTP_PROXY'] = 'http://localhost:12345'
|
61
|
+
fetcher = Gem::RemoteSourceFetcher.new("http://localhost:12344", true)
|
62
|
+
assert_equal PROXY_DATA, fetcher.fetch_path("/yaml")
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_implicit_proxy_no_env
|
67
|
+
use_ui(MockGemUi.new) do
|
68
|
+
fetcher = Gem::RemoteSourceFetcher.new("http://localhost:12344", true)
|
69
|
+
assert_equal YAML_DATA, fetcher.fetch_path("/yaml")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_zip
|
74
|
+
use_ui(MockGemUi.new) do
|
75
|
+
self.class.enable_zip = true
|
76
|
+
fetcher = Gem::RemoteSourceFetcher.new("http://localhost:12344", nil)
|
77
|
+
assert_equal YAML_DATA.size, fetcher.size
|
78
|
+
zip_data = fetcher.fetch_path("/yaml.Z")
|
79
|
+
assert zip_data.size < YAML_DATA.size
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_no_zip
|
84
|
+
use_ui(MockGemUi.new) do
|
85
|
+
fetcher = Gem::RemoteSourceFetcher.new("http://localhost:12344", nil)
|
86
|
+
assert_error { fetcher.fetch_path("/yaml.Z") }
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_yaml_error_on_size
|
91
|
+
use_ui(MockGemUi.new) do
|
92
|
+
self.class.enable_yaml = false
|
93
|
+
fetcher = Gem::RemoteSourceFetcher.new("http://localhost:12344", nil)
|
94
|
+
assert_error { fetcher.size }
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def assert_error(exception_class=Exception)
|
99
|
+
got_exception = false
|
100
|
+
begin
|
101
|
+
yield
|
102
|
+
rescue exception_class => ex
|
103
|
+
got_exception = true
|
104
|
+
end
|
105
|
+
assert got_exception, "Expected exception conforming to #{exception_class}"
|
106
|
+
end
|
107
|
+
|
108
|
+
class << self
|
109
|
+
attr_reader :normal_server, :proxy_server
|
110
|
+
attr_accessor :enable_zip, :enable_yaml
|
111
|
+
|
112
|
+
def start_servers
|
113
|
+
@normal_server ||= start_server(12344, YAML_DATA)
|
114
|
+
@proxy_server ||= start_server(12345, PROXY_DATA)
|
115
|
+
@enable_yaml = true
|
116
|
+
@enable_zip = false
|
117
|
+
sleep 1
|
118
|
+
end
|
119
|
+
|
120
|
+
private
|
121
|
+
|
122
|
+
def start_server(port, data)
|
123
|
+
Thread.new do
|
124
|
+
begin
|
125
|
+
null_logger = Log.new('/dev/null')
|
126
|
+
s = HTTPServer.new(
|
127
|
+
:Port => port,
|
128
|
+
:DocumentRoot => ".",
|
129
|
+
:Logger => null_logger,
|
130
|
+
:AccessLog => null_logger
|
131
|
+
)
|
132
|
+
s.mount_proc("/kill") { |req, res| s.shutdown }
|
133
|
+
s.mount_proc("/yaml") { |req, res|
|
134
|
+
if @enable_yaml
|
135
|
+
res.body = data
|
136
|
+
res['Content-Type'] = 'text/plain'
|
137
|
+
res['content-length'] = data.size
|
138
|
+
else
|
139
|
+
res.code = "404"
|
140
|
+
res.body = "<h1>NOT FOUND</h1>"
|
141
|
+
res['Content-Type'] = 'text/html'
|
142
|
+
end
|
143
|
+
}
|
144
|
+
s.mount_proc("/yaml.Z") { |req, res|
|
145
|
+
if @enable_zip
|
146
|
+
res.body = Zlib::Deflate.deflate(data)
|
147
|
+
res['Content-Type'] = 'text/plain'
|
148
|
+
else
|
149
|
+
res.code = "404"
|
150
|
+
res.body = "<h1>NOT FOUND</h1>"
|
151
|
+
res['Content-Type'] = 'text/html'
|
152
|
+
end
|
153
|
+
}
|
154
|
+
s.start
|
155
|
+
rescue Exception => ex
|
156
|
+
puts "ERROR during server thread: #{ex.message}"
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'rubygems'
|
3
|
+
Gem::manage_gems
|
4
|
+
require 'net/http'
|
5
|
+
require 'yaml'
|
6
|
+
require 'test/onegem'
|
7
|
+
|
8
|
+
class MockFetcher
|
9
|
+
def initialize(uri, proxy)
|
10
|
+
@uri = uri
|
11
|
+
end
|
12
|
+
|
13
|
+
def size
|
14
|
+
1000
|
15
|
+
end
|
16
|
+
|
17
|
+
def source_index
|
18
|
+
if @uri =~ /non.existent.url/
|
19
|
+
fail Gem::RemoteSourceException,
|
20
|
+
"Error fetching remote gem cache: Mock Socket Exception"
|
21
|
+
end
|
22
|
+
result = {
|
23
|
+
'foo-1.2.3' => Gem::Specification.new do |s|
|
24
|
+
s.name = 'foo'
|
25
|
+
s.version = "1.2.3"
|
26
|
+
s.summary = "This is a cool package"
|
27
|
+
end
|
28
|
+
}
|
29
|
+
result
|
30
|
+
end
|
31
|
+
|
32
|
+
def fetch_path(path)
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.finish
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class TestRemoteInstaller < Test::Unit::TestCase
|
40
|
+
|
41
|
+
PROPER_SOURCES = %w( http://gems.rubyforge.org )
|
42
|
+
|
43
|
+
def setup
|
44
|
+
Gem.clear_paths
|
45
|
+
@installer = Gem::RemoteInstaller.new
|
46
|
+
@installer.instance_variable_set("@fetcher_class", MockFetcher)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_create
|
50
|
+
assert_not_nil(@installer)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Make sure that the installer knows the proper list of places to go
|
54
|
+
# to get packages.
|
55
|
+
def test_source_list
|
56
|
+
assert_equal PROPER_SOURCES, @installer.sources
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_source_index_hash
|
60
|
+
source_hash = @installer.source_index_hash
|
61
|
+
assert source_hash.has_key?("http://gems.rubyforge.org")
|
62
|
+
assert_equal 1, source_hash.size
|
63
|
+
gem_hash = source_hash['http://gems.rubyforge.org']
|
64
|
+
spec = gem_hash['foo-1.2.3']
|
65
|
+
assert_equal 'foo', spec.name
|
66
|
+
assert_equal '1.2.3', spec.version.to_s
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_missing_source_exception
|
70
|
+
@installer.instance_variable_set("@sources", ["http://non.existent.url"])
|
71
|
+
assert_raise(Gem::RemoteSourceException) {
|
72
|
+
info = @installer.source_index_hash
|
73
|
+
}
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
# This test suite has a number of TODOs in the test cases. The
|
78
|
+
# TestRemoteInstaller test suite is a reworking of this class from
|
79
|
+
# scratch.
|
80
|
+
class RemoteInstallerTest < Test::Unit::TestCase
|
81
|
+
class RInst < Gem::RemoteInstaller
|
82
|
+
include Test::Unit::Assertions
|
83
|
+
|
84
|
+
attr_accessor :expected_destination_files
|
85
|
+
attr_accessor :expected_bodies
|
86
|
+
attr_accessor :caches
|
87
|
+
attr_accessor :responses
|
88
|
+
|
89
|
+
def source_index_hash
|
90
|
+
@caches
|
91
|
+
end
|
92
|
+
|
93
|
+
def fetch(uri)
|
94
|
+
@reponses ||= {}
|
95
|
+
@responses[uri]
|
96
|
+
end
|
97
|
+
|
98
|
+
def write_gem_to_file(body, destination_file)
|
99
|
+
expected_destination_file = expected_destination_files.pop
|
100
|
+
expected_body = expected_bodies.pop
|
101
|
+
assert_equal expected_body, body, "Unexpected body"
|
102
|
+
assert_equal expected_destination_file, destination_file, "Unexpected destination file"
|
103
|
+
end
|
104
|
+
|
105
|
+
def new_installer(gem)
|
106
|
+
return MockInstaller.new(gem)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
CACHE_SOURCES = ["http://gems.rubyforge.org"]
|
111
|
+
|
112
|
+
def setup
|
113
|
+
Gem.clear_paths
|
114
|
+
@remote_installer = Gem::RemoteInstaller.new
|
115
|
+
@remote_installer.instance_eval { @fetcher_class = MockFetcher }
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_sources
|
119
|
+
assert_equal CACHE_SOURCES, @remote_installer.sources
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_source_index_hash
|
123
|
+
source_index_hash = @remote_installer.source_index_hash
|
124
|
+
assert_equal 1, source_index_hash.keys.size
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_find_latest_valid_package_in_caches(cache)
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_download_file
|
131
|
+
end
|
132
|
+
|
133
|
+
SAMPLE_SPEC = Gem::Specification.new do |s|
|
134
|
+
s.name = 'foo'
|
135
|
+
s.version = "1.2.3"
|
136
|
+
s.platform = Gem::Platform::RUBY
|
137
|
+
s.summary = "This is a cool package"
|
138
|
+
s.files = []
|
139
|
+
end
|
140
|
+
SAMPLE_CACHE = { 'foo-1.2.3' => SAMPLE_SPEC }
|
141
|
+
SAMPLE_CACHE_YAML = SAMPLE_CACHE.to_yaml
|
142
|
+
|
143
|
+
FOO_GEM = '' # TODO
|
144
|
+
CACHE_DIR = File.join(Gem.dir, 'cache')
|
145
|
+
|
146
|
+
# Disable this test for now. We will come back to revisit this.
|
147
|
+
def disable_test_install
|
148
|
+
Gem.use_paths("test/data/gemhome")
|
149
|
+
result = @remote_installer.install('foo')
|
150
|
+
assert_equal [nil], result
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
|