rubygems-update 0.8.11 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rubygems-update might be problematic. Click here for more details.

Files changed (114) hide show
  1. data/ChangeLog +199 -1
  2. data/README +6 -4
  3. data/Rakefile +46 -14
  4. data/bin/gem +6 -0
  5. data/bin/gem_mirror +7 -1
  6. data/bin/gem_server +3 -5
  7. data/bin/gemlock +127 -0
  8. data/bin/gemri +24 -0
  9. data/bin/gemwhich +39 -11
  10. data/bin/index_gem_repository.rb +280 -0
  11. data/bin/update_rubygems +6 -0
  12. data/doc/makedoc.rb +7 -1
  13. data/examples/application/lib/somefunctionality.rb +6 -0
  14. data/lib/gemconfigure.rb +6 -0
  15. data/lib/rbconfig/datadir.rb +24 -0
  16. data/lib/rubygems.rb +90 -24
  17. data/lib/rubygems/builder.rb +6 -0
  18. data/lib/rubygems/cmd_manager.rb +36 -30
  19. data/lib/rubygems/command.rb +90 -29
  20. data/lib/rubygems/config_file.rb +45 -2
  21. data/lib/rubygems/custom_require.rb +12 -6
  22. data/lib/rubygems/dependency_list.rb +6 -0
  23. data/lib/rubygems/doc_manager.rb +79 -34
  24. data/lib/rubygems/format.rb +6 -0
  25. data/lib/rubygems/gem_commands.rb +209 -88
  26. data/lib/rubygems/gem_openssl.rb +12 -0
  27. data/lib/rubygems/gem_runner.rb +25 -10
  28. data/lib/rubygems/incremental_fetcher.rb +136 -0
  29. data/lib/rubygems/installer.rb +103 -28
  30. data/lib/rubygems/loadpath_manager.rb +6 -0
  31. data/lib/rubygems/old_format.rb +6 -0
  32. data/lib/rubygems/open-uri.rb +231 -79
  33. data/lib/rubygems/package.rb +5 -3
  34. data/lib/rubygems/remote_installer.rb +89 -52
  35. data/lib/rubygems/rubygems_version.rb +1 -1
  36. data/lib/rubygems/security.rb +6 -0
  37. data/lib/rubygems/source_index.rb +115 -52
  38. data/lib/rubygems/specification.rb +92 -76
  39. data/lib/rubygems/timer.rb +6 -0
  40. data/lib/rubygems/user_interaction.rb +88 -4
  41. data/lib/rubygems/validator.rb +6 -0
  42. data/lib/rubygems/version.rb +6 -0
  43. data/lib/ubygems.rb +6 -0
  44. data/post-install.rb +6 -0
  45. data/scripts/buildtests.rb +6 -0
  46. data/scripts/gemdoc.rb +6 -0
  47. data/scripts/runtest.rb +6 -0
  48. data/scripts/specdoc.rb +6 -0
  49. data/scripts/upload_gemdoc.rb +6 -0
  50. data/test/bogussources.rb +6 -2
  51. data/test/data/PostMessage-0.0.1.gem +0 -0
  52. data/test/data/a-0.0.1.gem +0 -0
  53. data/test/data/a-0.0.2.gem +0 -0
  54. data/test/data/b-0.0.2.gem +0 -0
  55. data/test/data/c-1.2.gem +0 -0
  56. data/test/data/gemhome/cache/a-0.0.1.gem +0 -0
  57. data/test/data/gemhome/cache/a-0.0.2.gem +0 -0
  58. data/test/data/gemhome/cache/b-0.0.2.gem +0 -0
  59. data/test/data/gemhome/cache/c-1.2.gem +0 -0
  60. data/test/data/gemhome/gems/a-0.0.1/lib/code.rb +6 -0
  61. data/test/data/gemhome/gems/a-0.0.2/lib/code.rb +6 -0
  62. data/test/data/gemhome/gems/b-0.0.2/lib/code.rb +6 -0
  63. data/test/data/gemhome/gems/c-1.2/lib/code.rb +6 -0
  64. data/test/data/gemhome/specifications/a-0.0.1.gemspec +1 -1
  65. data/test/data/gemhome/specifications/a-0.0.2.gemspec +1 -1
  66. data/test/data/gemhome/specifications/b-0.0.2.gemspec +1 -1
  67. data/test/data/gemhome/specifications/c-1.2.gemspec +1 -1
  68. data/test/data/lib/code.rb +6 -0
  69. data/test/data/one/lib/one.rb +6 -0
  70. data/test/data/one/one-0.0.1.gem +0 -0
  71. data/test/data/post_install.gemspec +19 -0
  72. data/test/fake_certlib/openssl.rb +6 -0
  73. data/test/functional.rb +15 -1
  74. data/test/functional_generate_yaml_index.rb +101 -0
  75. data/test/gemenvironment.rb +8 -0
  76. data/test/gemutilities.rb +18 -2
  77. data/test/insure_session.rb +6 -0
  78. data/test/mock/gems/gems/sources-0.0.1/lib/sources.rb +6 -0
  79. data/test/mockgemui.rb +6 -0
  80. data/test/onegem.rb +12 -0
  81. data/test/simple_gem.rb +6 -0
  82. data/test/test_builder.rb +6 -0
  83. data/test/test_cached_fetcher.rb +6 -0
  84. data/test/test_check_command.rb +6 -0
  85. data/test/test_command.rb +6 -0
  86. data/test/test_configfile.rb +6 -0
  87. data/test/test_datadir.rb +32 -0
  88. data/test/test_dependency_list.rb +6 -0
  89. data/test/test_file_list.rb +6 -0
  90. data/test/test_format.rb +6 -0
  91. data/test/test_gemloadpaths.rb +6 -0
  92. data/test/test_gempaths.rb +11 -1
  93. data/test/test_incremental_fetcher.rb +175 -0
  94. data/test/test_installer.rb +30 -3
  95. data/test/test_loadmanager.rb +6 -0
  96. data/test/test_local_cache.rb +8 -2
  97. data/test/test_package.rb +6 -0
  98. data/test/test_parse_commands.rb +8 -2
  99. data/test/test_process_commands.rb +31 -0
  100. data/test/test_remote_fetcher.rb +47 -5
  101. data/test/test_remote_installer.rb +6 -0
  102. data/test/test_require_gem.rb +6 -0
  103. data/test/test_source_index.rb +27 -0
  104. data/test/test_specific_extras.rb +6 -0
  105. data/test/test_specification.rb +30 -0
  106. data/test/test_validator.rb +6 -0
  107. data/test/test_version_comparison.rb +6 -0
  108. data/test/testgem.rc +1 -0
  109. data/test/user_capture.rb +6 -0
  110. data/test/yaml_data.rb +8 -4
  111. metadata +187 -173
  112. data/bin/generate_yaml_index.rb +0 -78
  113. data/lib/rubygems/deployment.rb +0 -267
  114. data/test/test_deployment.rb +0 -93
@@ -1,4 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ # All rights reserved.
5
+ # See LICENSE.txt for permissions.
6
+ #++
7
+
2
8
 
3
9
  require 'rubygems'
4
10
  Gem::manage_gems
@@ -1,3 +1,9 @@
1
+ #--
2
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3
+ # All rights reserved.
4
+ # See LICENSE.txt for permissions.
5
+ #++
6
+
1
7
  module Gem
2
8
  def self.sources
3
9
  ["http://this.is.a.bogus.host"]
@@ -1,4 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ # All rights reserved.
5
+ # See LICENSE.txt for permissions.
6
+ #++
7
+
2
8
 
3
9
  require 'stringio'
4
10
  require 'rubygems/user_interaction'
@@ -1,3 +1,9 @@
1
+ #--
2
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3
+ # All rights reserved.
4
+ # See LICENSE.txt for permissions.
5
+ #++
6
+
1
7
  module OneGem
2
8
 
3
9
  ONEDIR = "test/data/one"
@@ -8,6 +14,12 @@ module OneGem
8
14
  FileUtils.rm_f ONEGEM
9
15
  end
10
16
 
17
+ def make(controller)
18
+ unless File.exist?(ONEGEM)
19
+ build(controller)
20
+ end
21
+ end
22
+
11
23
  def build(controller)
12
24
  Dir.chdir(ONEDIR) do
13
25
  controller.gem "build one.gemspec"
@@ -1,3 +1,9 @@
1
+ #--
2
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3
+ # All rights reserved.
4
+ # See LICENSE.txt for permissions.
5
+ #++
6
+
1
7
  SIMPLE_GEM = <<-GEMDATA
2
8
  MD5SUM = "e3701f9db765a2358aef94c40ded71c8"
3
9
  if $0 == __FILE__
@@ -1,3 +1,9 @@
1
+ #--
2
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3
+ # All rights reserved.
4
+ # See LICENSE.txt for permissions.
5
+ #++
6
+
1
7
  require 'test/unit'
2
8
  require 'rubygems'
3
9
  Gem::manage_gems
@@ -1,4 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ # All rights reserved.
5
+ # See LICENSE.txt for permissions.
6
+ #++
7
+
2
8
 
3
9
  require 'test/unit'
4
10
  require 'fileutils'
@@ -1,4 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ # All rights reserved.
5
+ # See LICENSE.txt for permissions.
6
+ #++
7
+
2
8
 
3
9
  require 'test/unit'
4
10
  require 'rubygems/cmd_manager'
@@ -1,4 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ # All rights reserved.
5
+ # See LICENSE.txt for permissions.
6
+ #++
7
+
2
8
 
3
9
  require 'test/unit'
4
10
  require 'rubygems/command'
@@ -1,4 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ # All rights reserved.
5
+ # See LICENSE.txt for permissions.
6
+ #++
7
+
2
8
 
3
9
  require 'test/unit'
4
10
  require 'rubygems/config_file'
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ # All rights reserved.
5
+ # See LICENSE.txt for permissions.
6
+ #++
7
+
8
+ require 'test/unit'
9
+ require 'rbconfig'
10
+ require 'rubygems'
11
+
12
+ class TestDataDir < Test::Unit::TestCase
13
+ def test_original_dir
14
+ datadir = Config::CONFIG['datadir']
15
+ assert_equal "#{datadir}/xyz", Config.gem_original_datadir('xyz')
16
+ end
17
+
18
+ def test_gem_dir_with_good_package
19
+ gem 'sources'
20
+ assert_match %r{gems/1.8/gems/sources-0.0.1/data/sources$}, Gem.datadir('sources')
21
+ end
22
+
23
+ def test_gem_dir_with_bad_package
24
+ gem 'sources'
25
+ assert_nil Gem.datadir('xyzzy')
26
+ end
27
+
28
+ def test_basic_dir
29
+ datadir = Config::CONFIG['datadir']
30
+ assert_equal "#{datadir}/xyz", Config.datadir('xyz')
31
+ end
32
+ end
@@ -1,4 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ # All rights reserved.
5
+ # See LICENSE.txt for permissions.
6
+ #++
7
+
2
8
 
3
9
  require 'test/unit'
4
10
  require 'rubygems/dependency_list'
@@ -1,3 +1,9 @@
1
+ #--
2
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3
+ # All rights reserved.
4
+ # See LICENSE.txt for permissions.
5
+ #++
6
+
1
7
  require 'fileutils'
2
8
  require 'tmpdir'
3
9
  require 'test/unit'
@@ -1,3 +1,9 @@
1
+ #--
2
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3
+ # All rights reserved.
4
+ # See LICENSE.txt for permissions.
5
+ #++
6
+
1
7
  require 'rubygems'
2
8
  Gem::manage_gems
3
9
  require 'test/unit'
@@ -1,4 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ # All rights reserved.
5
+ # See LICENSE.txt for permissions.
6
+ #++
7
+
2
8
 
3
9
  require 'test/unit'
4
10
  require 'rubygems'
@@ -1,4 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ # All rights reserved.
5
+ # See LICENSE.txt for permissions.
6
+ #++
7
+
2
8
 
3
9
  require 'test/unit'
4
10
  require 'fileutils'
@@ -109,6 +115,8 @@ class TestGemPaths < RubyGemTestCase
109
115
  end
110
116
 
111
117
  def test_ensure_gem_directories_write_protected
118
+ return if win_platform? #This test works only for FS that support write protection
119
+
112
120
  gemdir = File.join(@tempdir, "egd")
113
121
  FileUtils.rm_r gemdir rescue nil
114
122
  FileUtils.mkdir_p gemdir
@@ -122,6 +130,8 @@ class TestGemPaths < RubyGemTestCase
122
130
  end
123
131
 
124
132
  def test_ensure_gem_directories_with_parents_write_protected
133
+ return if win_platform? #This test works only for FS that support write protection
134
+
125
135
  parent = File.join(@tempdir, "egd")
126
136
  gemdir = "#{parent}/a/b/c"
127
137
 
@@ -130,7 +140,7 @@ class TestGemPaths < RubyGemTestCase
130
140
  FileUtils.chmod 0400, parent
131
141
  Gem.use_paths(gemdir)
132
142
  Gem.send(:ensure_gem_subdirectories, gemdir)
133
- assert ! File.exist?("#{gemdir}/cache")
143
+ assert !File.exist?("#{gemdir}/cache")
134
144
  ensure
135
145
  FileUtils.chmod(0600, parent) rescue nil
136
146
  FileUtils.rm_r parent rescue nil
@@ -0,0 +1,175 @@
1
+ #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ # All rights reserved.
5
+ # See LICENSE.txt for permissions.
6
+ #++
7
+
8
+
9
+ require 'test/unit'
10
+ require 'fileutils'
11
+ require 'flexmock'
12
+
13
+ require 'rubygems/incremental_fetcher'
14
+ require 'rubygems/remote_installer'
15
+ require 'test/yaml_data'
16
+ require 'test/gemutilities'
17
+
18
+ class TestIncrementalFetcher < RubyGemTestCase
19
+ include Gem::DefaultUserInteraction
20
+
21
+ TEST_URI = "http://onestepback.org/betagems"
22
+
23
+ def setup
24
+ super
25
+ @fetcher = FlexMock.new("RemoteFetcher")
26
+ @manager = FlexMock.new("SourceInfoCache")
27
+ @inc = Gem::IncrementalFetcher.new(TEST_URI, @fetcher, @manager)
28
+ @existing_index = Gem::SourceIndex.new
29
+ @existing_index.add_spec(quick_gem("a", "1.0"))
30
+ @existing_index.add_spec(quick_gem("b", "2.0"))
31
+ @sice = Gem::SourceInfoCacheEntry.new(@existing_index, 100)
32
+
33
+ @url_hash = { TEST_URI => @sice}
34
+ @manager.should_receive(:cache_data).and_return(@url_hash)
35
+
36
+ @old_ui = ui
37
+ self.ui = Gem::SilentUI.new
38
+ end
39
+
40
+ def teardown
41
+ self.ui = @old_ui
42
+ end
43
+
44
+ def verify
45
+ [ @fetcher, @manager ].each do |it| it.mock_verify end
46
+ end
47
+
48
+ def zipped(string)
49
+ require 'zlib'
50
+ Zlib::Deflate.deflate(string)
51
+ end
52
+
53
+ def new_source_index
54
+ result = Gem::SourceIndex.new
55
+ result.add_spec(quick_gem("a", "1.0"))
56
+ result.add_spec(quick_gem("b", "2.0"))
57
+ result.add_spec(quick_gem("b", "2.1"))
58
+ result
59
+ end
60
+
61
+ def test_creation
62
+ assert_not_nil @inc
63
+ verify
64
+ end
65
+
66
+ def test_remote_size_matches_cached_data_returns_cache
67
+ @fetcher.should_receive(:size).with_no_args.and_return(100).once
68
+ @manager.should_receive(:update).never
69
+
70
+ si = @inc.source_index
71
+
72
+ assert si.specification("a-1.0")
73
+ assert si.specification("b-2.0")
74
+ assert_equal 2, si.search(/./).size
75
+ verify
76
+ end
77
+
78
+ def test_remote_size_differs_and_remote_has_additional_specs
79
+ @fetcher.should_receive(:size).with_no_args.and_return(200).once
80
+ @fetcher.should_receive(:fetch_path).with("/quick/index.rz").once.
81
+ and_return(zipped("a-1.0\nb-2.0\na-1.1\n"))
82
+ @fetcher.should_receive(:fetch_path).with("/quick/a-1.1.gemspec.rz").once.
83
+ and_return(zipped(quick_gem("a", "1.1").to_yaml))
84
+ @manager.should_receive(:update).at_least.once.ordered
85
+ @manager.should_receive(:flush).at_least.once.ordered
86
+
87
+ si = @inc.source_index
88
+
89
+ assert si.specification("a-1.0")
90
+ assert si.specification("a-1.1")
91
+ assert si.specification("b-2.0")
92
+ assert_equal 3, si.search(/./).size
93
+ verify
94
+ end
95
+
96
+ def test_remote_size_differs_and_remote_has_fewer_specs
97
+ @fetcher.should_receive(:size).with_no_args.and_return(200).once
98
+ @fetcher.should_receive(:fetch_path).with("/quick/index.rz").once.
99
+ and_return(zipped("a-1.0\n"))
100
+ @manager.should_receive(:update).at_least.once.ordered
101
+ @manager.should_receive(:flush).at_least.once.ordered
102
+
103
+ si = @inc.source_index
104
+
105
+ assert si.specification("a-1.0")
106
+ assert_equal 1, si.search(/./).size
107
+ verify
108
+ end
109
+
110
+ def test_remote_size_differs_and_no_quick_index_is_available
111
+ @fetcher.should_receive(:size).with_no_args.and_return(200).once
112
+ @fetcher.should_receive(:fetch_path).with("/quick/index.rz").once.
113
+ and_return { fail RuntimeError, "No quick/index.rz file available" }
114
+ new_si = new_source_index
115
+ @fetcher.should_receive(:source_index).with_no_args.and_return(new_si)
116
+
117
+ si = @inc.source_index
118
+
119
+ assert_equal new_si.object_id, si.object_id
120
+ assert si.specification("a-1.0")
121
+ assert si.specification("b-2.0")
122
+ assert si.specification("b-2.1")
123
+ assert_equal 3, si.search(/./).size
124
+ verify
125
+ end
126
+
127
+ def test_no_source_index_found_for_uri
128
+ @fetcher.should_receive(:size).with_no_args.and_return(200).once
129
+ @fetcher.should_receive(:fetch_path).with("/quick/index.rz").once.
130
+ and_return(zipped("a-1.0\n"))
131
+ @fetcher.should_receive(:fetch_path).with("/quick/a-1.0.gemspec.rz").once.
132
+ and_return(zipped(quick_gem("a", "1.0").to_yaml))
133
+ @manager.should_receive(:update).at_least.once.ordered
134
+ @manager.should_receive(:flush).at_least.once.ordered
135
+ @url_hash.delete(TEST_URI)
136
+
137
+ si = @inc.source_index
138
+
139
+ assert si.specification('a-1.0')
140
+ assert_equal 1, si.search(/./).size
141
+ verify
142
+ end
143
+
144
+ def test_fetch_where_some_gemspecs_cant_be_retrieved
145
+ @fetcher.should_receive(:size).with_no_args.and_return(200).once
146
+ @fetcher.should_receive(:fetch_path).with("/quick/index.rz").once.
147
+ and_return(zipped("a-1.0\nb-2.0\na-1.1\na-1.2\na-1.3\n"))
148
+ @fetcher.should_receive(:fetch_path).with("/quick/a-1.1.gemspec.rz").once.
149
+ and_return(zipped(quick_gem("a", "1.1").to_yaml))
150
+ @fetcher.should_receive(:fetch_path).with("/quick/a-1.2.gemspec.rz").once.
151
+ and_return { fail "No gem found for a-1.2" }
152
+ @fetcher.should_receive(:fetch_path).with("/quick/a-1.3.gemspec.rz").once.
153
+ and_return(zipped(quick_gem("a", "1.3").to_yaml))
154
+ @manager.should_receive(:update).at_least.once.ordered
155
+ @manager.should_receive(:flush).at_least.once.ordered
156
+
157
+ si = @inc.source_index
158
+
159
+ assert si.specification("a-1.0")
160
+ assert si.specification("a-1.1")
161
+ assert si.specification("a-1.3")
162
+ assert si.specification("b-2.0")
163
+ assert_nil si.specification("a-1.2")
164
+ assert_equal 4, si.search(/./).size
165
+ verify
166
+ end
167
+
168
+ def test_basic_fetching
169
+ @fetcher.should_receive(:fetch_path).with("xyz").once.
170
+ and_return("abc")
171
+
172
+ assert_equal "abc", @inc.fetch_path("xyz")
173
+ end
174
+
175
+ end
@@ -1,3 +1,9 @@
1
+ #--
2
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3
+ # All rights reserved.
4
+ # See LICENSE.txt for permissions.
5
+ #++
6
+
1
7
  $TESTING = true
2
8
  require 'fileutils'
3
9
  require 'tmpdir'
@@ -15,7 +21,7 @@ class TestInstaller < RubyGemTestCase
15
21
  def setup
16
22
  super
17
23
  @spec = quick_gem("a")
18
- @installer = Gem::Installer.new false, {}
24
+ @installer = Gem::Installer.new :fake, {}
19
25
  end
20
26
 
21
27
  def util_gem_dir(version = '0.0.2')
@@ -45,7 +51,7 @@ class TestInstaller < RubyGemTestCase
45
51
  assert_equal true, File.directory?(util_inst_bindir)
46
52
  installed_exec = File.join(util_inst_bindir, "my_exec")
47
53
  assert_equal true, File.exist?(installed_exec)
48
- assert_equal 0100755, File.stat(installed_exec).mode
54
+ assert_equal(0100755, File.stat(installed_exec).mode) unless win_platform?
49
55
 
50
56
  wrapper = File.read installed_exec
51
57
  assert_match(/generated by RubyGems/, wrapper)
@@ -73,6 +79,8 @@ class TestInstaller < RubyGemTestCase
73
79
  end
74
80
 
75
81
  def test_generate_bin_symlinks
82
+ return if win_platform? #Windows FS do not support symlinks
83
+
76
84
  @installer.options[:wrappers] = false
77
85
  util_make_exec
78
86
  @installer.directory = util_gem_dir
@@ -108,6 +116,8 @@ class TestInstaller < RubyGemTestCase
108
116
  end
109
117
 
110
118
  def test_generate_bin_symlinks_update_newer
119
+ return if win_platform? #Windows FS do not support symlinks
120
+
111
121
  @installer.options[:wrappers] = false
112
122
  util_make_exec
113
123
  @installer.directory = File.join @gemhome, util_gem_dir
@@ -136,6 +146,8 @@ class TestInstaller < RubyGemTestCase
136
146
  end
137
147
 
138
148
  def test_generate_bin_symlinks_update_older
149
+ return if win_platform? #Windows FS do not support symlinks
150
+
139
151
  @installer.options[:wrappers] = false
140
152
  util_make_exec
141
153
  @installer.directory = File.join @gemhome, util_gem_dir
@@ -164,6 +176,8 @@ class TestInstaller < RubyGemTestCase
164
176
  end
165
177
 
166
178
  def test_generate_bin_symlinks_update_remove_wrapper
179
+ return if win_platform? #Windows FS do not support symlinks
180
+
167
181
  @installer.options[:wrappers] = true
168
182
  util_make_exec
169
183
  @installer.directory = util_gem_dir
@@ -202,7 +216,9 @@ class TestInstaller < RubyGemTestCase
202
216
  assert_equal true, File.directory?(util_inst_bindir)
203
217
  installed_exec = File.join(util_inst_bindir, "my_exec")
204
218
  assert_equal true, File.exist?(installed_exec)
205
- assert_equal 0100755, File.stat(installed_exec).mode
219
+
220
+ expected_mode = win_platform? ? 0100644 : 0100755
221
+ assert_equal expected_mode, File.stat(installed_exec).mode
206
222
 
207
223
  wrapper = File.read installed_exec
208
224
  assert_match(/generated by RubyGems/, wrapper)
@@ -210,5 +226,16 @@ class TestInstaller < RubyGemTestCase
210
226
  Config::CONFIG["arch"] = old_arch
211
227
  end
212
228
 
229
+ def test_install_with_message
230
+ oldstdout = $stdout.dup
231
+ $stdout = StringIO.new
232
+ @gem = File.join 'test', 'data', "PostMessage-0.0.1.gem"
233
+ @installer = Gem::Installer.new @gem, {}
234
+ @installer.install
235
+ assert_equal "I am a shiny gem!\n", $stdout.string
236
+ ensure
237
+ $stdout = oldstdout
238
+ end
239
+
213
240
  end
214
241