zenflow 0.8.2 → 0.8.3
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.
- checksums.yaml +4 -4
- data/.zenflow +1 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +12 -1
- data/README.markdown +19 -13
- data/VERSION.yml +1 -1
- data/lib/zenflow/cli.rb +28 -20
- data/lib/zenflow/helpers/ask.rb +10 -0
- data/lib/zenflow/helpers/branch.rb +22 -3
- data/lib/zenflow/helpers/branch_command.rb +3 -2
- data/lib/zenflow/helpers/branch_commands/finish.rb +2 -3
- data/lib/zenflow/helpers/branch_commands/start.rb +2 -2
- data/lib/zenflow/helpers/branch_commands/update.rb +3 -3
- data/lib/zenflow/helpers/changelog.rb +1 -1
- data/lib/zenflow/helpers/github.rb +8 -6
- data/lib/zenflow/helpers/pull_request.rb +1 -1
- data/spec/fixtures/cassettes/create_bad_pull_request.yml +10 -10
- data/spec/fixtures/cassettes/create_pull_request.yml +14 -16
- data/spec/fixtures/cassettes/existing_pull_request.yml +30 -34
- data/spec/fixtures/cassettes/pull_request_by_ref.yml +30 -34
- data/spec/fixtures/cassettes/pull_request_find.yml +9 -11
- data/spec/fixtures/cassettes/pull_request_for_non-existent_ref.yml +30 -34
- data/spec/fixtures/cassettes/pull_request_list.yml +15 -17
- data/spec/fixtures/cassettes/unexisting_pull_request.yml +30 -34
- data/spec/spec_helper.rb +6 -0
- data/spec/zenflow/helpers/ask_spec.rb +4 -0
- data/spec/zenflow/helpers/branch_command_spec.rb +116 -38
- data/spec/zenflow/helpers/branch_spec.rb +40 -0
- data/spec/zenflow/helpers/changelog_spec.rb +2 -2
- data/spec/zenflow/helpers/cli_spec.rb +31 -10
- data/spec/zenflow/helpers/help_spec.rb +4 -3
- data/spec/zenflow/helpers/log_spec.rb +1 -1
- data/spec/zenflow/helpers/pull_request_spec.rb +31 -28
- metadata +3 -3
@@ -47,10 +47,42 @@ describe Zenflow::Branch do
|
|
47
47
|
|
48
48
|
describe "self.update" do
|
49
49
|
it "updates the branch" do
|
50
|
+
Zenflow::Config.should_receive(:[]).with(:merge_strategy).and_return('merge')
|
50
51
|
Zenflow.should_receive(:Log).with("Updating the master branch")
|
51
52
|
Zenflow::Shell.should_receive(:run).with("git checkout master && git pull")
|
52
53
|
Zenflow::Branch.update('master')
|
53
54
|
end
|
55
|
+
|
56
|
+
it "updates the branch using a rebase override" do
|
57
|
+
Zenflow::Config.should_receive(:[]).with(:merge_strategy).and_return('merge')
|
58
|
+
Zenflow.should_receive(:Log).with("Updating the master branch using pull with --rebase")
|
59
|
+
Zenflow::Shell.should_receive(:run).with("git checkout master && git pull --rebase")
|
60
|
+
Zenflow::Branch.update('master', true)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "self.apply_merge_strategy" do
|
65
|
+
it "merges the branch using the merge strategy" do
|
66
|
+
Zenflow::Config.should_receive(:[]).with(:merge_strategy).and_return('merge')
|
67
|
+
Zenflow::Branch.should_receive(:checkout).with("feature/testing-123")
|
68
|
+
Zenflow::Branch.should_receive(:merge).with('master')
|
69
|
+
|
70
|
+
Zenflow::Branch.apply_merge_strategy('feature', 'testing-123', 'master')
|
71
|
+
end
|
72
|
+
|
73
|
+
it "merges the branch using the rebase strategy" do
|
74
|
+
Zenflow::Config.should_receive(:[]).with(:merge_strategy).and_return('rebase')
|
75
|
+
Zenflow::Branch.should_receive(:rebase).with("feature/testing-123", 'master')
|
76
|
+
|
77
|
+
Zenflow::Branch.apply_merge_strategy('feature', 'testing-123', 'master')
|
78
|
+
end
|
79
|
+
|
80
|
+
it "optionally allows the merge strategy to be overridden by a --rebase flag when doing an update" do
|
81
|
+
Zenflow::Config.should_receive(:[]).with(:merge_strategy).and_return('merge')
|
82
|
+
Zenflow::Branch.should_receive(:rebase).with("feature/testing-123", 'master')
|
83
|
+
|
84
|
+
Zenflow::Branch.apply_merge_strategy('feature', 'testing-123', 'master', true)
|
85
|
+
end
|
54
86
|
end
|
55
87
|
|
56
88
|
describe "self.create" do
|
@@ -201,6 +233,14 @@ describe Zenflow::Branch do
|
|
201
233
|
end
|
202
234
|
end
|
203
235
|
|
236
|
+
describe "self.rebase" do
|
237
|
+
it "checks out the branch" do
|
238
|
+
Zenflow.should_receive(:Log).with("Rebasing feature/test-checkout on top of the master branch")
|
239
|
+
Zenflow::Shell.should_receive(:run).with("git rebase master feature/test-checkout")
|
240
|
+
Zenflow::Branch.rebase('feature/test-checkout', 'master')
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
204
244
|
describe "self.merge" do
|
205
245
|
it "merges in the specified branch" do
|
206
246
|
Zenflow.should_receive(:Log).with("Merging in the feature/test-merging branch")
|
@@ -67,7 +67,7 @@ describe Zenflow::Changelog do
|
|
67
67
|
file_handler.should_receive(:write).with('some other text I suppose')
|
68
68
|
File.should_receive(:open).with("CHANGELOG.md", "w").and_yield(file_handler)
|
69
69
|
Zenflow::Changelog.should_not_receive(:rotate)
|
70
|
-
Zenflow::Shell.should_receive(:run).with("git add . && git commit -a -m 'Adding line to CHANGELOG: changed the world'")
|
70
|
+
Zenflow::Shell.should_receive(:run).with("git add CHANGELOG.md && git commit -a -m 'Adding line to CHANGELOG: changed the world'")
|
71
71
|
Zenflow::Changelog.prepend_change_to_changelog('changed the world')
|
72
72
|
end
|
73
73
|
end
|
@@ -76,7 +76,7 @@ describe Zenflow::Changelog do
|
|
76
76
|
it "prepends changes to the changelog" do
|
77
77
|
File.should_receive(:open).with("CHANGELOG.md", "w")
|
78
78
|
Zenflow::Changelog.should_receive(:rotate)
|
79
|
-
Zenflow::Shell.should_receive(:run).with("git add . && git commit -a -m 'Adding line to CHANGELOG: changed the world'")
|
79
|
+
Zenflow::Shell.should_receive(:run).with("git add CHANGELOG.md && git commit -a -m 'Adding line to CHANGELOG: changed the world'")
|
80
80
|
Zenflow::Changelog.prepend_change_to_changelog('changed the world', :rotate => true)
|
81
81
|
end
|
82
82
|
end
|
@@ -102,7 +102,7 @@ describe Zenflow::CLI do
|
|
102
102
|
end
|
103
103
|
|
104
104
|
describe "#already_configured" do
|
105
|
-
let(:question) {['There is an existing config file. Overwrite it?', {:options => ["y", "N"], :default => "
|
105
|
+
let(:question) {['There is an existing config file. Overwrite it?', {:options => ["y", "N"], :default => "n"}]}
|
106
106
|
before do
|
107
107
|
Zenflow.should_receive(:Log).with('Warning', :color => :red)
|
108
108
|
end
|
@@ -133,7 +133,7 @@ describe Zenflow::CLI do
|
|
133
133
|
describe "#configure_branch" do
|
134
134
|
context "when the user wants to configure a staging branch" do
|
135
135
|
before do
|
136
|
-
Zenflow.should_receive(:Ask).with("Use a branch for staging releases and hotfixes?", :options => ["Y", "n"], :default => "
|
136
|
+
Zenflow.should_receive(:Ask).with("Use a branch for staging releases and hotfixes?", :options => ["Y", "n"], :default => "y").and_return('y')
|
137
137
|
end
|
138
138
|
|
139
139
|
it 'names the staging branch whatever the user wants' do
|
@@ -145,7 +145,7 @@ describe Zenflow::CLI do
|
|
145
145
|
|
146
146
|
context "when the user does not want to configure a staging branch" do
|
147
147
|
before do
|
148
|
-
Zenflow.should_receive(:Ask).with("Use a branch for staging releases and hotfixes?", :options => ["Y", "n"], :default => "
|
148
|
+
Zenflow.should_receive(:Ask).with("Use a branch for staging releases and hotfixes?", :options => ["Y", "n"], :default => "y").and_return('n')
|
149
149
|
end
|
150
150
|
|
151
151
|
it 'names the staging branch whatever the user wants' do
|
@@ -155,6 +155,24 @@ describe Zenflow::CLI do
|
|
155
155
|
end
|
156
156
|
end
|
157
157
|
|
158
|
+
describe "#configure_merge_strategy" do
|
159
|
+
context "when the user wants to keep the default merge strategy of 'merge'" do
|
160
|
+
it 'sets the merge strategy to merge' do
|
161
|
+
Zenflow.should_receive(:Ask).with("What merge strategy would you prefer?", :options => ["merge", "rebase"], :default => "merge").and_return('merge')
|
162
|
+
Zenflow::Config.should_receive(:[]=).with(:merge_strategy, 'merge')
|
163
|
+
subject.configure_merge_strategy
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
context "when the user wants to change the default merge strategy to 'rebase'" do
|
168
|
+
it 'sets the merge strategy to rebase' do
|
169
|
+
Zenflow.should_receive(:Ask).with("What merge strategy would you prefer?", :options => ["merge", "rebase"], :default => "merge").and_return('rebase')
|
170
|
+
Zenflow::Config.should_receive(:[]=).with(:merge_strategy, 'rebase')
|
171
|
+
subject.configure_merge_strategy
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
158
176
|
describe "#configure_project" do
|
159
177
|
it 'asks the user to name their project' do
|
160
178
|
Zenflow.should_receive(:Ask).with("What is the name of this project?", :required => true).and_return('zenflow')
|
@@ -177,7 +195,7 @@ describe Zenflow::CLI do
|
|
177
195
|
describe "#configure_remotes" do
|
178
196
|
context "when the user wants to configure a backup remote" do
|
179
197
|
before do
|
180
|
-
Zenflow.should_receive(:Ask).with("Use a backup remote?", :options => ["
|
198
|
+
Zenflow.should_receive(:Ask).with("Use a backup remote?", :options => ["y", "N"], :default => "n").and_return('y')
|
181
199
|
end
|
182
200
|
|
183
201
|
it 'configures the primary remote and a backup remote' do
|
@@ -191,7 +209,7 @@ describe Zenflow::CLI do
|
|
191
209
|
|
192
210
|
context "when the user does not want to configure a backup remote" do
|
193
211
|
before do
|
194
|
-
Zenflow.should_receive(:Ask).with("Use a backup remote?", :options => ["
|
212
|
+
Zenflow.should_receive(:Ask).with("Use a backup remote?", :options => ["y", "N"], :default => "n").and_return('n')
|
195
213
|
end
|
196
214
|
|
197
215
|
it 'configures the primary remote and a backup remote' do
|
@@ -213,7 +231,7 @@ describe Zenflow::CLI do
|
|
213
231
|
|
214
232
|
context "when the user wants to set up a changelog" do
|
215
233
|
it 'sets up the changelog' do
|
216
|
-
Zenflow.should_receive(:Ask).with("Set up a changelog?", :options => ["Y", "n"], :default => "
|
234
|
+
Zenflow.should_receive(:Ask).with("Set up a changelog?", :options => ["Y", "n"], :default => "y").and_return('y')
|
217
235
|
Zenflow::Changelog.should_receive(:create)
|
218
236
|
subject.set_up_changelog
|
219
237
|
end
|
@@ -221,7 +239,7 @@ describe Zenflow::CLI do
|
|
221
239
|
|
222
240
|
context "when the user does not want to set up a changelog" do
|
223
241
|
it 'does not set up the changelog' do
|
224
|
-
Zenflow.should_receive(:Ask).with("Set up a changelog?", :options => ["Y", "n"], :default => "
|
242
|
+
Zenflow.should_receive(:Ask).with("Set up a changelog?", :options => ["Y", "n"], :default => "y").and_return('n')
|
225
243
|
Zenflow::Changelog.should_not_receive(:create)
|
226
244
|
subject.set_up_changelog
|
227
245
|
end
|
@@ -235,7 +253,7 @@ describe Zenflow::CLI do
|
|
235
253
|
|
236
254
|
it 'does not set up the changelog' do
|
237
255
|
Zenflow.should_not_receive(:Log).with("Changelog Management")
|
238
|
-
Zenflow.should_not_receive(:Ask).with("Set up a changelog?", :options => ["Y", "n"], :default => "
|
256
|
+
Zenflow.should_not_receive(:Ask).with("Set up a changelog?", :options => ["Y", "n"], :default => "y")
|
239
257
|
Zenflow::Changelog.should_not_receive(:create)
|
240
258
|
subject.set_up_changelog
|
241
259
|
end
|
@@ -245,9 +263,9 @@ describe Zenflow::CLI do
|
|
245
263
|
describe "#confirm_some_stuff" do
|
246
264
|
it "confirms staging deployment and code review requirements" do
|
247
265
|
Zenflow.should_receive(:Log).with("Confirmations")
|
248
|
-
Zenflow.should_receive(:Ask).with("Require deployment to a staging environment?", :options => ["Y", "n"], :default => "
|
266
|
+
Zenflow.should_receive(:Ask).with("Require deployment to a staging environment?", :options => ["Y", "n"], :default => "y").and_return('y')
|
249
267
|
Zenflow::Config.should_receive(:[]=).with(:confirm_staging, true)
|
250
|
-
Zenflow.should_receive(:Ask).with("Require code reviews?", :options => ["Y", "n"], :default => "
|
268
|
+
Zenflow.should_receive(:Ask).with("Require code reviews?", :options => ["Y", "n"], :default => "y").and_return('n')
|
251
269
|
Zenflow::Config.should_receive(:[]=).with(:confirm_review, false)
|
252
270
|
subject.confirm_some_stuff
|
253
271
|
end
|
@@ -265,6 +283,7 @@ describe Zenflow::CLI do
|
|
265
283
|
subject.should_receive(:authorize_github)
|
266
284
|
subject.should_receive(:configure_project)
|
267
285
|
subject.should_receive(:configure_branches)
|
286
|
+
subject.should_receive(:configure_merge_strategy)
|
268
287
|
subject.should_receive(:configure_remotes)
|
269
288
|
subject.should_receive(:confirm_some_stuff)
|
270
289
|
subject.should_receive(:set_up_changelog)
|
@@ -285,6 +304,7 @@ describe Zenflow::CLI do
|
|
285
304
|
subject.should_receive(:authorize_github)
|
286
305
|
subject.should_receive(:configure_project)
|
287
306
|
subject.should_receive(:configure_branches)
|
307
|
+
subject.should_receive(:configure_merge_strategy)
|
288
308
|
subject.should_receive(:configure_remotes)
|
289
309
|
subject.should_receive(:confirm_some_stuff)
|
290
310
|
subject.should_receive(:set_up_changelog)
|
@@ -305,6 +325,7 @@ describe Zenflow::CLI do
|
|
305
325
|
subject.should_not_receive(:authorize_github)
|
306
326
|
subject.should_not_receive(:configure_project)
|
307
327
|
subject.should_not_receive(:configure_branches)
|
328
|
+
subject.should_not_receive(:configure_merge_strategy)
|
308
329
|
subject.should_not_receive(:configure_remotes)
|
309
330
|
subject.should_not_receive(:confirm_some_stuff)
|
310
331
|
subject.should_not_receive(:set_up_changelog)
|
@@ -13,9 +13,10 @@ describe Zenflow::Help do
|
|
13
13
|
:usage => "test-help (optional please)",
|
14
14
|
:commands => ['test-help', 'spec-help'])}
|
15
15
|
|
16
|
-
it
|
17
|
-
|
18
|
-
|
16
|
+
it{expect(subject.banner).to match(/Summary/)}
|
17
|
+
it{expect(subject.banner).to match(/Usage/)}
|
18
|
+
it{expect(subject.banner).to match(/Available Commands/)}
|
19
|
+
it{expect(subject.banner).to match(/Options/)}
|
19
20
|
|
20
21
|
context "#unknown_command" do
|
21
22
|
describe "when the command is missing" do
|
@@ -2,9 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Zenflow::PullRequest do
|
4
4
|
before(:each){
|
5
|
-
Zenflow::Github.stub(:user).and_return('github-user')
|
6
|
-
Zenflow::Github.stub(:token).and_return('github-token')
|
7
5
|
Zenflow::Github.stub(:zenflow_token).and_return('zenflow-token')
|
6
|
+
Zenflow::Github.stub(:user).and_return('github-user')
|
8
7
|
Zenflow::GithubRequest.base_uri 'https://api.github.com/repos/zencoder/zenflow-example'
|
9
8
|
}
|
10
9
|
|
@@ -63,8 +62,8 @@ describe Zenflow::PullRequest do
|
|
63
62
|
end
|
64
63
|
end
|
65
64
|
|
66
|
-
|
67
|
-
let(:
|
65
|
+
context "creating pull requests" do
|
66
|
+
let(:good_request_options) do
|
68
67
|
{
|
69
68
|
base: 'master',
|
70
69
|
head: 'feature/new-branch',
|
@@ -72,36 +71,40 @@ describe Zenflow::PullRequest do
|
|
72
71
|
body: 'making a new pull request'
|
73
72
|
}
|
74
73
|
end
|
75
|
-
it{ expect(Zenflow::PullRequest.create(request_options)).to(
|
76
|
-
be_a_kind_of(Zenflow::PullRequest)
|
77
|
-
) }
|
78
|
-
end
|
79
74
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
75
|
+
let(:bad_request_options) do
|
76
|
+
{
|
77
|
+
base: 'master',
|
78
|
+
head: 'feature/phoney',
|
79
|
+
title: 'this feature does not exist',
|
80
|
+
body: 'gonna fail'
|
81
|
+
}
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '.create', vcr: { cassette_name: "create pull request" } do
|
85
|
+
it{ expect(Zenflow::PullRequest.create(good_request_options)).to(
|
86
|
+
be_a_kind_of(Zenflow::PullRequest)
|
87
|
+
) }
|
84
88
|
end
|
85
89
|
|
86
|
-
|
87
|
-
|
88
|
-
{
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
}
|
90
|
+
describe '#valid?' do
|
91
|
+
context 'good request', vcr: { cassette_name: "create pull request" } do
|
92
|
+
let(:request){Zenflow::PullRequest.create(good_request_options)}
|
93
|
+
it{expect(request.valid?).to be_true}
|
94
|
+
end
|
95
|
+
|
96
|
+
context 'bad request', vcr: { cassette_name: "create bad pull request" } do
|
97
|
+
let(:request){Zenflow::PullRequest.create(bad_request_options)}
|
98
|
+
it{expect(request.valid?).to be_false}
|
94
99
|
end
|
95
|
-
let(:request){Zenflow::PullRequest.create()}
|
96
|
-
it{expect(request.valid?).to be_false}
|
97
100
|
end
|
98
|
-
end
|
99
101
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
102
|
+
describe '#[]' do
|
103
|
+
context 'good request', vcr: { cassette_name: "create pull request" } do
|
104
|
+
let(:request){Zenflow::PullRequest.create(good_request_options)}
|
105
|
+
it{expect(request["comments"]).to_not be_nil}
|
106
|
+
it{expect(request["fdsfa"]).to be_nil}
|
107
|
+
end
|
105
108
|
end
|
106
109
|
end
|
107
110
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zenflow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Kittelson
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-10-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: thor
|
@@ -266,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
266
266
|
version: '0'
|
267
267
|
requirements: []
|
268
268
|
rubyforge_project:
|
269
|
-
rubygems_version: 2.0.
|
269
|
+
rubygems_version: 2.0.6
|
270
270
|
signing_key:
|
271
271
|
specification_version: 4
|
272
272
|
summary: Branch management and deployment tool.
|