From 5648f02fa0858b57d37d756a031306b98802902b Mon Sep 17 00:00:00 2001 From: Colin Casey Date: Sun, 16 May 2010 22:52:02 -0300 Subject: [PATCH] Test for imposed version number as last part of gem directory name for frozen gems --- railties/test/gem_dependency_test.rb | 8 +++++ .../dummy-gem-l-1.0.0-x86-mswin32/.specification | 28 ++++++++++++++++++++ .../lib/dummy-gem-l.rb | 1 + 3 files changed, 37 insertions(+), 0 deletions(-) create mode 100644 railties/test/vendor/gems/dummy-gem-l-1.0.0-x86-mswin32/.specification create mode 100644 railties/test/vendor/gems/dummy-gem-l-1.0.0-x86-mswin32/lib/dummy-gem-l.rb diff --git a/railties/test/gem_dependency_test.rb b/railties/test/gem_dependency_test.rb index a165016..8bcce86 100644 --- a/railties/test/gem_dependency_test.rb +++ b/railties/test/gem_dependency_test.rb @@ -113,6 +113,14 @@ class GemDependencyTest < Test::Unit::TestCase assert_not_nil DUMMY_GEM_C_VERSION assert_equal '0.6.0', DUMMY_GEM_C_VERSION end + + def test_gem_load_frozen_when_platform_string_is_present + dummy_gem = Rails::GemDependency.new "dummy-gem-l" + dummy_gem.add_load_paths + dummy_gem.load + assert_not_nil DUMMY_GEM_L_VERSION + assert_equal "1.0.0", DUMMY_GEM_L_VERSION + end def test_gem_load_missing_specification dummy_gem = Rails::GemDependency.new "dummy-gem-d" diff --git a/railties/test/vendor/gems/dummy-gem-l-1.0.0-x86-mswin32/.specification b/railties/test/vendor/gems/dummy-gem-l-1.0.0-x86-mswin32/.specification new file mode 100644 index 0000000..cb3ff92 --- /dev/null +++ b/railties/test/vendor/gems/dummy-gem-l-1.0.0-x86-mswin32/.specification @@ -0,0 +1,28 @@ +--- !ruby/object:Gem::Specification +name: dummy-gem-l +version: !ruby/object:Gem::Version + version: 1.0.0 +platform: mswin32 +authors: +- "Nobody" +date: 2008-10-03 00:00:00 -04:00 +files: +- lib +- lib/dummy-gem-l.rb +require_paths: +- lib +required_ruby_version: !ruby/object:Gem::Requirement + requirements: + - - ">=" + - !ruby/object:Gem::Version + version: "0" + version: +required_rubygems_version: !ruby/object:Gem::Requirement + requirements: + - - ">=" + - !ruby/object:Gem::Version + version: "0" + version: +requirements: [] +specification_version: 2 +summary: Dummy Gem L diff --git a/railties/test/vendor/gems/dummy-gem-l-1.0.0-x86-mswin32/lib/dummy-gem-l.rb b/railties/test/vendor/gems/dummy-gem-l-1.0.0-x86-mswin32/lib/dummy-gem-l.rb new file mode 100644 index 0000000..edade80 --- /dev/null +++ b/railties/test/vendor/gems/dummy-gem-l-1.0.0-x86-mswin32/lib/dummy-gem-l.rb @@ -0,0 +1 @@ +DUMMY_GEM_L_VERSION="1.0.0" -- 1.6.0.4 From b3864a0857c9f21290008f2c762f906fccc0e961 Mon Sep 17 00:00:00 2001 From: Colin Casey Date: Sun, 16 May 2010 23:01:18 -0300 Subject: [PATCH] Fix for imposed version number as last part of gem directory name for frozen gems --- railties/lib/rails/gem_dependency.rb | 6 ++++-- railties/lib/rails/vendor_gem_source_index.rb | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/railties/lib/rails/gem_dependency.rb b/railties/lib/rails/gem_dependency.rb index 8a496ca..4a2418c 100644 --- a/railties/lib/rails/gem_dependency.rb +++ b/railties/lib/rails/gem_dependency.rb @@ -31,8 +31,10 @@ module Rails def self.from_directory_name(directory_name, load_spec=true) directory_name_parts = File.basename(directory_name).split('-') - name = directory_name_parts[0..-2].join('-') - version = directory_name_parts.last + + version = directory_name_parts.find { |s| s.match(/^\d(\.\d|\.\w+)*$/) } + name = directory_name_parts[0..directory_name_parts.index(version)-1].join('-') if version + result = self.new(name, :version => version) spec_filename = File.join(directory_name, '.specification') if load_spec diff --git a/railties/lib/rails/vendor_gem_source_index.rb b/railties/lib/rails/vendor_gem_source_index.rb index 91f6167..ea5147a 100644 --- a/railties/lib/rails/vendor_gem_source_index.rb +++ b/railties/lib/rails/vendor_gem_source_index.rb @@ -101,8 +101,8 @@ module Rails end def version_for_dir(d) - matches = /-([^-]+)$/.match(d) - Gem::Version.new(matches[1]) if matches + version = d.split('-').find { |s| s.match(/^\d(\.\d|\.\w+)*$/) } + Gem::Version.new(version) end def load_specification(gem_dir) -- 1.6.0.4