aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--lib/rubygems/package.rb2
-rw-r--r--test/rubygems/test_gem_package.rb5
3 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 7b7b647c43..f3845db2db 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Dec 10 09:13:08 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package.rb: Omit directories when packaging gems like
+ RubyGems 1.8.x
+ * test/rubygems/test_gem_package.rb: Test for above.
+
Sun Dec 9 17:36:59 2012 Shugo Maeda <shugo@ruby-lang.org>
* vm_insnhelper.c (vm_call_opt_send): Kernel#send should not use
diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb
index 910f835602..e33dea06e9 100644
--- a/lib/rubygems/package.rb
+++ b/lib/rubygems/package.rb
@@ -192,6 +192,8 @@ class Gem::Package
@spec.files.each do |file|
stat = File.stat file
+ next unless stat.file?
+
tar.add_file_simple file, stat.mode, stat.size do |dst_io|
open file, 'rb' do |src_io|
dst_io.write src_io.read 16384 until src_io.eof?
diff --git a/test/rubygems/test_gem_package.rb b/test/rubygems/test_gem_package.rb
index 9a60d97af9..afca143ea3 100644
--- a/test/rubygems/test_gem_package.rb
+++ b/test/rubygems/test_gem_package.rb
@@ -102,9 +102,10 @@ class TestGemPackage < Gem::Package::TarTestCase
def test_add_files
spec = Gem::Specification.new
- spec.files = 'lib/code.rb'
+ spec.files = %w[lib/code.rb lib/empty]
+
+ FileUtils.mkdir_p 'lib/empty'
- FileUtils.mkdir 'lib'
open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end
open 'lib/extra.rb', 'w' do |io| io.write '# lib/extra.rb' end