kumade 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kumade, ".configuration" do
4
+ it "returns a Kumade::Configuration instance" do
5
+ Kumade.configuration.should be_a Kumade::Configuration
6
+ end
7
+
8
+ it "caches the configuration" do
9
+ Kumade.configuration.should eq Kumade.configuration
10
+ end
11
+ end
12
+
13
+ describe Kumade, ".configuration=" do
14
+ it "sets Kumade.configuration" do
15
+ Kumade.configuration = "new-value"
16
+ Kumade.configuration.should == "new-value"
17
+ end
18
+ end
@@ -1,8 +1,12 @@
1
1
  require 'rspec'
2
+ require 'aruba/api'
3
+ require 'bourne'
4
+
2
5
  require 'kumade'
6
+
7
+ # Since we autoload, these aren't require'd when we require kumade.
3
8
  require 'rake'
4
- require 'stringio'
5
- require 'aruba/api'
9
+ require 'cocaine'
6
10
 
7
11
  module GitRemoteHelpers
8
12
  def force_add_heroku_remote(remote_name)
@@ -15,8 +19,16 @@ module GitRemoteHelpers
15
19
  end
16
20
  end
17
21
 
22
+
23
+ spec_dir = Pathname.new(File.expand_path(File.dirname(__FILE__)))
24
+ Dir[spec_dir.join('support', '**')].each {|f| require File.expand_path(f) }
25
+
18
26
  RSpec.configure do |config|
19
- config.include RSpec::Mocks::Methods
27
+ config.mock_with :mocha
28
+ config.color_enabled = true
29
+
30
+ config.include Rake::DSL if defined?(Rake::DSL)
31
+
20
32
  config.include GitRemoteHelpers
21
33
  config.include Aruba::Api
22
34
 
@@ -31,4 +43,8 @@ RSpec.configure do |config|
31
43
  example.run
32
44
  end
33
45
  end
46
+
47
+ config.after do
48
+ Kumade.configuration = Kumade::Configuration.new
49
+ end
34
50
  end
@@ -0,0 +1,33 @@
1
+ shared_context "when on Cedar" do
2
+ let(:command_line) { mock("Cocaine::CommandLine") }
3
+
4
+ before do
5
+ Cocaine::CommandLine.expects(:new).
6
+ with("bundle exec heroku stack --remote staging").
7
+ returns(command_line)
8
+
9
+ command_line.expects(:run).returns(%{
10
+ aspen-mri-1.8.6
11
+ bamboo-mri-1.9.2
12
+ bamboo-ree-1.8.7
13
+ * cedar (beta)
14
+ })
15
+ end
16
+ end
17
+
18
+ shared_context "when not on Cedar" do
19
+ let(:command_line) { mock("Cocaine::CommandLine") }
20
+
21
+ before do
22
+ Cocaine::CommandLine.expects(:new).
23
+ with("bundle exec heroku stack --remote staging").
24
+ returns(command_line)
25
+
26
+ command_line.expects(:run).returns(%{
27
+ aspen-mri-1.8.6
28
+ * bamboo-mri-1.9.2
29
+ bamboo-ree-1.8.7
30
+ cedar (beta)
31
+ })
32
+ end
33
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kumade
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-09-07 00:00:00.000000000Z
13
+ date: 2011-09-14 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: heroku
17
- requirement: &70363385430900 !ruby/object:Gem::Requirement
17
+ requirement: &2154315660 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '2.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70363385430900
25
+ version_requirements: *2154315660
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: thor
28
- requirement: &70363385430400 !ruby/object:Gem::Requirement
28
+ requirement: &2154315160 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0.14'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70363385430400
36
+ version_requirements: *2154315160
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rake
39
- requirement: &70363385429940 !ruby/object:Gem::Requirement
39
+ requirement: &2154314700 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,21 @@ dependencies:
44
44
  version: 0.8.7
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *70363385429940
47
+ version_requirements: *2154314700
48
+ - !ruby/object:Gem::Dependency
49
+ name: cocaine
50
+ requirement: &2154314240 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: 0.2.0
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *2154314240
48
59
  - !ruby/object:Gem::Dependency
49
60
  name: rake
50
- requirement: &70363380426460 !ruby/object:Gem::Requirement
61
+ requirement: &2154313780 !ruby/object:Gem::Requirement
51
62
  none: false
52
63
  requirements:
53
64
  - - ! '>='
@@ -55,10 +66,10 @@ dependencies:
55
66
  version: 0.8.7
56
67
  type: :development
57
68
  prerelease: false
58
- version_requirements: *70363380426460
69
+ version_requirements: *2154313780
59
70
  - !ruby/object:Gem::Dependency
60
71
  name: rspec
61
- requirement: &70363380426000 !ruby/object:Gem::Requirement
72
+ requirement: &2154313320 !ruby/object:Gem::Requirement
62
73
  none: false
63
74
  requirements:
64
75
  - - ~>
@@ -66,10 +77,10 @@ dependencies:
66
77
  version: 2.6.0
67
78
  type: :development
68
79
  prerelease: false
69
- version_requirements: *70363380426000
80
+ version_requirements: *2154313320
70
81
  - !ruby/object:Gem::Dependency
71
82
  name: cucumber
72
- requirement: &70363380425540 !ruby/object:Gem::Requirement
83
+ requirement: &2154312860 !ruby/object:Gem::Requirement
73
84
  none: false
74
85
  requirements:
75
86
  - - ~>
@@ -77,10 +88,10 @@ dependencies:
77
88
  version: 1.0.2
78
89
  type: :development
79
90
  prerelease: false
80
- version_requirements: *70363380425540
91
+ version_requirements: *2154312860
81
92
  - !ruby/object:Gem::Dependency
82
93
  name: aruba
83
- requirement: &70363380425080 !ruby/object:Gem::Requirement
94
+ requirement: &2159228600 !ruby/object:Gem::Requirement
84
95
  none: false
85
96
  requirements:
86
97
  - - ~>
@@ -88,10 +99,10 @@ dependencies:
88
99
  version: 0.4.3
89
100
  type: :development
90
101
  prerelease: false
91
- version_requirements: *70363380425080
102
+ version_requirements: *2159228600
92
103
  - !ruby/object:Gem::Dependency
93
104
  name: jammit
94
- requirement: &70363380424620 !ruby/object:Gem::Requirement
105
+ requirement: &2159228140 !ruby/object:Gem::Requirement
95
106
  none: false
96
107
  requirements:
97
108
  - - ~>
@@ -99,7 +110,18 @@ dependencies:
99
110
  version: 0.6.3
100
111
  type: :development
101
112
  prerelease: false
102
- version_requirements: *70363380424620
113
+ version_requirements: *2159228140
114
+ - !ruby/object:Gem::Dependency
115
+ name: bourne
116
+ requirement: &2159227760 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: *2159227760
103
125
  description: A well-tested script for easy deploying to Heroku
104
126
  email:
105
127
  - gabe@thoughtbot.com
@@ -126,18 +148,26 @@ files:
126
148
  - kumade.gemspec
127
149
  - lib/kumade.rb
128
150
  - lib/kumade/base.rb
151
+ - lib/kumade/cli.rb
152
+ - lib/kumade/configuration.rb
129
153
  - lib/kumade/deployer.rb
130
154
  - lib/kumade/deployment_error.rb
131
155
  - lib/kumade/git.rb
156
+ - lib/kumade/heroku.rb
157
+ - lib/kumade/packager.rb
132
158
  - lib/kumade/railtie.rb
133
- - lib/kumade/runner.rb
134
159
  - lib/kumade/version.rb
135
160
  - lib/tasks/deploy.rake
136
161
  - spec/kumade/base_spec.rb
162
+ - spec/kumade/cli_spec.rb
163
+ - spec/kumade/configuration_spec.rb
137
164
  - spec/kumade/deployer_spec.rb
138
165
  - spec/kumade/git_spec.rb
139
- - spec/kumade/runner_spec.rb
166
+ - spec/kumade/heroku_spec.rb
167
+ - spec/kumade/packager_spec.rb
168
+ - spec/kumade_spec.rb
140
169
  - spec/spec_helper.rb
170
+ - spec/support/heroku.rb
141
171
  homepage: http://thoughtbot.com/community/
142
172
  licenses: []
143
173
  post_install_message:
@@ -150,15 +180,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
180
  - - ! '>='
151
181
  - !ruby/object:Gem::Version
152
182
  version: '0'
183
+ segments:
184
+ - 0
185
+ hash: -777649075615778830
153
186
  required_rubygems_version: !ruby/object:Gem::Requirement
154
187
  none: false
155
188
  requirements:
156
189
  - - ! '>='
157
190
  - !ruby/object:Gem::Version
158
191
  version: '0'
192
+ segments:
193
+ - 0
194
+ hash: -777649075615778830
159
195
  requirements: []
160
196
  rubyforge_project:
161
- rubygems_version: 1.8.6
197
+ rubygems_version: 1.8.8
162
198
  signing_key:
163
199
  specification_version: 3
164
200
  summary: A well-tested script for easy deploying to Heroku
@@ -171,7 +207,12 @@ test_files:
171
207
  - features/step_definitions/kumade_steps.rb
172
208
  - features/support/env.rb
173
209
  - spec/kumade/base_spec.rb
210
+ - spec/kumade/cli_spec.rb
211
+ - spec/kumade/configuration_spec.rb
174
212
  - spec/kumade/deployer_spec.rb
175
213
  - spec/kumade/git_spec.rb
176
- - spec/kumade/runner_spec.rb
214
+ - spec/kumade/heroku_spec.rb
215
+ - spec/kumade/packager_spec.rb
216
+ - spec/kumade_spec.rb
177
217
  - spec/spec_helper.rb
218
+ - spec/support/heroku.rb
@@ -1,70 +0,0 @@
1
- require 'optparse'
2
-
3
- module Kumade
4
- class Runner
5
- class << self
6
- attr_reader :environment
7
- end
8
-
9
- def self.run(args=ARGV, out=StringIO.new)
10
- @out = out
11
- @options = parse_arguments!(args)
12
- @environment = args.shift || 'staging'
13
-
14
- swapping_stdout_for(@out) do
15
- deploy
16
- end
17
- end
18
-
19
- def self.deploy
20
- if pretending?
21
- puts "==> In Pretend Mode"
22
- end
23
- puts "==> Deploying to: #{environment}"
24
- Deployer.new(environment, pretending?).deploy
25
- puts "==> Deployed to: #{environment}"
26
- end
27
-
28
- def self.parse_arguments!(args)
29
- options = {}
30
- OptionParser.new do |opts|
31
- opts.banner = "Usage: kumade <environment> [options]"
32
-
33
- opts.on("-p", "--pretend", "Pretend mode: print what kumade would do") do |p|
34
- options[:pretend] = p
35
- end
36
-
37
- opts.on_tail('-v', '--version', 'Show version') do
38
- puts "kumade #{Kumade::VERSION}"
39
- exit
40
- end
41
-
42
- opts.on_tail('-h', '--help', 'Show this message') do
43
- puts opts
44
- exit
45
- end
46
- end.parse!(args)
47
-
48
- options
49
- end
50
-
51
- def self.swapping_stdout_for(io)
52
- begin
53
- $real_stdout = $stdout
54
- $stdout = io unless pretending?
55
- yield
56
- rescue Kumade::DeploymentError
57
- unless pretending?
58
- io.rewind
59
- $real_stdout.print(io.read)
60
- end
61
- ensure
62
- $stdout = $real_stdout
63
- end
64
- end
65
-
66
- def self.pretending?
67
- @options[:pretend]
68
- end
69
- end
70
- end
@@ -1,66 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Kumade::Runner do
4
- subject { Kumade::Runner }
5
- let(:out){ StringIO.new }
6
- let(:environment){ 'my-environment' }
7
-
8
- %w(-p --pretend).each do |pretend_arg|
9
- it "sets pretend mode when run with #{pretend_arg}" do
10
- subject.stub(:deploy)
11
-
12
- subject.run([environment, pretend_arg], out)
13
- subject.pretending?.should be_true
14
- end
15
- end
16
-
17
- it "defaults to staging" do
18
- subject.stub(:deploy)
19
- subject.run([], out)
20
- subject.environment.should == 'staging'
21
- end
22
-
23
- it "deploys" do
24
- Kumade::Deployer.any_instance.should_receive(:deploy)
25
-
26
- subject.run([environment], out)
27
- end
28
-
29
- end
30
-
31
- describe Kumade::Runner do
32
- it 'does not let anything get printed' do
33
- stdout = $stdout
34
- stdout.should_not_receive(:print)
35
- output = StringIO.new
36
-
37
- Kumade::Runner.swapping_stdout_for(output) do
38
- $stdout.puts "Hello, you can't see me."
39
- end
40
-
41
- output.rewind
42
- output.read.should == "Hello, you can't see me.\n"
43
- end
44
-
45
- it 'dumps the output stash to real stdout when an error happens' do
46
- stdout = $stdout
47
- stdout.should_receive(:print)
48
- output = StringIO.new
49
-
50
- Kumade::Runner.swapping_stdout_for(output) do
51
- $stdout.puts "Hello, you can see me!"
52
- raise Kumade::DeploymentError.new("error")
53
- end
54
- end
55
-
56
- it 'prints everything in pretend mode' do
57
- stdout = $stdout
58
- stdout.should_receive(:puts)
59
- output = StringIO.new
60
- Kumade::Runner.should_receive(:pretending?).and_return(true)
61
-
62
- Kumade::Runner.swapping_stdout_for(output) do
63
- $stdout.puts "Hello, you can see me!"
64
- end
65
- end
66
- end