runcoderun-gem_sync 1.1.4 → 1.1.6

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/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.4
1
+ 1.1.6
@@ -2,6 +2,10 @@ require 'examples/example_helper'
2
2
 
3
3
  describe Rcr::GemSync do
4
4
 
5
+ def fake_gem(name, version)
6
+ OpenStruct.new(:name => name, :version => version)
7
+ end
8
+
5
9
  describe "sync" do
6
10
  it "should read gem list, install each gem, ..." do
7
11
  gem_sync = Rcr::GemSync.new(["--github"])
@@ -42,6 +46,53 @@ EOL
42
46
  end
43
47
  end
44
48
 
49
+ describe "installed?" do
50
+ describe "is rspec installed?" do
51
+ it "should be installed if any version of rspec is installed" do
52
+ gem_sync = Rcr::GemSync.new
53
+ gem_sync.stubs(:installed_gems).returns([fake_gem('rspec', '1.2.0')])
54
+ gem_sync.installed?(OpenStruct.new(:name => "rspec")).should be_true
55
+ end
56
+
57
+ it "should not be installed if rspec is not installed" do
58
+ gem_sync = Rcr::GemSync.new
59
+ gem_sync.stubs(:installed_gems).returns([fake_gem('shoulda', '1.2.0')])
60
+ gem_sync.installed?(OpenStruct.new(:name => "rspec")).should be_false
61
+ gem_sync.installed?(OpenStruct.new(:name => "rspec", :version => '1.2.0')).should be_false
62
+ end
63
+ end
64
+
65
+ describe "is rspec v1.2.3 installed?" do
66
+ it "should be installed if rspec v1.2.3 is installed" do
67
+ gem_sync = Rcr::GemSync.new
68
+ gem_sync.stubs(:installed_gems).returns([fake_gem('rspec', '1.2.3'), fake_gem('rspec', '1.3.0')])
69
+ gem_sync.installed?(fake_gem('rspec', '1.2.3')).should be_true
70
+ end
71
+
72
+ it "should not be installed if rspec is installed, but v1.2.3 is not" do
73
+ gem_sync = Rcr::GemSync.new
74
+ gem_sync.stubs(:installed_gems).returns([fake_gem('rspec', '1.2.6'), fake_gem('rspec', '1.3.0')])
75
+ gem_sync.installed?(fake_gem('rspec', '1.2.3')).should be_false
76
+ end
77
+ end
78
+ end
79
+
80
+ describe "install_from_github" do
81
+ it "should not attempt to install if there are no dashes in the name" do
82
+ gem = fake_gem("somegem", '1.0.0')
83
+ gem_sync = Rcr::GemSync.new
84
+ gem_sync.expects(:run).never
85
+ gem_sync.install_from_github(gem)
86
+ end
87
+
88
+ it "should attempt to install if there are dashes in the name" do
89
+ gem = fake_gem("user-gem", '1.0.0')
90
+ gem_sync = Rcr::GemSync.new
91
+ gem_sync.expects(:run).never
92
+ gem_sync.install_from_github(gem)
93
+ end
94
+ end
95
+
45
96
  describe "install!" do
46
97
  it "should skip if already installed" do
47
98
  gem = stub_everything("gem", :name => "foo")
data/gem_sync.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{gem_sync}
8
- s.version = "1.1.4"
8
+ s.version = "1.1.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Rob Sanheim"]
data/lib/rcr/gem_sync.rb CHANGED
@@ -58,8 +58,17 @@ module Rcr
58
58
  install_from_rubyforge(rubygem) || install_from_github(rubygem)
59
59
  end
60
60
 
61
- def installed?(rubygem)
62
- installed_gems.detect {|gem| gem.name == rubygem.name && gem.version == rubygem.version}
61
+ def gem_installed?(name)
62
+ installed_gems.any? { |installed| installed.name == name }
63
+ end
64
+
65
+ def gem_version_installed?(version)
66
+ return true if version.nil?
67
+ installed_gems.any? { |installed| installed.version == version }
68
+ end
69
+
70
+ def installed?(requested)
71
+ gem_installed?(requested.name) && gem_version_installed?(requested.version)
63
72
  end
64
73
 
65
74
  def installed_gems
@@ -73,6 +82,7 @@ module Rcr
73
82
  end
74
83
 
75
84
  def install_from_github(rubygem)
85
+ return unless rubygem.name.include?("-")
76
86
  cmd = "gem install #{rubygem.name} --no-ri --no-rdoc"
77
87
  cmd << " --version #{rubygem.version}" if rubygem.version
78
88
  cmd << " --source #{GITHUB}"
@@ -21,7 +21,7 @@ arrayfields (4.7.3, 4.6.0)
21
21
  authlogic
22
22
  aws-s3
23
23
  bacon
24
- bcrypt-ruby (2.0.5, 2.0.3)
24
+ bcrypt-ruby (2.0.5, 2.0.3) +ruby_186
25
25
  beanstalk-client
26
26
  bj
27
27
  bmabey-email_spec
@@ -69,7 +69,6 @@ extlib (0.9.12, 0.9.5)
69
69
  ezamar
70
70
  facets (2.5.2, 2.5.0, 2.4.5, 2.4.4, 2.4.1, 2.3.0, 2.2.1, 2.2.0, 2.1.3, 2.0.5)
71
71
  facon
72
- factory_girl
73
72
  faker
74
73
  fakeweb
75
74
  fastercsv (1.4.0, 1.2.3)
@@ -116,7 +115,7 @@ jeremymcanally-stump
116
115
  jnunemaker-twitter
117
116
  jruby-openssl +jruby
118
117
  jruby-rcov +jruby
119
- jscruggs-metric_fu (1.1.4, 1.0.2)
118
+ jscruggs-metric_fu
120
119
  json (1.1.4, 1.1.3) +ruby_186 +ruby_191
121
120
  jsonbuilder
122
121
  juggernaut
@@ -152,12 +151,12 @@ metaid (1.0)
152
151
  metric_fu
153
152
  mhennemeyer-output_catcher
154
153
  mime-types (1.16, 1.15)
155
- minitest
154
+ minitar
156
155
  mislav-hanna
157
156
  mislav-will_paginate (2.3.11, 2.3.4)
158
- mixlib-cli (1.0.4)
159
- mixlib-config (1.0.9)
160
- mixlib-log (1.0.3)
157
+ mixlib-cli
158
+ mixlib-config
159
+ mixlib-log
161
160
  mocha (0.9.5, 0.9.4, 0.9.0)
162
161
  mojombo-chronic
163
162
  mojombo-grit (1.1.1, 0.9.4)
@@ -170,7 +169,7 @@ mwmitchell-material_girl
170
169
  mysql (2.7) +ruby_186 +ruby_191
171
170
  nagoro
172
171
  net-ssh (2.0.11, 2.0.4)
173
- newgem (1.3.0, 1.2.3, 1.1.0)
172
+ newgem
174
173
  nokogiri (1.3.2)
175
174
  oauth
176
175
  obsidian
@@ -275,6 +274,7 @@ technicalpickles-jeweler
275
274
  term-ansicolor
276
275
  termios
277
276
  test-spec
277
+ test-unit (1.2.3) +ruby_191
278
278
  thin
279
279
  thinking_sphinx
280
280
  thoughtbot-clearance
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runcoderun-gem_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Sanheim
@@ -52,6 +52,7 @@ files:
52
52
  - lib/runcoderun_gems.txt
53
53
  has_rdoc: false
54
54
  homepage: http://github.com/runcoderun/gem_sync
55
+ licenses:
55
56
  post_install_message:
56
57
  rdoc_options:
57
58
  - --charset=UTF-8
@@ -72,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
73
  requirements: []
73
74
 
74
75
  rubyforge_project:
75
- rubygems_version: 1.2.0
76
+ rubygems_version: 1.3.5
76
77
  signing_key:
77
78
  specification_version: 3
78
79
  summary: gem_sync