thegarage-gitx 2.13.1 → 2.14.0

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 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