thegarage-gitx 2.7.1 → 2.7.2
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/lib/thegarage/gitx/cli/base_command.rb +5 -0
- data/lib/thegarage/gitx/cli/integrate_command.rb +1 -1
- data/lib/thegarage/gitx/cli/release_command.rb +3 -3
- data/lib/thegarage/gitx/github.rb +2 -2
- data/lib/thegarage/gitx/version.rb +1 -1
- data/spec/thegarage/gitx/cli/integrate_command_spec.rb +11 -15
- data/spec/thegarage/gitx/cli/release_command_spec.rb +7 -18
- data/spec/thegarage/gitx/cli/review_command_spec.rb +2 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5947843d44e97022ee2483913d68e814ce12b4cb
|
|
4
|
+
data.tar.gz: ea8962e5e6aba024574764fd06c97d7f3da4721d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 35b2bb78ba36e778d3826f642b466a218803420e44b531fac54ded8df46d3fe10a6286dafee64d6b57927c851d4ea44da89129ca39890133f10efd25324e10f9
|
|
7
|
+
data.tar.gz: 7a80b185ddb4d4abaab5f5f655f67d2b14860afbcad068a9e5f1a0d233877f80fcc4e9203f193ebd21dcd13a6fb9e3f538159487a068c1338dacd7fe5a954d47
|
|
@@ -45,6 +45,11 @@ module Thegarage
|
|
|
45
45
|
def assert_not_protected_branch!(branch, action)
|
|
46
46
|
raise "Cannot #{action} reserved branch" if RESERVED_BRANCHES.include?(branch) || aggregate_branch?(branch)
|
|
47
47
|
end
|
|
48
|
+
|
|
49
|
+
# helper to invoke other CLI commands
|
|
50
|
+
def execute_command(command_class, method, args = [])
|
|
51
|
+
command_class.new.send(method, *args)
|
|
52
|
+
end
|
|
48
53
|
end
|
|
49
54
|
end
|
|
50
55
|
end
|
|
@@ -18,7 +18,7 @@ module Thegarage
|
|
|
18
18
|
print_message(branch, integration_branch)
|
|
19
19
|
|
|
20
20
|
begin
|
|
21
|
-
UpdateCommand
|
|
21
|
+
execute_command(UpdateCommand, :update)
|
|
22
22
|
rescue
|
|
23
23
|
fail MergeError, "Merge Conflict Occurred. Please Merge Conflict Occurred. Please fix merge conflict and rerun the integrate command"
|
|
24
24
|
end
|
|
@@ -18,7 +18,7 @@ module Thegarage
|
|
|
18
18
|
|
|
19
19
|
branch = current_branch.name
|
|
20
20
|
assert_not_protected_branch!(branch, 'release')
|
|
21
|
-
UpdateCommand
|
|
21
|
+
execute_command(UpdateCommand, :update)
|
|
22
22
|
|
|
23
23
|
find_or_create_pull_request(branch)
|
|
24
24
|
|
|
@@ -27,8 +27,8 @@ module Thegarage
|
|
|
27
27
|
run_cmd "git merge --no-ff #{branch}"
|
|
28
28
|
run_cmd "git push origin HEAD"
|
|
29
29
|
|
|
30
|
-
IntegrateCommand
|
|
31
|
-
CleanupCommand
|
|
30
|
+
execute_command(IntegrateCommand, :integrate, 'staging')
|
|
31
|
+
execute_command(CleanupCommand, :cleanup)
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
end
|
|
@@ -17,7 +17,7 @@ module Thegarage
|
|
|
17
17
|
def find_or_create_pull_request(branch)
|
|
18
18
|
pull_request = find_pull_request(branch)
|
|
19
19
|
pull_request ||= begin
|
|
20
|
-
UpdateCommand
|
|
20
|
+
execute_command(UpdateCommand, :update)
|
|
21
21
|
pull_request = create_pull_request(branch)
|
|
22
22
|
say 'Created pull request: '
|
|
23
23
|
say pull_request.html_url, :green
|
|
@@ -54,7 +54,7 @@ module Thegarage
|
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
def pull_request_body(branch)
|
|
57
|
-
changelog = run_cmd
|
|
57
|
+
changelog = run_cmd("git log #{Thegarage::Gitx::BASE_BRANCH}...#{branch} --reverse --no-merges --pretty=format:'* %s%n%b'")
|
|
58
58
|
description = options[:description]
|
|
59
59
|
|
|
60
60
|
description_template = []
|
|
@@ -24,16 +24,12 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
describe '#integrate' do
|
|
27
|
-
let(:fake_update_command) { double('fake update command') }
|
|
28
|
-
before do
|
|
29
|
-
allow(Thegarage::Gitx::Cli::UpdateCommand).to receive(:new).and_return(fake_update_command)
|
|
30
|
-
end
|
|
31
27
|
context 'when integration branch is ommitted and remote branch exists' do
|
|
32
28
|
let(:authorization_token) { '123123' }
|
|
33
29
|
let(:remote_branch_names) { ['origin/staging'] }
|
|
34
30
|
before do
|
|
35
31
|
allow(cli).to receive(:authorization_token).and_return(authorization_token)
|
|
36
|
-
expect(
|
|
32
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update)
|
|
37
33
|
|
|
38
34
|
expect(cli).to receive(:run_cmd).with("git fetch origin").ordered
|
|
39
35
|
expect(cli).to receive(:run_cmd).with("git branch -D staging", allow_failure: true).ordered
|
|
@@ -63,7 +59,7 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
|
|
|
63
59
|
let(:remote_branch_names) { ['origin/staging'] }
|
|
64
60
|
before do
|
|
65
61
|
allow(cli).to receive(:authorization_token).and_return(authorization_token)
|
|
66
|
-
expect(
|
|
62
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update)
|
|
67
63
|
|
|
68
64
|
expect(cli).to receive(:run_cmd).with("git fetch origin").ordered
|
|
69
65
|
expect(cli).to receive(:run_cmd).with("git branch -D staging", allow_failure: true).ordered
|
|
@@ -94,7 +90,7 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
|
|
|
94
90
|
before do
|
|
95
91
|
allow(cli).to receive(:ask_editor).and_return('description')
|
|
96
92
|
allow(cli).to receive(:authorization_token).and_return(authorization_token)
|
|
97
|
-
expect(
|
|
93
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update).twice
|
|
98
94
|
|
|
99
95
|
expect(cli).to receive(:run_cmd).with("git fetch origin").ordered
|
|
100
96
|
expect(cli).to receive(:run_cmd).with("git branch -D staging", allow_failure: true).ordered
|
|
@@ -103,7 +99,7 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
|
|
|
103
99
|
expect(cli).to receive(:run_cmd).with("git push origin HEAD").ordered
|
|
104
100
|
expect(cli).to receive(:run_cmd).with("git checkout feature-branch").ordered
|
|
105
101
|
|
|
106
|
-
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
|
|
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
|
|
107
103
|
|
|
108
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'})
|
|
109
105
|
stub_request(:post, 'https://api.github.com/repos/thegarage/thegarage-gitx/issues/10/comments').to_return(:status => 201)
|
|
@@ -128,7 +124,7 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
|
|
|
128
124
|
let(:remote_branch_names) { [] }
|
|
129
125
|
before do
|
|
130
126
|
allow(cli).to receive(:authorization_token).and_return(authorization_token)
|
|
131
|
-
expect(
|
|
127
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update)
|
|
132
128
|
|
|
133
129
|
expect(repo).to receive(:create_branch).with('staging', 'master')
|
|
134
130
|
|
|
@@ -159,7 +155,7 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
|
|
|
159
155
|
let(:remote_branch_names) { ['origin/prototype'] }
|
|
160
156
|
before do
|
|
161
157
|
allow(cli).to receive(:authorization_token).and_return(authorization_token)
|
|
162
|
-
expect(
|
|
158
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update)
|
|
163
159
|
|
|
164
160
|
expect(cli).to receive(:run_cmd).with("git fetch origin").ordered
|
|
165
161
|
expect(cli).to receive(:run_cmd).with("git branch -D prototype", allow_failure: true).ordered
|
|
@@ -186,10 +182,10 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
|
|
|
186
182
|
expect { cli.integrate('some-other-branch') }.to raise_error(/Invalid aggregate branch: some-other-branch must be one of supported aggregate branches/)
|
|
187
183
|
end
|
|
188
184
|
end
|
|
189
|
-
context 'when merge conflicts occur during the updatecommand execution' do
|
|
185
|
+
context 'when merge conflicts occur during the Thegarage::Gitx::Cli::updatecommand execution' do
|
|
190
186
|
let(:remote_branch_names) { ['origin/staging'] }
|
|
191
187
|
before do
|
|
192
|
-
expect(
|
|
188
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update).and_raise(Thegarage::Gitx::Cli::BaseCommand::MergeError)
|
|
193
189
|
|
|
194
190
|
expect { cli.integrate }.to raise_error(Thegarage::Gitx::Cli::BaseCommand::MergeError, 'Merge Conflict Occurred. Please Merge Conflict Occurred. Please fix merge conflict and rerun the integrate command')
|
|
195
191
|
end
|
|
@@ -200,7 +196,7 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
|
|
|
200
196
|
context 'when merge conflicts occur with the integrate command' do
|
|
201
197
|
let(:remote_branch_names) { ['origin/staging'] }
|
|
202
198
|
before do
|
|
203
|
-
expect(
|
|
199
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update)
|
|
204
200
|
|
|
205
201
|
expect(cli).to receive(:run_cmd).with("git fetch origin").ordered
|
|
206
202
|
expect(cli).to receive(:run_cmd).with("git branch -D staging", allow_failure: true).ordered
|
|
@@ -224,7 +220,7 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
|
|
|
224
220
|
before do
|
|
225
221
|
allow(cli).to receive(:authorization_token).and_return(authorization_token)
|
|
226
222
|
|
|
227
|
-
expect(
|
|
223
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update)
|
|
228
224
|
|
|
229
225
|
expect(cli).not_to receive(:run_cmd).with("git branch -D staging")
|
|
230
226
|
expect(cli).not_to receive(:run_cmd).with("git push origin HEAD")
|
|
@@ -253,7 +249,7 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
|
|
|
253
249
|
let(:authorization_token) { '123123' }
|
|
254
250
|
before do
|
|
255
251
|
allow(cli).to receive(:authorization_token).and_return(authorization_token)
|
|
256
|
-
expect(
|
|
252
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update)
|
|
257
253
|
expect(cli).to receive(:ask).and_return('feature-branch')
|
|
258
254
|
|
|
259
255
|
expect(cli).not_to receive(:run_cmd).with("git branch -D staging")
|
|
@@ -29,16 +29,11 @@ describe Thegarage::Gitx::Cli::ReleaseCommand do
|
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
context 'when user confirms release and pull request exists' do
|
|
32
|
-
let(:fake_update_command) { double('fake update command', update: nil) }
|
|
33
|
-
let(:fake_integrate_command) { double('fake integrate command') }
|
|
34
|
-
let(:fake_cleanup_command) { double('fake cleanup command', cleanup: nil) }
|
|
35
32
|
let(:authorization_token) { '123123' }
|
|
36
33
|
before do
|
|
37
|
-
expect(
|
|
38
|
-
expect(
|
|
39
|
-
expect(
|
|
40
|
-
|
|
41
|
-
expect(fake_integrate_command).to receive(:integrate).with('staging')
|
|
34
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update)
|
|
35
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::IntegrateCommand, :integrate, 'staging')
|
|
36
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::CleanupCommand, :cleanup)
|
|
42
37
|
|
|
43
38
|
expect(cli).to receive(:yes?).and_return(true)
|
|
44
39
|
allow(cli).to receive(:authorization_token).and_return(authorization_token)
|
|
@@ -58,9 +53,6 @@ describe Thegarage::Gitx::Cli::ReleaseCommand do
|
|
|
58
53
|
end
|
|
59
54
|
context 'when user confirms release and pull request does not exist' do
|
|
60
55
|
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
56
|
let(:new_pull_request) do
|
|
65
57
|
{
|
|
66
58
|
html_url: "https://path/to/html/pull/request",
|
|
@@ -75,16 +67,13 @@ describe Thegarage::Gitx::Cli::ReleaseCommand do
|
|
|
75
67
|
allow(cli).to receive(:authorization_token).and_return(authorization_token)
|
|
76
68
|
allow(cli).to receive(:ask_editor).and_return('description')
|
|
77
69
|
|
|
78
|
-
expect(
|
|
79
|
-
expect(
|
|
80
|
-
expect(
|
|
81
|
-
|
|
82
|
-
expect(fake_update_command).to receive(:update).twice
|
|
83
|
-
expect(fake_integrate_command).to receive(:integrate).with('staging')
|
|
70
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::UpdateCommand, :update).twice
|
|
71
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::IntegrateCommand, :integrate, 'staging')
|
|
72
|
+
expect(cli).to receive(:execute_command).with(Thegarage::Gitx::Cli::CleanupCommand, :cleanup)
|
|
84
73
|
|
|
85
74
|
expect(cli).to receive(:yes?).and_return(true)
|
|
86
75
|
|
|
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
|
|
76
|
+
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
|
|
88
77
|
expect(cli).to receive(:run_cmd).with("git checkout master").ordered
|
|
89
78
|
expect(cli).to receive(:run_cmd).with("git pull origin master").ordered
|
|
90
79
|
expect(cli).to receive(:run_cmd).with("git merge --no-ff feature-branch").ordered
|
|
@@ -43,7 +43,8 @@ describe Thegarage::Gitx::Cli::ReviewCommand do
|
|
|
43
43
|
expect(Thegarage::Gitx::Cli::UpdateCommand).to receive(:new).and_return(fake_update_command)
|
|
44
44
|
|
|
45
45
|
allow(cli).to receive(:authorization_token).and_return(authorization_token)
|
|
46
|
-
expect(cli).to receive(:run_cmd).with("git log master...feature-branch --no-merges --pretty=format:'* %s%n%b'").and_return("
|
|
46
|
+
expect(cli).to receive(:run_cmd).with("git log master...feature-branch --reverse --no-merges --pretty=format:'* %s%n%b'").and_return("* old commit\n\n* new commit").ordered
|
|
47
|
+
expect(cli).to receive(:ask_editor).with("### Changelog\n* old commit\n\n* new commit\n#{Thegarage::Gitx::Cli::Github::PULL_REQUEST_FOOTER}", anything).and_return('description')
|
|
47
48
|
|
|
48
49
|
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'})
|
|
49
50
|
VCR.use_cassette('pull_request_does_not_exist') do
|