thegarage-gitx 2.6.0 → 2.7.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: a1472845b75ae2e8f0c0a41c0ff1d19eda8813af
4
- data.tar.gz: bbd73d4d28d3d416c3ede2ab3b4334feaae97030
3
+ metadata.gz: 0c816348d551adad9dafcf7efb19f3430707347d
4
+ data.tar.gz: e99bc201fb96d47977ab8f105a234e0c47549f93
5
5
  SHA512:
6
- metadata.gz: cc00306173a80368159b1a29cd92ce1b14f00fb11b8f6cae0c08bdda557bb4e1749610bec58f22db924c39f27d4b433788ff902772a14202007ecd2d29785492
7
- data.tar.gz: e9b309a00bae2aef338e1fc05af23618f2be9553cd850252c04b3456f0a8e4664fbe536970c05a0819b3d8b2ee12aa8f2f598fa778bb0e05408d768535eb13c3
6
+ metadata.gz: 0c412f5989ed6aba0ffb0485d655af476967c0631c35ffa39ff874f24b6826cdff9db8a94bbc7676f33339583334032e72f33341ac8fb94d485b7ed32b9e3504
7
+ data.tar.gz: 74f411acf2307fa4470478400f244db2ef27afbbe22dccc8055350b5e5791494b866bd3ccb98cf86c673c61f4410312a47441c88066781e17a5642e509f1ba4a
@@ -2,7 +2,7 @@ require 'thor'
2
2
  require 'thegarage/gitx'
3
3
  require 'thegarage/gitx/cli/base_command'
4
4
  require 'thegarage/gitx/cli/update_command'
5
- require 'thegarage/gitx/cli/github'
5
+ require 'thegarage/gitx/github'
6
6
 
7
7
  module Thegarage
8
8
  module Gitx
@@ -4,11 +4,14 @@ require 'thegarage/gitx/cli/base_command'
4
4
  require 'thegarage/gitx/cli/update_command'
5
5
  require 'thegarage/gitx/cli/integrate_command'
6
6
  require 'thegarage/gitx/cli/cleanup_command'
7
+ require 'thegarage/gitx/github'
7
8
 
8
9
  module Thegarage
9
10
  module Gitx
10
11
  module Cli
11
12
  class ReleaseCommand < BaseCommand
13
+ include Github
14
+
12
15
  desc 'release', 'release the current branch to production'
13
16
  def release
14
17
  return unless yes?("Release #{current_branch.name} to production? (y/n)", :green)
@@ -17,6 +20,8 @@ module Thegarage
17
20
  assert_not_protected_branch!(branch, 'release')
18
21
  UpdateCommand.new.update
19
22
 
23
+ find_or_create_pull_request(branch)
24
+
20
25
  checkout_branch Thegarage::Gitx::BASE_BRANCH
21
26
  run_cmd "git pull origin #{Thegarage::Gitx::BASE_BRANCH}"
22
27
  run_cmd "git merge --no-ff #{branch}"
@@ -2,7 +2,7 @@ require 'thor'
2
2
  require 'thegarage/gitx'
3
3
  require 'thegarage/gitx/cli/base_command'
4
4
  require 'thegarage/gitx/cli/update_command'
5
- require 'thegarage/gitx/cli/github'
5
+ require 'thegarage/gitx/github'
6
6
 
7
7
  module Thegarage
8
8
  module Gitx
File without changes
@@ -1,5 +1,5 @@
1
1
  module Thegarage
2
2
  module Gitx
3
- VERSION = '2.6.0'
3
+ VERSION = '2.7.0'
4
4
  end
5
5
  end
@@ -28,10 +28,11 @@ describe Thegarage::Gitx::Cli::ReleaseCommand do
28
28
  should meet_expectations
29
29
  end
30
30
  end
31
- context 'when user confirms release' do
31
+ context 'when user confirms release and pull request exists' do
32
32
  let(:fake_update_command) { double('fake update command', update: nil) }
33
33
  let(:fake_integrate_command) { double('fake integrate command') }
34
34
  let(:fake_cleanup_command) { double('fake cleanup command', cleanup: nil) }
35
+ let(:authorization_token) { '123123' }
35
36
  before do
36
37
  expect(Thegarage::Gitx::Cli::UpdateCommand).to receive(:new).and_return(fake_update_command)
37
38
  expect(Thegarage::Gitx::Cli::IntegrateCommand).to receive(:new).and_return(fake_integrate_command)
@@ -40,13 +41,62 @@ describe Thegarage::Gitx::Cli::ReleaseCommand do
40
41
  expect(fake_integrate_command).to receive(:integrate).with('staging')
41
42
 
42
43
  expect(cli).to receive(:yes?).and_return(true)
44
+ allow(cli).to receive(:authorization_token).and_return(authorization_token)
43
45
 
44
46
  expect(cli).to receive(:run_cmd).with("git checkout master").ordered
45
47
  expect(cli).to receive(:run_cmd).with("git pull origin master").ordered
46
48
  expect(cli).to receive(:run_cmd).with("git merge --no-ff feature-branch").ordered
47
49
  expect(cli).to receive(:run_cmd).with("git push origin HEAD").ordered
48
50
 
49
- cli.release
51
+ VCR.use_cassette('pull_request_does_exist') do
52
+ cli.release
53
+ end
54
+ end
55
+ it 'runs expected commands' do
56
+ should meet_expectations
57
+ end
58
+ end
59
+ context 'when user confirms release and pull request does not exist' do
60
+ let(:authorization_token) { '123123' }
61
+ let(:fake_update_command) { double('fake update command', update: nil) }
62
+ let(:fake_integrate_command) { double('fake integrate command') }
63
+ let(:fake_cleanup_command) { double('fake cleanup command', cleanup: nil) }
64
+ let(:new_pull_request) do
65
+ {
66
+ html_url: "https://path/to/html/pull/request",
67
+ issue_url: "https://api/path/to/issue/url",
68
+ number: 10,
69
+ head: {
70
+ ref: "branch_name"
71
+ }
72
+ }
73
+ end
74
+ before do
75
+ allow(cli).to receive(:authorization_token).and_return(authorization_token)
76
+ allow(cli).to receive(:ask_editor).and_return('description')
77
+
78
+ expect(Thegarage::Gitx::Cli::UpdateCommand).to receive(:new).and_return(fake_update_command).twice
79
+ expect(Thegarage::Gitx::Cli::IntegrateCommand).to receive(:new).and_return(fake_integrate_command)
80
+ expect(Thegarage::Gitx::Cli::CleanupCommand).to receive(:new).and_return(fake_cleanup_command)
81
+
82
+ expect(fake_update_command).to receive(:update).twice
83
+ expect(fake_integrate_command).to receive(:integrate).with('staging')
84
+
85
+ expect(cli).to receive(:yes?).and_return(true)
86
+
87
+ expect(cli).to receive(:run_cmd).with("git log master...feature-branch --no-merges --pretty=format:'* %s%n%b'").and_return("2013-01-01 did some stuff").ordered
88
+ expect(cli).to receive(:run_cmd).with("git checkout master").ordered
89
+ expect(cli).to receive(:run_cmd).with("git pull origin master").ordered
90
+ expect(cli).to receive(:run_cmd).with("git merge --no-ff feature-branch").ordered
91
+ expect(cli).to receive(:run_cmd).with("git push origin HEAD").ordered
92
+
93
+ 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'})
94
+ VCR.use_cassette('pull_request_does_not_exist') do
95
+ cli.release
96
+ end
97
+ end
98
+ it 'creates pull request on github' do
99
+ should meet_expectations
50
100
  end
51
101
  it 'runs expected commands' do
52
102
  should meet_expectations
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thegarage-gitx
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Sonnek
@@ -263,7 +263,6 @@ files:
263
263
  - lib/thegarage/gitx/cli/base_command.rb
264
264
  - lib/thegarage/gitx/cli/buildtag_command.rb
265
265
  - lib/thegarage/gitx/cli/cleanup_command.rb
266
- - lib/thegarage/gitx/cli/github.rb
267
266
  - lib/thegarage/gitx/cli/integrate_command.rb
268
267
  - lib/thegarage/gitx/cli/nuke_command.rb
269
268
  - lib/thegarage/gitx/cli/release_command.rb
@@ -274,6 +273,7 @@ files:
274
273
  - lib/thegarage/gitx/cli/update_command.rb
275
274
  - lib/thegarage/gitx/extensions/string.rb
276
275
  - lib/thegarage/gitx/extensions/thor.rb
276
+ - lib/thegarage/gitx/github.rb
277
277
  - lib/thegarage/gitx/version.rb
278
278
  - spec/fixtures/vcr_cassettes/pull_request_does_exist.yml
279
279
  - spec/fixtures/vcr_cassettes/pull_request_does_not_exist.yml