alloy-microgem 0.1
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/LICENSE +21 -0
- data/README.rdoc +55 -0
- data/Rakefile +24 -0
- data/TODO +13 -0
- data/bin/zinflate +17 -0
- data/bin//302/265gem +14 -0
- data/lib/microgem.rb +56 -0
- data/lib/microgem/bare_specification.rb +40 -0
- data/lib/microgem/bin_wrapper_emitter.rb +58 -0
- data/lib/microgem/config.rb +96 -0
- data/lib/microgem/dependency.rb +37 -0
- data/lib/microgem/downloader.rb +48 -0
- data/lib/microgem/installer.rb +147 -0
- data/lib/microgem/options_parser.rb +67 -0
- data/lib/microgem/requirement.rb +36 -0
- data/lib/microgem/source.rb +108 -0
- data/lib/microgem/specification.rb +65 -0
- data/lib/microgem/specification_emitter.rb +75 -0
- data/lib/microgem/unpacker.rb +55 -0
- data/lib/microgem/utils.rb +51 -0
- data/lib/microgem/version.rb +35 -0
- data/lib/microgem/yamlable.rb +32 -0
- data/test/bare_specification_test.rb +43 -0
- data/test/bin_wrapper_emitter_test.rb +57 -0
- data/test/config_test.rb +131 -0
- data/test/dependency_test.rb +41 -0
- data/test/downloader_test.rb +100 -0
- data/test/fixtures/gems.github.com +0 -0
- data/test/fixtures/gems.rubyforge.org +0 -0
- data/test/fixtures/gems/rake-0.8.0/rake.rb +1 -0
- data/test/fixtures/gems/rake-0.8.1/rake.rb +1 -0
- data/test/fixtures/gems/test-spec-0.3.0/test-spec.rb +1 -0
- data/test/fixtures/gems/test-spec-mock-0.3.0/test-spec-mock.rb +1 -0
- data/test/fixtures/rails-2.1.1.gemspec +26 -0
- data/test/fixtures/rails-2.1.1.gemspec.marshal +0 -0
- data/test/fixtures/rake-0.8.1.gem +0 -0
- data/test/fixtures/rake-0.8.1.gemspec +20 -0
- data/test/fixtures/rake-0.8.1.gemspec.marshal +0 -0
- data/test/fixtures/rake-0.8.1.gemspec.rz +2 -0
- data/test/fixtures/specs.4.8.gz +0 -0
- data/test/installer_test.rb +198 -0
- data/test/microgem_test.rb +34 -0
- data/test/options_parser_test.rb +36 -0
- data/test/requirement_test.rb +40 -0
- data/test/source_test.rb +153 -0
- data/test/specification_emitter_test.rb +139 -0
- data/test/specification_test.rb +45 -0
- data/test/test_helper.rb +71 -0
- data/test/unpacker_test.rb +91 -0
- data/test/utils_test.rb +42 -0
- data/test/version_test.rb +27 -0
- data/test/yamlable_test.rb +15 -0
- metadata +114 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
##!/usr/bin/env macruby
|
2
|
+
|
3
|
+
require File.expand_path('../test_helper', __FILE__)
|
4
|
+
|
5
|
+
describe "Gem::Micro::Options, with options" do
|
6
|
+
def setup
|
7
|
+
@parser = Gem::Micro::OptionsParser.new
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should set the log_level" do
|
11
|
+
@parser.parse(%w{ install rake --debug }).options.should == { :log_level => :debug }
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should force commands" do
|
15
|
+
@parser.parse(%w{ install rake --force }).options.should == { :force => true }
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should enable the simple downloader" do
|
19
|
+
@parser.parse(%w{ install rake --simple-downloader }).options.should == { :simple_downloader => true }
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should enable the simple unpacker" do
|
23
|
+
@parser.parse(%w{ install rake --simple-unpacker }).options.should == { :simple_unpacker => true }
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should enable the simple downloader and unpacker" do
|
27
|
+
@parser.parse(%w{ install rake --simple }).options.should ==
|
28
|
+
{ :simple_downloader => true, :simple_unpacker => true }
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should return the command and its arguments" do
|
32
|
+
@parser.parse(%w{ install rake --debug })
|
33
|
+
@parser.command.should == 'install'
|
34
|
+
@parser.arguments.should == ['rake']
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
##!/usr/bin/env macruby
|
2
|
+
|
3
|
+
require File.expand_path('../test_helper', __FILE__)
|
4
|
+
|
5
|
+
describe "Gem::Requirement" do
|
6
|
+
def setup
|
7
|
+
@requirement = Gem::Requirement[:requirements => [['>=', Gem::Version[:version => '0.8.1']]]]
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should be equal to one in the gem specs dependencies" do
|
11
|
+
gem_spec = gem_spec_fixture('rails', '2.1.1')
|
12
|
+
version_requirement = gem_spec.dependencies.first.version_requirements
|
13
|
+
|
14
|
+
version_requirement.should == @requirement
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should be equal if both the operator and version are equal" do
|
18
|
+
Gem::Requirement[:requirements => [['>=', Gem::Version[:version => '0.8.1']]]].should == @requirement
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should not be equal if the operators aren't equal" do
|
22
|
+
Gem::Requirement[:requirements => [['=', Gem::Version[:version => '0.8.1']]]].should.not == @requirement
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should not be equal if the versions aren't equal" do
|
26
|
+
Gem::Requirement[:requirements => [['>=', Gem::Version[:version => '9.8.7']]]].should.not == @requirement
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should return its highest required version" do
|
30
|
+
@requirement.version.should == Gem::Version[:version => '0.8.1']
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should return the operator of the highest required version" do
|
34
|
+
@requirement.operator.should == '>='
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should return a string representation" do
|
38
|
+
@requirement.to_s.should == ">= 0.8.1"
|
39
|
+
end
|
40
|
+
end
|
data/test/source_test.rb
ADDED
@@ -0,0 +1,153 @@
|
|
1
|
+
##!/usr/bin/env macruby
|
2
|
+
|
3
|
+
require File.expand_path('../test_helper', __FILE__)
|
4
|
+
|
5
|
+
describe "Gem::Micro::Source, class methods" do
|
6
|
+
include Gem::Micro::Utils
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@sources = Gem::Micro::Source.sources
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
Gem::Micro::Source.instance_variable_set(:@sources, nil)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should load the sources specified on config.sources in config.gem_home" do
|
17
|
+
Gem::Micro::Source.instance_variable_set(:@sources, nil)
|
18
|
+
|
19
|
+
hosts = %w{ gems.superalloy.nl gems.fngtps.com }
|
20
|
+
config.stubs(:sources).returns(hosts)
|
21
|
+
sources = Gem::Micro::Source.sources
|
22
|
+
|
23
|
+
sources.map { |s| s.host }.should == hosts
|
24
|
+
sources.map { |s| s.index_file }.should ==
|
25
|
+
[File.join(config.gem_home, hosts.first), File.join(config.gem_home, hosts.last)]
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return matching gem specs from any source and mark them to know from which source they came" do
|
29
|
+
rake = ['rake', Gem::Version[:version => '0.8.1']]
|
30
|
+
|
31
|
+
rubyforge_bare_spec = mock('Rubyforge')
|
32
|
+
Gem::Micro::BareSpecification.expects(:new).with(@sources.first, *rake).returns(rubyforge_bare_spec)
|
33
|
+
rubyforge_bare_spec.expects(:gem_spec).returns('rake from rubyforge')
|
34
|
+
|
35
|
+
Gem::Micro::Source.gem_spec(*rake).should == 'rake from rubyforge'
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should tell the sources to update" do
|
39
|
+
@sources.first.expects(:update!)
|
40
|
+
@sources.last.expects(:update!)
|
41
|
+
Gem::Micro::Source.update!
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "Gem::Micro::Source, in general" do
|
46
|
+
def setup
|
47
|
+
@dir = Gem::Micro::Utils.tmpdir
|
48
|
+
@source = Gem::Micro::Source.new('gems.rubyforge.org', @dir)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should return the path to the index file" do
|
52
|
+
@source.index_file.should == File.join(@dir, 'gems.rubyforge.org')
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should return the url from where to get the marshalled gem list" do
|
56
|
+
@source.specs_url.should == 'http://gems.rubyforge.org/specs.4.8.gz'
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should return the path to the work archive file" do
|
60
|
+
@source.work_archive_file.should == File.join(@dir, 'specs.4.8.gz')
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should return the path to the work index file" do
|
64
|
+
@source.work_index_file.should == File.join(@dir, 'specs.4.8')
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "Gem::Micro::Source, for a non existing index" do
|
69
|
+
include Gem::Micro::Utils
|
70
|
+
|
71
|
+
def setup
|
72
|
+
@dir = File.join(tmpdir, 'specs')
|
73
|
+
ensure_dir(@dir)
|
74
|
+
@source = Gem::Micro::Source.new('gems.rubyforge.org', @dir)
|
75
|
+
end
|
76
|
+
|
77
|
+
def teardown
|
78
|
+
remove_microgem_tmpdir!
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should return that it doesn't exist" do
|
82
|
+
@source.should.not.exist
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should download and unpack the index to index_file" do
|
86
|
+
Gem::Micro::Downloader.expects(:get).with(@source.specs_url, @source.work_archive_file)
|
87
|
+
FileUtils.cp(fixture('specs.4.8.gz'), tmpdir) # fake the download to the tmpdir
|
88
|
+
|
89
|
+
@source.update!
|
90
|
+
|
91
|
+
File.should.exist @source.index_file
|
92
|
+
Marshal.load(File.read(@source.index_file)).should.be.instance_of Array
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should update! if the #specs are accessed but the index_file doesn't exist yet" do
|
96
|
+
# make sure the fixture is in place
|
97
|
+
Gem::Micro::Downloader.stubs(:get)
|
98
|
+
FileUtils.cp(fixture('specs.4.8.gz'), tmpdir)
|
99
|
+
@source.update!
|
100
|
+
|
101
|
+
@source.stubs(:exist?).returns(false)
|
102
|
+
@source.expects(:update!)
|
103
|
+
@source.specs
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
describe "Gem::Micro::Source, for an existing index" do
|
108
|
+
include Gem::Micro::Utils
|
109
|
+
|
110
|
+
def setup
|
111
|
+
@dir = File.join(tmpdir, 'specs')
|
112
|
+
ensure_dir(@dir)
|
113
|
+
@source = Gem::Micro::Source.new('gems.rubyforge.org', @dir)
|
114
|
+
|
115
|
+
# create the index
|
116
|
+
Gem::Micro::Downloader.stubs(:get)
|
117
|
+
FileUtils.cp(fixture('specs.4.8.gz'), tmpdir)
|
118
|
+
@source.update!
|
119
|
+
|
120
|
+
@rake = ['rake', Gem::Version[:version => '0.8.3']]
|
121
|
+
end
|
122
|
+
|
123
|
+
def teardown
|
124
|
+
remove_microgem_tmpdir!
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should return that it exists" do
|
128
|
+
@source.should.exist
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should return a spec matching the given name and version" do
|
132
|
+
rake_0_8_1 = @source.spec('rake', Gem::Version[:version => '0.8.1'])
|
133
|
+
rake_0_8_1[1].to_s.should == '0.8.1'
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should return the last spec matching the given name and a version of any?" do
|
137
|
+
rake_0_8_3 = @source.spec('rake', Gem::Version[:version => '0'])
|
138
|
+
rake_0_8_3[1].to_s.should == '0.8.3'
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should return a gem spec matching the given name" do
|
142
|
+
spec = mock('BareSpecification')
|
143
|
+
Gem::Micro::BareSpecification.expects(:new).with(@source, *@rake).returns(spec)
|
144
|
+
spec.expects(:gem_spec).returns("The Gem::Specification")
|
145
|
+
|
146
|
+
@source.gem_spec(*@rake).should == "The Gem::Specification"
|
147
|
+
end
|
148
|
+
|
149
|
+
it "should use the latest version if the specified version is any?" do
|
150
|
+
Gem::Micro::BareSpecification.expects(:new).with(@source, *@rake).returns(stub_everything)
|
151
|
+
@source.gem_spec('rake', Gem::Version[:version => '0'])
|
152
|
+
end
|
153
|
+
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
##!/usr/bin/env macruby
|
2
|
+
|
3
|
+
require File.expand_path('../test_helper', __FILE__)
|
4
|
+
|
5
|
+
describe "Gem::Micro::SpecificationEmitter" do
|
6
|
+
def setup
|
7
|
+
@gem_spec = Gem::Specification.new
|
8
|
+
set_ivar('dependencies', [])
|
9
|
+
|
10
|
+
@emitter = Gem::Micro::SpecificationEmitter.new(@gem_spec)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should return a properly formatted Time" do
|
14
|
+
time = Time.now
|
15
|
+
@emitter.format(time).should == time.strftime("%Y-%m-%d")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return a properly formatted Date" do
|
19
|
+
date = Date.today
|
20
|
+
@emitter.format(date).should == date.to_s
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should return a properly formatted Gem::Version" do
|
24
|
+
version = Gem::Version[:version => '0.8.1']
|
25
|
+
@emitter.format(version).should == version.to_s
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return a properly formatted Gem::Requirement" do
|
29
|
+
requirement = Gem::Requirement[:requirements => [['>=', Gem::Version[:version => '0.8.1']]]]
|
30
|
+
@emitter.format(requirement).should == requirement.to_s
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should return an array of key-value pairs sorted by key" do
|
34
|
+
vars = [
|
35
|
+
['authors', ['Eloy Duran', 'Manfred Stienstra']],
|
36
|
+
['email', 'eloy@fngtps.com']
|
37
|
+
]
|
38
|
+
|
39
|
+
# assign variables
|
40
|
+
vars.each { |k,v| set_ivar(k, v) }
|
41
|
+
|
42
|
+
# reverse to test sorting
|
43
|
+
reversed_ivars = vars.reverse.map { |k,_| "@#{k}" }
|
44
|
+
@gem_spec.stubs(:instance_variables).returns(reversed_ivars)
|
45
|
+
|
46
|
+
@emitter.gem_spec_variables.should == vars
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should not include special values in the gem_spec_variables" do
|
50
|
+
set_ivar('name', 'rake')
|
51
|
+
set_ivar('mocha', 'dev var')
|
52
|
+
set_ivar('source', 'gems.rubyforge.org')
|
53
|
+
set_ivar('version', '0.8.1')
|
54
|
+
set_ivar('dependencies', [])
|
55
|
+
set_ivar('new_platform', 'ruby')
|
56
|
+
set_ivar('specification_version', '2')
|
57
|
+
set_ivar('required_rubygems_version', '0')
|
58
|
+
keys = @emitter.gem_spec_variables.map { |k,_| k }
|
59
|
+
|
60
|
+
keys.should.not.include 'name'
|
61
|
+
keys.should.not.include 'mocha'
|
62
|
+
keys.should.not.include 'source'
|
63
|
+
keys.should.not.include 'version'
|
64
|
+
keys.should.not.include 'dependencies'
|
65
|
+
keys.should.not.include 'new_platform'
|
66
|
+
keys.should.not.include 'specification_version'
|
67
|
+
keys.should.not.include 'required_rubygems_version'
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should generate the proper Ruby code for `specification_version'" do
|
71
|
+
set_ivar('specification_version', 2)
|
72
|
+
expected = 's.specification_version = 2 if s.respond_to? :specification_version='
|
73
|
+
@emitter.to_ruby.should.include expected
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should generate the proper Ruby code for `required_rubygems_version'" do
|
77
|
+
set_ivar('required_rubygems_version', Gem::Requirement[:requirements => [['>=', Gem::Version[:version => '0.8.1']]]])
|
78
|
+
expected = 's.required_rubygems_version = Gem::Requirement.new(">= 0.8.1") if s.respond_to? :required_rubygems_version='
|
79
|
+
@emitter.to_ruby.should.include expected
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should generate the proper Ruby code for `required_rubygems_version' if it's nil" do
|
83
|
+
set_ivar('required_rubygems_version', nil)
|
84
|
+
expected = 's.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version='
|
85
|
+
@emitter.to_ruby.should.include expected
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should generate the proper Ruby code for a Gem::Dependency" do
|
89
|
+
@gem_spec = gem_spec_fixture('rails', '2.1.1')
|
90
|
+
@emitter = Gem::Micro::SpecificationEmitter.new(@gem_spec)
|
91
|
+
|
92
|
+
rake_dependency = 's.add_dependency("rake", [">= 0.8.1"])'
|
93
|
+
@emitter.to_ruby.should.include rake_dependency
|
94
|
+
end
|
95
|
+
|
96
|
+
# For these we need to download the specific gems their metadata yaml files
|
97
|
+
[['rake', '0.8.1'], ['rails', '2.1.1']].each do |gem_name, gem_version|
|
98
|
+
xit "should return a representation of the Ruby #{gem_name} gemspec, which is accepted by RubyGems" do
|
99
|
+
begin
|
100
|
+
gemspec_file = "#{gem_name}-#{gem_version}.gemspec"
|
101
|
+
|
102
|
+
@gem_spec = YAML.load(File.read(fixture("#{gemspec_file}.full")))
|
103
|
+
@emitter = Gem::Micro::SpecificationEmitter.new(@gem_spec)
|
104
|
+
|
105
|
+
@gem_spec.instance_variable_set(:@rubygems_version, Gem::Version[:version => '1.3.1'])
|
106
|
+
spec_file = File.join(TMP_PATH, "#{gemspec_file}.rb")
|
107
|
+
|
108
|
+
File.open(spec_file, 'w') do |f|
|
109
|
+
f << %{
|
110
|
+
require 'rubygems'
|
111
|
+
|
112
|
+
spec = #{@emitter.to_ruby}
|
113
|
+
|
114
|
+
# If the dynamically created one equals the fixture we quit without error
|
115
|
+
exit 1 unless spec == eval(File.read("#{fixture(gemspec_file)}"))
|
116
|
+
}
|
117
|
+
end
|
118
|
+
|
119
|
+
# debugging
|
120
|
+
unless system("ruby '#{spec_file}'")
|
121
|
+
output_file = File.join(TMP_PATH, gemspec_file)
|
122
|
+
File.open(output_file, 'w') { |f| f << @emitter.to_ruby }
|
123
|
+
puts `diff -y '#{fixture(gemspec_file)}' '#{output_file}'`
|
124
|
+
end
|
125
|
+
|
126
|
+
assert system("ruby '#{spec_file}'")
|
127
|
+
|
128
|
+
ensure
|
129
|
+
File.unlink(spec_file) rescue nil
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
private
|
135
|
+
|
136
|
+
def set_ivar(name, value)
|
137
|
+
@gem_spec.instance_variable_set("@#{name}", value)
|
138
|
+
end
|
139
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
##!/usr/bin/env macruby
|
2
|
+
|
3
|
+
require File.expand_path('../test_helper', __FILE__)
|
4
|
+
|
5
|
+
describe "Gem::Specification" do
|
6
|
+
def setup
|
7
|
+
@gem_spec = Marshal.load(File.read(fixture('rake-0.8.1.gemspec.marshal')))
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should return its dependencies" do
|
11
|
+
gem_spec = Marshal.load(File.read(fixture('rails-2.1.1.gemspec.marshal')))
|
12
|
+
|
13
|
+
expected_version_requirements = [[]]
|
14
|
+
expected_dep_names = %w{
|
15
|
+
rake
|
16
|
+
activesupport
|
17
|
+
activerecord
|
18
|
+
actionpack
|
19
|
+
actionmailer
|
20
|
+
activeresource
|
21
|
+
}
|
22
|
+
|
23
|
+
gem_spec.dependencies.map { |dep| dep.name }.should == expected_dep_names
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should return its gem dirname" do
|
27
|
+
@gem_spec.gem_dirname.should == 'rake-0.8.1'
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should return its gem filename" do
|
31
|
+
@gem_spec.gem_filename.should == 'rake-0.8.1.gem'
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should install itself" do
|
35
|
+
installer = Gem::Micro::Installer.new(@gem_spec)
|
36
|
+
Gem::Micro::Installer.expects(:new).with(@gem_spec).returns(installer)
|
37
|
+
installer.expects(:install!)
|
38
|
+
|
39
|
+
@gem_spec.install!
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should emit itself as Ruby code" do
|
43
|
+
@gem_spec.to_ruby.should == Gem::Micro::SpecificationEmitter.new(@gem_spec).to_ruby
|
44
|
+
end
|
45
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
2
|
+
require 'microgem'
|
3
|
+
|
4
|
+
FIXTURE_PATH = File.expand_path('../fixtures', __FILE__)
|
5
|
+
TMP_PATH = File.expand_path('../../tmp', __FILE__)
|
6
|
+
|
7
|
+
# Copy the fixtures to Gem::Micro::Config.gem_home
|
8
|
+
c = Gem::Micro::Config
|
9
|
+
c.sources.each do |hostname|
|
10
|
+
unless File.exist?(File.join(c.gem_home, hostname))
|
11
|
+
FileUtils.cp File.join(FIXTURE_PATH, hostname), c.gem_home
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# silence the logger
|
16
|
+
module Gem::Micro::Utils
|
17
|
+
def log(level, message)
|
18
|
+
# nada
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
require 'test/unit'
|
23
|
+
class Test::Unit::TestCase
|
24
|
+
private
|
25
|
+
|
26
|
+
def fixture(name)
|
27
|
+
File.join(FIXTURE_PATH, name)
|
28
|
+
end
|
29
|
+
|
30
|
+
def gem_spec_fixture(name, version)
|
31
|
+
Marshal.load(File.read(fixture("#{name}-#{version}.gemspec.marshal")))
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
module Kernel
|
36
|
+
def remove_microgem_tmpdir!
|
37
|
+
FileUtils.rm_rf Gem::Micro::Utils.tmpdir
|
38
|
+
end
|
39
|
+
remove_microgem_tmpdir! # ensure it doesn't exist before test run
|
40
|
+
|
41
|
+
# we don't want to load rubygems, so use these work arounds
|
42
|
+
alias_method :__require_before_microgems, :require
|
43
|
+
def require(lib)
|
44
|
+
__require_before_microgems(lib) unless lib == 'rubygems'
|
45
|
+
end
|
46
|
+
|
47
|
+
def gem(*args)
|
48
|
+
# do nothing
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
require 'net/http'
|
53
|
+
module Net
|
54
|
+
class HTTP
|
55
|
+
class TryingToMakeHTTPConnectionException < StandardError; end
|
56
|
+
def connect
|
57
|
+
raise TryingToMakeHTTPConnectionException, "Please mock your HTTP calls so you don't do any HTTP requests."
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# for test/spec gem
|
63
|
+
$: << File.expand_path('../../', `gem which test/spec`.split("\n").last)
|
64
|
+
require 'test/spec'
|
65
|
+
|
66
|
+
# for mocha gem
|
67
|
+
module Gem
|
68
|
+
class LoadError < StandardError; end
|
69
|
+
end
|
70
|
+
$: << File.expand_path('../', `gem which mocha`.split("\n").last)
|
71
|
+
require 'mocha'
|