isolate 3.0.1 → 3.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.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,11 @@
1
+ === 3.0.2 / 2011-05-14
2
+
3
+ * 3 bug fixes:
4
+
5
+ * Cleanup shouldn't try to uninstall specs outside of our sandbox.
6
+ * Pass spec.base_dir to the uninstaller during cleanup.
7
+ * We shouldn't manipulate Gem.path, but if we do, we should be smart/clean about it.
8
+
1
9
  === 3.0.1 / 2011-05-11
2
10
 
3
11
  * 6 minor enhancements:
@@ -8,7 +8,7 @@ module Isolate
8
8
 
9
9
  # Duh.
10
10
 
11
- VERSION = "3.0.1"
11
+ VERSION = "3.0.2"
12
12
 
13
13
  # Disable Isolate. If a block is provided, isolation will be
14
14
  # disabled for the scope of the block.
@@ -90,6 +90,9 @@ module Isolate
90
90
  legit = legitimize!
91
91
  extra = installed - legit
92
92
 
93
+ gem_dir = Gem.dir
94
+ extra.reject! { |s| s.base_dir != gem_dir }
95
+
93
96
  unless extra.empty?
94
97
  padding = Math.log10(extra.size).to_i + 1
95
98
  format = "[%0#{padding}d/%s] Nuking %s."
@@ -103,7 +106,7 @@ module Isolate
103
106
  :version => e.version,
104
107
  :ignore => true,
105
108
  :executables => true,
106
- :install_dir => path)
109
+ :install_dir => e.base_dir)
107
110
  uninstaller.uninstall
108
111
  end
109
112
  end
@@ -172,8 +175,11 @@ module Isolate
172
175
 
173
176
  ENV["ISOLATED"] = path
174
177
 
178
+ if system? then
179
+ Gem.path.unshift path # HACK: this is just wrong!
180
+ Gem.path.uniq! # HACK: needed for the previous line :(
181
+ end
175
182
  Isolate.refresh
176
- Gem.path.unshift path if system?
177
183
 
178
184
  @enabled = true
179
185
  fire :enabled
@@ -2,6 +2,7 @@ require "isolate/test"
2
2
 
3
3
  class TestIsolateSandbox < Isolate::Test
4
4
  WITH_HOE = "test/fixtures/with-hoe"
5
+ SYSTEM = "test/fixtures/system"
5
6
 
6
7
  def setup
7
8
  @sandbox = sandbox
@@ -55,18 +56,72 @@ class TestIsolateSandbox < Isolate::Test
55
56
  # TODO: cleanup with 2 versions of same gem, 1 activated
56
57
  # TODO: install with 1 older version, 1 new gem to be installed
57
58
 
58
- def test_cleanup
59
- s = sandbox :path => WITH_HOE, :install => true, :cleanup => true
59
+ def test_cleanup_all
60
+ with_env_setup do
61
+ s = sandbox :path => WITH_HOE, :install => true, :cleanup => true
60
62
 
61
- assert_silent do
62
- s.activate # no gems on purpose
63
+ assert_silent do
64
+ s.activate # no gems on purpose
65
+ end
66
+
67
+ expected = [["hoe", "2.3.3", WITH_HOE],
68
+ ["rake", "0.8.7", WITH_HOE],
69
+ ["rubyforge", "1.0.4", WITH_HOE]]
70
+
71
+ assert_equal expected, Gem::Uninstaller.value
72
+ end
73
+ end
74
+
75
+ def test_cleanup_all_system
76
+ with_env_setup do
77
+ s = sandbox(:path => WITH_HOE, :install => true, :cleanup => true,
78
+ :system => true)
79
+
80
+ assert_silent do
81
+ s.activate # no gems on purpose
82
+ end
83
+
84
+ expected = [["hoe", "2.3.3", WITH_HOE],
85
+ ["rake", "0.8.7", WITH_HOE],
86
+ ["rubyforge", "1.0.4", WITH_HOE]]
87
+
88
+ assert_equal expected, Gem::Uninstaller.value.sort
89
+ end
90
+ end
91
+
92
+ def test_cleanup_partial
93
+ with_env_setup do
94
+ s = sandbox :path => WITH_HOE, :install => true, :cleanup => true
95
+
96
+ s.gem "rake", "0.8.7"
97
+
98
+ assert_silent do
99
+ s.activate
100
+ end
101
+
102
+ expected = [["hoe", "2.3.3", WITH_HOE],
103
+ ["rubyforge", "1.0.4", WITH_HOE]]
104
+
105
+ assert_equal expected, Gem::Uninstaller.value
63
106
  end
107
+ end
108
+
109
+ def test_cleanup_partial_system
110
+ with_env_setup do
111
+ s = sandbox(:path => WITH_HOE, :install => true, :cleanup => true,
112
+ :system => true)
64
113
 
65
- expected = [["hoe", "2.3.3", WITH_HOE],
66
- ["rake", "0.8.7", WITH_HOE],
67
- ["rubyforge", "1.0.4", WITH_HOE]]
114
+ s.gem "rake", "0.8.7"
68
115
 
69
- assert_equal expected, Gem::Uninstaller.value
116
+ assert_silent do
117
+ s.activate
118
+ end
119
+
120
+ expected = [["hoe", "2.3.3", WITH_HOE],
121
+ ["rubyforge", "1.0.4", WITH_HOE]]
122
+
123
+ assert_equal expected, Gem::Uninstaller.value.sort
124
+ end
70
125
  end
71
126
 
72
127
  def test_disable
@@ -204,9 +259,12 @@ class TestIsolateSandbox < Isolate::Test
204
259
  end
205
260
 
206
261
  def test_initialize_override_defaults
207
- s = Isolate::Sandbox.new :path => "x", :cleanup => false,
208
- :install => false, :system => false,
209
- :verbose => false, :multiruby => false
262
+ s = Isolate::Sandbox.new(:path => "x",
263
+ :cleanup => false,
264
+ :install => false,
265
+ :system => false,
266
+ :verbose => false,
267
+ :multiruby => false)
210
268
 
211
269
  assert_equal File.expand_path("x"), s.path
212
270
 
@@ -266,15 +324,27 @@ class TestIsolateSandbox < Isolate::Test
266
324
  "#{name} is NOT a loaded gemspec, and it should be!"
267
325
  end
268
326
 
269
- def sandbox *args, &block
270
- opts = {
327
+ def sandbox opts = {}, &block
328
+ defaults = {
271
329
  :install => false,
272
330
  :system => false,
273
331
  :verbose => false,
274
332
  :multiruby => false
275
333
  }
276
334
 
277
- opts.merge! args.pop if Hash === args.last
278
- Isolate::Sandbox.new opts, &block
335
+ Isolate::Sandbox.new defaults.merge(opts), &block
336
+ end
337
+
338
+ def with_env_setup
339
+ old_gem_path = ENV["GEM_PATH"]
340
+ old_gem_home = ENV["GEM_HOME"]
341
+ ENV["GEM_HOME"] = "test/fixtures/with-hoe"
342
+ ENV["GEM_PATH"] = "test/fixtures/system"
343
+ Gem.refresh
344
+
345
+ yield
346
+ ensure
347
+ ENV["GEM_PATH"] = old_gem_path
348
+ ENV["GEM_HOME"] = old_gem_home
279
349
  end
280
350
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isolate
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 0
9
- - 1
10
- version: 3.0.1
9
+ - 2
10
+ version: 3.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - John Barnette
@@ -37,7 +37,7 @@ cert_chain:
37
37
  FBHgymkyj/AOSqKRIpXPhjC6
38
38
  -----END CERTIFICATE-----
39
39
 
40
- date: 2011-05-13 00:00:00 Z
40
+ date: 2011-05-15 00:00:00 Z
41
41
  dependencies:
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: minitest
metadata.gz.sig CHANGED
Binary file