thegarage-gitx 2.13.1 → 2.14.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3c76b9142f428f3c146f42e9ebb4cae36f5aa3e4
4
- data.tar.gz: c1beddf110f6ef5d34179bfec65fbcf79e9bd48c
3
+ metadata.gz: 1dbfd6ee46fe1a237617f9d3b49870be833ceb3a
4
+ data.tar.gz: 70a854edc6ab9e7f53826fb499ad08226f4fa318
5
5
  SHA512:
6
- metadata.gz: 5eb433fa613fe8740d57436d16707cd6cd21929ee003916619e8edf060447fb70b7eb410927b9f2f09f791f8decc0da728da91597059f02979120ad1b7491805
7
- data.tar.gz: 689de10ba6d60de808582ab64144a573c4c760ee38614483e097f76be766f7fdb8ca9031a53d9ed157e5d1c8c43c4343e66697ccdcb6b313bd8a30503acdd49e
6
+ metadata.gz: 838035ded4221ebe0e430c31b44bef2d77798aa0ddebf7effb8ef7a45df1aa211daa35e0394a35bb0054b607b8956e033680d2e74c142bddb635159737af73bb
7
+ data.tar.gz: 2ee82330158b17347e098d3d303aa456ce8c4770707746b005cd94ab88807ccf628a4aa9660eb040cb32b0b9cc82e32003a40e3830a68bc4b540a7f12dfb1fa2
data/README.md CHANGED
@@ -26,6 +26,10 @@ update the local feature branch with latest remote changes plus upstream release
26
26
 
27
27
  integrate the current feature branch into an aggregate branch (ex: prototype, staging)
28
28
 
29
+ options:
30
+ * `--comment` or `-c` = Add a comment about the integration to an existing PR for the working branch. Create a new PR for that branch if one does not exist.
31
+ * `--resume` or `-r` = Resume integration after resolving a merge conflict on the aggregate branch.
32
+
29
33
  ## git review <feature_branch_name (optional, default: current_branch)>
30
34
 
31
35
  create a pull request on github for peer review of the current branch. This command is re-runnable
@@ -11,6 +11,7 @@ module Thegarage
11
11
  include Thegarage::Gitx::Github
12
12
  desc 'integrate', 'integrate the current branch into one of the aggregate development branches (default = staging)'
13
13
  method_option :resume, :type => :string, :aliases => '-r', :desc => 'resume merging of feature-branch'
14
+ method_option :comment, :type => :boolean, :aliases => '-c', :desc => 'add a comment to the pull request for this branch. Creates a new PR if none exists.'
14
15
  def integrate(integration_branch = 'staging')
15
16
  assert_aggregate_branch!(integration_branch)
16
17
 
@@ -26,7 +27,7 @@ module Thegarage
26
27
  integrate_branch(branch, integration_branch) unless options[:resume]
27
28
  checkout_branch branch
28
29
 
29
- create_integrate_comment(branch) unless config.reserved_branch?(branch)
30
+ create_integrate_comment(branch) if options[:comment] && !config.reserved_branch?(branch)
30
31
  end
31
32
 
32
33
  private
@@ -1,5 +1,5 @@
1
1
  module Thegarage
2
2
  module Gitx
3
- VERSION = '2.13.1'
3
+ VERSION = '2.14.0'
4
4
  end
5
5
  end
@@ -47,9 +47,8 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
47
47
  it 'defaults to staging branch' do
48
48
  should meet_expectations
49
49
  end
50
- it 'posts comment to pull request' do
51
- expect(WebMock).to have_requested(:post, "https://api.github.com/repos/thegarage/thegarage-gitx/issues/10/comments").
52
- with(body: {body: '[gitx] integrated into staging :twisted_rightwards_arrows:'})
50
+ it 'does not post comment to pull request' do
51
+ expect(WebMock).to_not have_requested(:post, "https://api.github.com/repos/thegarage/thegarage-gitx/issues/10/comments")
53
52
  end
54
53
  end
55
54
  context 'when current_branch == master' do
@@ -74,51 +73,6 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
74
73
  expect(WebMock).to_not have_requested(:post, "https://api.github.com/repos/thegarage/thegarage-gitx/pulls")
75
74
  end
76
75
  end
77
- context 'when a pull request doesnt exist for the feature-branch' do
78
- let(:authorization_token) { '123123' }
79
- let(:changelog) { '* made some fixes' }
80
- let(:new_pull_request) do
81
- {
82
- html_url: "https://path/to/html/pull/request",
83
- issue_url: "https://api/path/to/issue/url",
84
- number: 10,
85
- head: {
86
- ref: "branch_name"
87
- }
88
- }
89
- end
90
- before do
91
- allow(cli).to receive(:ask_editor).and_return('description')
92
- allow(cli).to receive(:authorization_token).and_return(authorization_token)
93
- expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update).twice
94
-
95
- expect(cli).to receive(:run_cmd).with("git fetch origin").ordered
96
- expect(cli).to receive(:run_cmd).with("git branch -D staging", allow_failure: true).ordered
97
- expect(cli).to receive(:run_cmd).with("git checkout staging").ordered
98
- expect(cli).to receive(:run_cmd).with("git merge feature-branch").ordered
99
- expect(cli).to receive(:run_cmd).with("git push origin HEAD").ordered
100
- expect(cli).to receive(:run_cmd).with("git checkout feature-branch").ordered
101
- expect(cli).to receive(:run_cmd).with('git checkout feature-branch').ordered
102
- expect(cli).to receive(:run_cmd).with("git log master...feature-branch --reverse --no-merges --pretty=format:'* %s%n%b'").and_return("2013-01-01 did some stuff").ordered
103
-
104
- stub_request(:post, 'https://api.github.com/repos/thegarage/thegarage-gitx/pulls').to_return(:status => 201, :body => new_pull_request.to_json, :headers => {'Content-Type' => 'application/json'})
105
- stub_request(:post, 'https://api.github.com/repos/thegarage/thegarage-gitx/issues/10/comments').to_return(:status => 201)
106
-
107
- VCR.use_cassette('pull_request_does_not_exist') do
108
- cli.integrate
109
- end
110
- end
111
- it 'creates github pull request' do
112
- should meet_expectations
113
- end
114
- it 'creates github comment for integration' do
115
- expect(WebMock).to have_requested(:post, "https://api.github.com/repos/thegarage/thegarage-gitx/issues/10/comments").
116
- with(body: {body: '[gitx] integrated into staging :twisted_rightwards_arrows:'})
117
- end
118
- it 'runs expected commands' do
119
- should meet_expectations
120
- end
121
- end
122
76
  context 'when staging branch does not exist remotely' do
123
77
  let(:authorization_token) { '123123' }
124
78
  let(:remote_branch_names) { [] }
@@ -146,9 +100,6 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
146
100
  it 'creates remote aggregate branch' do
147
101
  should meet_expectations
148
102
  end
149
- it 'posts comment to pull request' do
150
- expect(WebMock).to have_requested(:post, "https://api.github.com/repos/thegarage/thegarage-gitx/issues/10/comments")
151
- end
152
103
  end
153
104
  context 'when integration branch == prototype and remote branch exists' do
154
105
  let(:authorization_token) { '123123' }
@@ -173,9 +124,6 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
173
124
  it 'runs expected commands' do
174
125
  should meet_expectations
175
126
  end
176
- it 'posts comment to pull request' do
177
- expect(WebMock).to have_requested(:post, "https://api.github.com/repos/thegarage/thegarage-gitx/issues/10/comments")
178
- end
179
127
  end
180
128
  context 'when integration branch is not an aggregate branch' do
181
129
  it 'raises an error' do
@@ -235,9 +183,6 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
235
183
  it 'does not delete local staging branch' do
236
184
  should meet_expectations
237
185
  end
238
- it 'posts comment to pull request' do
239
- expect(WebMock).to have_requested(:post, "https://api.github.com/repos/thegarage/thegarage-gitx/issues/10/comments")
240
- end
241
186
  end
242
187
  context 'with --resume "feature-branch" flag when feature-branch does not exist' do
243
188
  let(:options) do
@@ -264,8 +209,81 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
264
209
  it 'asks user for feature-branch name' do
265
210
  should meet_expectations
266
211
  end
212
+ end
213
+ context 'for default integration (to staging) with --comment flag' do
214
+ let(:options) do
215
+ { comment: true }
216
+ end
217
+ let(:authorization_token) { '123123' }
218
+ let(:remote_branch_names) { ['origin/staging'] }
219
+ before do
220
+ allow(cli).to receive(:authorization_token).and_return(authorization_token)
221
+ expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update)
222
+
223
+ expect(cli).to receive(:run_cmd).with("git fetch origin").ordered
224
+ expect(cli).to receive(:run_cmd).with("git branch -D staging", allow_failure: true).ordered
225
+ expect(cli).to receive(:run_cmd).with("git checkout staging").ordered
226
+ expect(cli).to receive(:run_cmd).with("git merge feature-branch").ordered
227
+ expect(cli).to receive(:run_cmd).with("git push origin HEAD").ordered
228
+ expect(cli).to receive(:run_cmd).with("git checkout feature-branch").ordered
229
+
230
+ stub_request(:post, /.*api.github.com.*/).to_return(:status => 201)
231
+
232
+ VCR.use_cassette('pull_request_does_exist_with_success_status') do
233
+ cli.integrate
234
+ end
235
+ end
236
+ it 'defaults to staging branch' do
237
+ should meet_expectations
238
+ end
267
239
  it 'posts comment to pull request' do
268
- expect(WebMock).to have_requested(:post, "https://api.github.com/repos/thegarage/thegarage-gitx/issues/10/comments")
240
+ expect(WebMock).to have_requested(:post, "https://api.github.com/repos/thegarage/thegarage-gitx/issues/10/comments").
241
+ with(body: {body: '[gitx] integrated into staging :twisted_rightwards_arrows:'})
242
+ end
243
+ end
244
+ context 'with --comment flag when a pull request doesn\'t exist for the feature-branch' do
245
+ let(:options) do
246
+ { comment: true }
247
+ end
248
+ let(:authorization_token) { '123123' }
249
+ let(:changelog) { '* made some fixes' }
250
+ let(:new_pull_request) do
251
+ {
252
+ html_url: "https://path/to/html/pull/request",
253
+ issue_url: "https://api/path/to/issue/url",
254
+ number: 10,
255
+ head: {
256
+ ref: "branch_name"
257
+ }
258
+ }
259
+ end
260
+ before do
261
+ allow(cli).to receive(:ask_editor).and_return('description')
262
+ allow(cli).to receive(:authorization_token).and_return(authorization_token)
263
+ expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update).twice
264
+
265
+ expect(cli).to receive(:run_cmd).with("git fetch origin").ordered
266
+ expect(cli).to receive(:run_cmd).with("git branch -D staging", allow_failure: true).ordered
267
+ expect(cli).to receive(:run_cmd).with("git checkout staging").ordered
268
+ expect(cli).to receive(:run_cmd).with("git merge feature-branch").ordered
269
+ expect(cli).to receive(:run_cmd).with("git push origin HEAD").ordered
270
+ expect(cli).to receive(:run_cmd).with("git checkout feature-branch").ordered
271
+ expect(cli).to receive(:run_cmd).with('git checkout feature-branch').ordered
272
+ expect(cli).to receive(:run_cmd).with("git log master...feature-branch --reverse --no-merges --pretty=format:'* %s%n%b'").and_return("2013-01-01 did some stuff").ordered
273
+
274
+ stub_request(:post, 'https://api.github.com/repos/thegarage/thegarage-gitx/pulls').to_return(:status => 201, :body => new_pull_request.to_json, :headers => {'Content-Type' => 'application/json'})
275
+ stub_request(:post, 'https://api.github.com/repos/thegarage/thegarage-gitx/issues/10/comments').to_return(:status => 201)
276
+
277
+ VCR.use_cassette('pull_request_does_not_exist') do
278
+ cli.integrate
279
+ end
280
+ end
281
+ it 'creates github pull request' do
282
+ should meet_expectations
283
+ end
284
+ it 'creates github comment for integration' do
285
+ expect(WebMock).to have_requested(:post, "https://api.github.com/repos/thegarage/thegarage-gitx/issues/10/comments").
286
+ with(body: {body: '[gitx] integrated into staging :twisted_rightwards_arrows:'})
269
287
  end
270
288
  end
271
289
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thegarage-gitx
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.13.1
4
+ version: 2.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Sonnek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-10 00:00:00.000000000 Z
11
+ date: 2015-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rugged