isolate 1.0.1 → 1.0.2
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/CHANGELOG.rdoc +11 -2
- data/README.rdoc +1 -1
- data/lib/isolate.rb +13 -10
- data/test/test_isolate.rb +15 -16
- metadata +1 -1
data/CHANGELOG.rdoc
CHANGED
@@ -1,8 +1,17 @@
|
|
1
|
-
=== 1.0.
|
1
|
+
=== 1.0.2 / 2009-09-21
|
2
2
|
|
3
|
-
*
|
3
|
+
* Fix some README typos.
|
4
|
+
* Add Entry#matches? to encapsulate activation and installation decisions.
|
5
|
+
* Remove block form of Isolate#enable, it's unused.
|
6
|
+
* Properly instance_eval Isolate#environment blocks.
|
7
|
+
* Reset stubs properly after tests (Random test order FTFW).
|
4
8
|
|
5
9
|
=== 1.0.1 / 2009-09-21
|
6
10
|
|
7
11
|
* Doco updates. [Review by Evan]
|
8
12
|
* Don't modify Entry#options on install. [Review by Evan]
|
13
|
+
|
14
|
+
=== 1.0.0 / 2009-09-21
|
15
|
+
|
16
|
+
* Birthday!
|
17
|
+
|
data/README.rdoc
CHANGED
@@ -30,7 +30,7 @@ YMMV, but I haven't tried Isolate with anything older than RubyGems
|
|
30
30
|
|
31
31
|
=== Defining Your Isolated Environment
|
32
32
|
|
33
|
-
It'
|
33
|
+
It's pretty easy: <tt>gem</tt> is similar to RubyGems' method of the
|
34
34
|
same name. Version specifiers are optional, and any hash args tacked
|
35
35
|
on to the end are passed through to Gem::DependencyInstaller as flags.
|
36
36
|
|
data/lib/isolate.rb
CHANGED
@@ -6,8 +6,15 @@ require "rubygems/requirement"
|
|
6
6
|
# rationale, limitations, and examples.
|
7
7
|
|
8
8
|
class Isolate
|
9
|
-
|
10
|
-
|
9
|
+
|
10
|
+
# :nodoc:
|
11
|
+
class Entry < Struct.new(:name, :requirement, :environments, :options)
|
12
|
+
def matches? environment
|
13
|
+
environments.empty? || environments.include?(environment)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
VERSION = "1.0.2" # :nodoc:
|
11
18
|
|
12
19
|
attr_reader :entries # :nodoc:
|
13
20
|
|
@@ -70,9 +77,7 @@ class Isolate
|
|
70
77
|
install environment if install?
|
71
78
|
|
72
79
|
entries.each do |e|
|
73
|
-
|
74
|
-
Gem.activate e.name, *e.requirement.as_list
|
75
|
-
end
|
80
|
+
Gem.activate e.name, *e.requirement.as_list if e.matches? env
|
76
81
|
end
|
77
82
|
|
78
83
|
self
|
@@ -93,7 +98,7 @@ class Isolate
|
|
93
98
|
self
|
94
99
|
end
|
95
100
|
|
96
|
-
def enable
|
101
|
+
def enable # :nodoc:
|
97
102
|
return self if enabled?
|
98
103
|
|
99
104
|
@old_gem_path = ENV["GEM_PATH"]
|
@@ -113,7 +118,6 @@ class Isolate
|
|
113
118
|
self.class.refresh
|
114
119
|
|
115
120
|
@enabled = true
|
116
|
-
begin; yield; ensure disable end if block_given?
|
117
121
|
self
|
118
122
|
end
|
119
123
|
|
@@ -128,7 +132,7 @@ class Isolate
|
|
128
132
|
@environments.concat environments.map { |e| e.to_s }
|
129
133
|
|
130
134
|
begin
|
131
|
-
|
135
|
+
instance_eval(&block)
|
132
136
|
ensure
|
133
137
|
@environments = old
|
134
138
|
end
|
@@ -155,8 +159,7 @@ class Isolate
|
|
155
159
|
env = environment.to_s if environment
|
156
160
|
|
157
161
|
installable = entries.select do |e|
|
158
|
-
!Gem.available?(e.name, *e.requirement.as_list) &&
|
159
|
-
(env.nil? || e.environments.include?(env))
|
162
|
+
!Gem.available?(e.name, *e.requirement.as_list) && e.matches?(env)
|
160
163
|
end
|
161
164
|
|
162
165
|
installable.each_with_index do |e, i|
|
data/test/test_isolate.rb
CHANGED
@@ -11,6 +11,7 @@ class TestIsolate < MiniTest::Unit::TestCase
|
|
11
11
|
def teardown
|
12
12
|
@isolate.disable
|
13
13
|
Isolate.instance.disable if Isolate.instance
|
14
|
+
Gem::DependencyInstaller.reset_last_install
|
14
15
|
FileUtils.rm_rf "tmp/gems"
|
15
16
|
end
|
16
17
|
|
@@ -42,7 +43,7 @@ class TestIsolate < MiniTest::Unit::TestCase
|
|
42
43
|
@isolate.gem "rubyforge"
|
43
44
|
|
44
45
|
@isolate.environment "borg" do
|
45
|
-
|
46
|
+
gem "hoe"
|
46
47
|
end
|
47
48
|
|
48
49
|
@isolate.activate
|
@@ -56,7 +57,7 @@ class TestIsolate < MiniTest::Unit::TestCase
|
|
56
57
|
@isolate.gem "rubyforge"
|
57
58
|
|
58
59
|
@isolate.environment "borg" do
|
59
|
-
|
60
|
+
gem "hoe"
|
60
61
|
end
|
61
62
|
|
62
63
|
@isolate.activate "borg"
|
@@ -76,6 +77,14 @@ class TestIsolate < MiniTest::Unit::TestCase
|
|
76
77
|
Gem::DependencyInstaller.last_install
|
77
78
|
end
|
78
79
|
|
80
|
+
def test_activate_install_environment
|
81
|
+
@isolate = Isolate.new "tmp/gems", :install => true
|
82
|
+
@isolate.environment(:nope) { gem "foo" }
|
83
|
+
|
84
|
+
@isolate.activate
|
85
|
+
assert_nil Gem::DependencyInstaller.last_install
|
86
|
+
end
|
87
|
+
|
79
88
|
def test_activate_ret
|
80
89
|
assert_equal @isolate, @isolate.activate
|
81
90
|
end
|
@@ -117,17 +126,6 @@ class TestIsolate < MiniTest::Unit::TestCase
|
|
117
126
|
assert_equal [@isolate.path], Gem.path
|
118
127
|
end
|
119
128
|
|
120
|
-
def test_enable_block
|
121
|
-
path = Gem.path.dup
|
122
|
-
refute_equal [@isolate.path], Gem.path
|
123
|
-
|
124
|
-
@isolate.enable do
|
125
|
-
assert_equal [@isolate.path], Gem.path
|
126
|
-
end
|
127
|
-
|
128
|
-
assert_equal path, Gem.path
|
129
|
-
end
|
130
|
-
|
131
129
|
def test_enable_ret
|
132
130
|
assert_equal @isolate, @isolate.enable
|
133
131
|
end
|
@@ -136,10 +134,10 @@ class TestIsolate < MiniTest::Unit::TestCase
|
|
136
134
|
@isolate.gem "none"
|
137
135
|
|
138
136
|
@isolate.environment "test", "ci" do
|
139
|
-
|
137
|
+
gem "test-ci"
|
140
138
|
|
141
|
-
|
142
|
-
|
139
|
+
environment "production" do
|
140
|
+
gem "test-ci-production"
|
143
141
|
end
|
144
142
|
end
|
145
143
|
|
@@ -188,6 +186,7 @@ end
|
|
188
186
|
class Gem::DependencyInstaller
|
189
187
|
@@last_install = nil
|
190
188
|
def self.last_install; @@last_install end
|
189
|
+
def self.reset_last_install; @@last_install = nil end
|
191
190
|
|
192
191
|
alias old_install install
|
193
192
|
|