geet 0.3.15 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +7 -0
- data/README.md +4 -9
- data/bin/geet +19 -8
- data/geet.gemspec +1 -1
- data/lib/geet/commandline/commands.rb +3 -0
- data/lib/geet/commandline/configuration.rb +20 -1
- data/lib/geet/git/repository.rb +17 -3
- data/lib/geet/github/api_interface.rb +2 -0
- data/lib/geet/github/branch.rb +1 -1
- data/lib/geet/github/issue.rb +2 -2
- data/lib/geet/github/label.rb +2 -2
- data/lib/geet/github/milestone.rb +16 -3
- data/lib/geet/github/pr.rb +2 -3
- data/lib/geet/github/remote_repository.rb +37 -0
- data/lib/geet/github/user.rb +2 -2
- data/lib/geet/gitlab/api_interface.rb +2 -0
- data/lib/geet/gitlab/label.rb +2 -2
- data/lib/geet/gitlab/milestone.rb +1 -1
- data/lib/geet/gitlab/user.rb +1 -1
- data/lib/geet/helpers/os_helper.rb +4 -3
- data/lib/geet/services/add_upstream_repo.rb +37 -0
- data/lib/geet/services/close_milestones.rb +46 -0
- data/lib/geet/services/create_issue.rb +5 -3
- data/lib/geet/services/create_pr.rb +11 -7
- data/lib/geet/services/list_issues.rb +4 -1
- data/lib/geet/services/merge_pr.rb +55 -4
- data/lib/geet/services/open_repo.rb +50 -0
- data/lib/geet/shared/selection.rb +3 -0
- data/lib/geet/utils/attributes_selection_manager.rb +12 -3
- data/lib/geet/utils/git_client.rb +122 -29
- data/lib/geet/version.rb +1 -1
- data/spec/integration/comment_pr_spec.rb +1 -1
- data/spec/integration/create_issue_spec.rb +4 -4
- data/spec/integration/create_label_spec.rb +5 -5
- data/spec/integration/create_milestone_spec.rb +1 -1
- data/spec/integration/create_pr_spec.rb +13 -8
- data/spec/integration/list_issues_spec.rb +6 -6
- data/spec/integration/list_labels_spec.rb +4 -4
- data/spec/integration/list_milestones_spec.rb +4 -4
- data/spec/integration/list_prs_spec.rb +3 -3
- data/spec/integration/merge_pr_spec.rb +33 -4
- data/spec/integration/open_pr_spec.rb +1 -1
- data/spec/integration/open_repo_spec.rb +46 -0
- data/spec/vcr_cassettes/create_issue.yml +1 -1
- data/spec/vcr_cassettes/create_issue_upstream.yml +1 -1
- data/spec/vcr_cassettes/github_com/create_pr.yml +1 -1
- data/spec/vcr_cassettes/github_com/create_pr_in_auto_mode_create_upstream.yml +1 -1
- data/spec/vcr_cassettes/github_com/create_pr_in_auto_mode_with_push.yml +1 -1
- data/spec/vcr_cassettes/github_com/create_pr_upstream.yml +1 -1
- data/spec/vcr_cassettes/github_com/create_pr_upstream_without_write_permissions.yml +1 -1
- metadata +8 -3
data/lib/geet/version.rb
CHANGED
@@ -17,7 +17,7 @@ describe Geet::Services::CommentPr do
|
|
17
17
|
|
18
18
|
it 'should add a comment to the PR for the current branch' do
|
19
19
|
allow(git_client).to receive(:current_branch).and_return(branch)
|
20
|
-
allow(git_client).to receive(:remote).with(
|
20
|
+
allow(git_client).to receive(:remote).with(no_args).and_return("git@github.com:#{owner}/#{repository_name}")
|
21
21
|
|
22
22
|
expected_pr_number = 3
|
23
23
|
expected_output = <<~STR
|
@@ -12,7 +12,7 @@ describe Geet::Services::CreateIssue do
|
|
12
12
|
|
13
13
|
context 'with labels, assignees and milestones' do
|
14
14
|
it 'should create an issue' do
|
15
|
-
allow(git_client).to receive(:remote).with(
|
15
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo_f')
|
16
16
|
|
17
17
|
expected_output = <<~STR
|
18
18
|
Finding labels...
|
@@ -47,8 +47,8 @@ describe Geet::Services::CreateIssue do
|
|
47
47
|
context 'without labels, assignees and milestones' do
|
48
48
|
it 'should create an upstream issue' do
|
49
49
|
allow(git_client).to receive(:current_branch).and_return('mybranch')
|
50
|
-
allow(git_client).to receive(:remote).with(
|
51
|
-
allow(git_client).to receive(:remote).with('upstream').and_return('git@github.com:momcorp/therepo')
|
50
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo')
|
51
|
+
allow(git_client).to receive(:remote).with(name: 'upstream').and_return('git@github.com:momcorp/therepo')
|
52
52
|
|
53
53
|
expected_output = <<~STR
|
54
54
|
Creating the issue...
|
@@ -59,7 +59,7 @@ describe Geet::Services::CreateIssue do
|
|
59
59
|
|
60
60
|
actual_created_issue = VCR.use_cassette('create_issue_upstream') do
|
61
61
|
create_options = { no_open_issue: true, out: actual_output }
|
62
|
-
described_class.new(upstream_repository, out: actual_output).execute('Title', 'Description', create_options)
|
62
|
+
described_class.new(upstream_repository, out: actual_output).execute('Title', 'Description', **create_options)
|
63
63
|
end
|
64
64
|
|
65
65
|
expect(actual_output.string).to eql(expected_output)
|
@@ -13,7 +13,7 @@ describe Geet::Services::CreateLabel do
|
|
13
13
|
context 'with github.com' do
|
14
14
|
context 'with user-specified color' do
|
15
15
|
it 'should create a label' do
|
16
|
-
allow(git_client).to receive(:remote).with(
|
16
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo')
|
17
17
|
|
18
18
|
expected_output = <<~STR
|
19
19
|
Creating label...
|
@@ -34,8 +34,8 @@ describe Geet::Services::CreateLabel do
|
|
34
34
|
|
35
35
|
context 'upstream' do
|
36
36
|
it 'should create a label' do
|
37
|
-
allow(git_client).to receive(:remote).with(
|
38
|
-
allow(git_client).to receive(:remote).with('upstream').and_return('git@github.com:donaldduck-fr/testrepo_gh')
|
37
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo')
|
38
|
+
allow(git_client).to receive(:remote).with(name: 'upstream').and_return('git@github.com:donaldduck-fr/testrepo_gh')
|
39
39
|
|
40
40
|
expected_output = <<~STR
|
41
41
|
Creating label...
|
@@ -58,7 +58,7 @@ describe Geet::Services::CreateLabel do
|
|
58
58
|
|
59
59
|
context 'with auto-generated color' do
|
60
60
|
it 'should create a label' do
|
61
|
-
allow(git_client).to receive(:remote).with(
|
61
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo')
|
62
62
|
|
63
63
|
actual_output = StringIO.new
|
64
64
|
|
@@ -87,7 +87,7 @@ describe Geet::Services::CreateLabel do
|
|
87
87
|
|
88
88
|
context 'with gitlab.com' do
|
89
89
|
it 'should create a label' do
|
90
|
-
allow(git_client).to receive(:remote).with(
|
90
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@gitlab.com:donaldduck/testproject')
|
91
91
|
|
92
92
|
expected_output = <<~STR
|
93
93
|
Creating label...
|
@@ -12,7 +12,7 @@ describe Geet::Services::CreateMilestone do
|
|
12
12
|
|
13
13
|
context 'with github.com' do
|
14
14
|
it 'should create a milestone' do
|
15
|
-
allow(git_client).to receive(:remote).with(
|
15
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo_upstream')
|
16
16
|
|
17
17
|
expected_output = <<~STR
|
18
18
|
Creating milestone...
|
@@ -14,7 +14,8 @@ describe Geet::Services::CreatePr do
|
|
14
14
|
context 'with labels, reviewers and milestones' do
|
15
15
|
it 'should create a PR' do
|
16
16
|
allow(git_client).to receive(:current_branch).and_return('mybranch')
|
17
|
-
allow(git_client).to receive(:
|
17
|
+
allow(git_client).to receive(:main_branch).and_return('master')
|
18
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo_f')
|
18
19
|
|
19
20
|
expected_output = <<~STR
|
20
21
|
Finding labels...
|
@@ -50,8 +51,9 @@ describe Geet::Services::CreatePr do
|
|
50
51
|
context 'on an upstream repository' do
|
51
52
|
it 'should create an upstream PR' do
|
52
53
|
allow(git_client).to receive(:current_branch).and_return('mybranch')
|
53
|
-
allow(git_client).to receive(:
|
54
|
-
allow(git_client).to receive(:remote).with(
|
54
|
+
allow(git_client).to receive(:main_branch).and_return('master')
|
55
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo_f')
|
56
|
+
allow(git_client).to receive(:remote).with(name: 'upstream').and_return('git@github.com:donald-fr/testrepo_u')
|
55
57
|
|
56
58
|
expected_output = <<~STR
|
57
59
|
Creating PR...
|
@@ -80,8 +82,9 @@ describe Geet::Services::CreatePr do
|
|
80
82
|
context 'without labels, reviewers and milestones' do
|
81
83
|
it 'should create a PR' do
|
82
84
|
allow(git_client).to receive(:current_branch).and_return('mybranch')
|
83
|
-
allow(git_client).to receive(:
|
84
|
-
allow(git_client).to receive(:remote).with(
|
85
|
+
allow(git_client).to receive(:main_branch).and_return('master')
|
86
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo_f')
|
87
|
+
allow(git_client).to receive(:remote).with(name: 'upstream').and_return('git@github.com:donald-fr/testrepo_u')
|
85
88
|
|
86
89
|
expected_output = <<~STR
|
87
90
|
Creating PR...
|
@@ -112,7 +115,7 @@ describe Geet::Services::CreatePr do
|
|
112
115
|
context 'in automated mode' do
|
113
116
|
it 'should raise an error when the working tree is dirty' do
|
114
117
|
allow(git_client).to receive(:working_tree_clean?).and_return(false)
|
115
|
-
allow(git_client).to receive(:remote).with(
|
118
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo_f')
|
116
119
|
|
117
120
|
expected_output = <<~STR
|
118
121
|
Error! Saved summary to /tmp/last_geet_edited_summary.md
|
@@ -133,10 +136,11 @@ describe Geet::Services::CreatePr do
|
|
133
136
|
it 'should push to the upstream branch' do
|
134
137
|
allow(git_client).to receive(:working_tree_clean?).and_return(true)
|
135
138
|
allow(git_client).to receive(:current_branch).and_return('mybranch')
|
139
|
+
allow(git_client).to receive(:main_branch).and_return('master')
|
136
140
|
expect(git_client).to receive(:upstream_branch).and_return('mybranch')
|
137
141
|
expect(git_client).to receive(:push)
|
138
142
|
|
139
|
-
allow(git_client).to receive(:remote).with(
|
143
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo_f')
|
140
144
|
|
141
145
|
expected_output = <<~STR
|
142
146
|
Pushing to upstream branch...
|
@@ -158,10 +162,11 @@ describe Geet::Services::CreatePr do
|
|
158
162
|
it "should create an upstream branch, when there isn't one (is not tracked)" do
|
159
163
|
allow(git_client).to receive(:working_tree_clean?).and_return(true)
|
160
164
|
allow(git_client).to receive(:current_branch).and_return('mybranch')
|
165
|
+
allow(git_client).to receive(:main_branch).and_return('master')
|
161
166
|
expect(git_client).to receive(:upstream_branch).and_return(nil)
|
162
167
|
expect(git_client).to receive(:push).with(upstream_branch: 'mybranch')
|
163
168
|
|
164
|
-
allow(git_client).to receive(:remote).with(
|
169
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo_f')
|
165
170
|
|
166
171
|
expected_output = <<~STR
|
167
172
|
Creating upstream branch "mybranch"...
|
@@ -12,7 +12,7 @@ describe Geet::Services::ListIssues do
|
|
12
12
|
|
13
13
|
context 'with github.com' do
|
14
14
|
it 'should list the default issues' do
|
15
|
-
allow(git_client).to receive(:remote).with(
|
15
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo')
|
16
16
|
|
17
17
|
expected_output = <<~STR
|
18
18
|
5. Title 2 (https://github.com/donaldduck/testrepo/issues/5)
|
@@ -34,7 +34,7 @@ describe Geet::Services::ListIssues do
|
|
34
34
|
|
35
35
|
context 'with assignee filtering' do
|
36
36
|
it 'should list the issues' do
|
37
|
-
allow(git_client).to receive(:remote).with(
|
37
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo_gh')
|
38
38
|
|
39
39
|
expected_output = <<~STR
|
40
40
|
Finding collaborators...
|
@@ -57,8 +57,8 @@ describe Geet::Services::ListIssues do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
it 'should list the upstream issues' do
|
60
|
-
allow(git_client).to receive(:remote).with(
|
61
|
-
allow(git_client).to receive(:remote).with('upstream').and_return('git@github.com:donald-fr/testrepo_u')
|
60
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/testrepo_2f')
|
61
|
+
allow(git_client).to receive(:remote).with(name: 'upstream').and_return('git@github.com:donald-fr/testrepo_u')
|
62
62
|
|
63
63
|
expected_output = <<~STR
|
64
64
|
2. Title 2 U (https://github.com/donald-fr/testrepo_u/issues/2)
|
@@ -81,7 +81,7 @@ describe Geet::Services::ListIssues do
|
|
81
81
|
|
82
82
|
context 'with gitlab.com' do
|
83
83
|
it 'should list the issues' do
|
84
|
-
allow(git_client).to receive(:remote).with(
|
84
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@gitlab.com:donaldduck/testproject')
|
85
85
|
|
86
86
|
expected_output = <<~STR
|
87
87
|
2. I like more pizza (https://gitlab.com/donaldduck/testproject/issues/2)
|
@@ -103,7 +103,7 @@ describe Geet::Services::ListIssues do
|
|
103
103
|
|
104
104
|
context 'with assignee filtering' do
|
105
105
|
it 'should list the issues' do
|
106
|
-
allow(git_client).to receive(:remote).with(
|
106
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@gitlab.com:donaldduck/testproject')
|
107
107
|
|
108
108
|
expected_output = <<~STR
|
109
109
|
Finding collaborators...
|
@@ -12,7 +12,7 @@ describe Geet::Services::ListLabels do
|
|
12
12
|
|
13
13
|
context 'with github.com' do
|
14
14
|
it 'should list the labels' do
|
15
|
-
allow(git_client).to receive(:remote).with(
|
15
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/geet')
|
16
16
|
|
17
17
|
expected_output = <<~STR
|
18
18
|
- bug (#ee0701)
|
@@ -34,8 +34,8 @@ describe Geet::Services::ListLabels do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
it 'should list the upstream labels' do
|
37
|
-
allow(git_client).to receive(:remote).with(
|
38
|
-
allow(git_client).to receive(:remote).with('upstream').and_return('git@github.com:donaldduck-fr/testrepo_u')
|
37
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/geet')
|
38
|
+
allow(git_client).to receive(:remote).with(name: 'upstream').and_return('git@github.com:donaldduck-fr/testrepo_u')
|
39
39
|
|
40
40
|
expected_output = <<~STR
|
41
41
|
- bug (#ee0701)
|
@@ -57,7 +57,7 @@ describe Geet::Services::ListLabels do
|
|
57
57
|
|
58
58
|
context 'with gitlab.com' do
|
59
59
|
it 'should list the labels' do
|
60
|
-
allow(git_client).to receive(:remote).with(
|
60
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@gitlab.com:donaldduck/testproject')
|
61
61
|
|
62
62
|
expected_output = <<~STR
|
63
63
|
- bug (#d9534f)
|
@@ -12,7 +12,7 @@ describe Geet::Services::ListMilestones do
|
|
12
12
|
|
13
13
|
context 'with github.com' do
|
14
14
|
it 'should list the milestones' do
|
15
|
-
allow(git_client).to receive(:remote).with(
|
15
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donaldduck/geet')
|
16
16
|
|
17
17
|
expected_output = <<~STR
|
18
18
|
Finding milestones...
|
@@ -50,8 +50,8 @@ describe Geet::Services::ListMilestones do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'should list the upstream milestones' do
|
53
|
-
allow(git_client).to receive(:remote).with(
|
54
|
-
allow(git_client).to receive(:remote).with('upstream').and_return('git@github.com:donaldduck/testrepo_upstream')
|
53
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donald-fr/testrepo_downstream')
|
54
|
+
allow(git_client).to receive(:remote).with(name: 'upstream').and_return('git@github.com:donaldduck/testrepo_upstream')
|
55
55
|
|
56
56
|
expected_output = <<~STR
|
57
57
|
Finding milestones...
|
@@ -80,7 +80,7 @@ describe Geet::Services::ListMilestones do
|
|
80
80
|
|
81
81
|
context 'with gitlab.com' do
|
82
82
|
it 'should list the milestones' do
|
83
|
-
allow(git_client).to receive(:remote).with(
|
83
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@gitlab.com:donaldduck/testproject')
|
84
84
|
|
85
85
|
expected_output = <<~STR
|
86
86
|
Finding milestones...
|
@@ -11,7 +11,7 @@ describe Geet::Services::ListPrs do
|
|
11
11
|
let(:upstream_repository) { Geet::Git::Repository.new(upstream: true, git_client: git_client) }
|
12
12
|
|
13
13
|
it 'should list the PRs' do
|
14
|
-
allow(git_client).to receive(:remote).with(
|
14
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donald-fr/testrepo_downstream')
|
15
15
|
|
16
16
|
expected_output = <<~STR
|
17
17
|
2. Add testfile3 (downstream) (https://github.com/donald-fr/testrepo_downstream/pull/2)
|
@@ -32,8 +32,8 @@ describe Geet::Services::ListPrs do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'should list the upstream PRs' do
|
35
|
-
allow(git_client).to receive(:remote).with(
|
36
|
-
allow(git_client).to receive(:remote).with('upstream').and_return('git@github.com:donaldduck/testrepo_upstream')
|
35
|
+
allow(git_client).to receive(:remote).with(no_args).and_return('git@github.com:donald-fr/testrepo_downstream')
|
36
|
+
allow(git_client).to receive(:remote).with(name: 'upstream').and_return('git@github.com:donaldduck/testrepo_upstream')
|
37
37
|
|
38
38
|
expected_output = <<~STR
|
39
39
|
2. Add testfile3 (upstream) (https://github.com/donaldduck/testrepo_upstream/pull/2)
|
@@ -5,23 +5,42 @@ require 'spec_helper'
|
|
5
5
|
require_relative '../../lib/geet/git/repository'
|
6
6
|
require_relative '../../lib/geet/services/merge_pr'
|
7
7
|
|
8
|
+
# Currently disabled: it requires updates following the addition of the automatic removal of the local
|
9
|
+
# branch.
|
10
|
+
# Specifically, `GitClient#upstream_branch_gone?` needs to be handled, since it returns the current
|
11
|
+
# branch, while it's supposed to return
|
12
|
+
#
|
8
13
|
describe Geet::Services::MergePr do
|
9
14
|
let(:git_client) { Geet::Utils::GitClient.new }
|
10
15
|
let(:repository) { Geet::Git::Repository.new(git_client: git_client) }
|
11
16
|
let(:owner) { 'donaldduck' }
|
12
17
|
let(:branch) { 'mybranch' }
|
18
|
+
let(:main_branch) { 'main' }
|
19
|
+
|
20
|
+
before :each do
|
21
|
+
expect(git_client).to receive(:fetch)
|
22
|
+
expect(git_client).to receive(:upstream_branch_gone?).and_return(true)
|
23
|
+
expect(git_client).to receive(:checkout).with(main_branch)
|
24
|
+
expect(git_client).to receive(:rebase)
|
25
|
+
expect(git_client).to receive(:delete_branch).with('mybranch')
|
26
|
+
end
|
13
27
|
|
14
28
|
context 'with github.com' do
|
15
29
|
let(:repository_name) { 'testrepo_upstream' }
|
16
30
|
|
17
31
|
it 'should merge the PR for the current branch' do
|
18
32
|
allow(git_client).to receive(:current_branch).and_return(branch)
|
19
|
-
allow(git_client).to receive(:
|
33
|
+
allow(git_client).to receive(:main_branch).and_return(main_branch)
|
34
|
+
allow(git_client).to receive(:remote).with(no_args).and_return("git@github.com:#{owner}/#{repository_name}")
|
20
35
|
|
21
36
|
expected_pr_number = 1
|
22
37
|
expected_output = <<~STR
|
23
38
|
Finding PR with head (#{owner}:#{branch})...
|
24
39
|
Merging PR ##{expected_pr_number}...
|
40
|
+
Fetching repository...
|
41
|
+
Checking out #{main_branch}...
|
42
|
+
Rebasing...
|
43
|
+
Deleting local branch mybranch...
|
25
44
|
STR
|
26
45
|
|
27
46
|
actual_output = StringIO.new
|
@@ -38,13 +57,18 @@ describe Geet::Services::MergePr do
|
|
38
57
|
|
39
58
|
it 'should merge the PR for the current branch, with branch deletion' do
|
40
59
|
allow(git_client).to receive(:current_branch).and_return(branch)
|
41
|
-
allow(git_client).to receive(:
|
60
|
+
allow(git_client).to receive(:main_branch).and_return(main_branch)
|
61
|
+
allow(git_client).to receive(:remote).with(no_args).and_return("git@github.com:#{owner}/#{repository_name}")
|
42
62
|
|
43
63
|
expected_pr_number = 2
|
44
64
|
expected_output = <<~STR
|
45
65
|
Finding PR with head (#{owner}:#{branch})...
|
46
66
|
Merging PR ##{expected_pr_number}...
|
47
|
-
Deleting branch #{branch}...
|
67
|
+
Deleting remote branch #{branch}...
|
68
|
+
Fetching repository...
|
69
|
+
Checking out #{main_branch}...
|
70
|
+
Rebasing...
|
71
|
+
Deleting local branch mybranch...
|
48
72
|
STR
|
49
73
|
|
50
74
|
actual_output = StringIO.new
|
@@ -65,12 +89,17 @@ describe Geet::Services::MergePr do
|
|
65
89
|
|
66
90
|
it 'should merge the PR for the current branch' do
|
67
91
|
allow(git_client).to receive(:current_branch).and_return(branch)
|
68
|
-
allow(git_client).to receive(:
|
92
|
+
allow(git_client).to receive(:main_branch).and_return(main_branch)
|
93
|
+
allow(git_client).to receive(:remote).with(no_args).and_return("git@gitlab.com:#{owner}/#{repository_name}")
|
69
94
|
|
70
95
|
expected_pr_number = 4
|
71
96
|
expected_output = <<~STR
|
72
97
|
Finding PR with head (#{owner}:#{branch})...
|
73
98
|
Merging PR ##{expected_pr_number}...
|
99
|
+
Fetching repository...
|
100
|
+
Checking out #{main_branch}...
|
101
|
+
Rebasing...
|
102
|
+
Deleting local branch mybranch...
|
74
103
|
STR
|
75
104
|
|
76
105
|
actual_output = StringIO.new
|
@@ -16,7 +16,7 @@ describe Geet::Services::OpenPr do
|
|
16
16
|
|
17
17
|
it 'should open the PR for the current branch' do
|
18
18
|
allow(git_client).to receive(:current_branch).and_return(branch)
|
19
|
-
allow(git_client).to receive(:remote).with(
|
19
|
+
allow(git_client).to receive(:remote).with(no_args).and_return("git@github.com:#{owner}/#{repository_name}")
|
20
20
|
|
21
21
|
expected_pr_number = 3
|
22
22
|
expected_output = <<~STR
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
require_relative '../../lib/geet/git/repository'
|
6
|
+
require_relative '../../lib/geet/services/open_repo'
|
7
|
+
|
8
|
+
module Geet
|
9
|
+
describe Services::OpenRepo do
|
10
|
+
let(:git_client) { Utils::GitClient.new }
|
11
|
+
let(:repository) { Git::Repository.new(git_client: git_client) }
|
12
|
+
|
13
|
+
OWNER = 'donaldduck'
|
14
|
+
REPOSITORY_NAME = 'testrepo'
|
15
|
+
|
16
|
+
REMOTE_URLS = {
|
17
|
+
'git' => "git@github.com:#{OWNER}/#{REPOSITORY_NAME}",
|
18
|
+
'https' => "https://github.com/#{OWNER}/#{REPOSITORY_NAME}",
|
19
|
+
}
|
20
|
+
|
21
|
+
context 'should open the PR for the current branch' do
|
22
|
+
REMOTE_URLS.each do |protocol, remote_url|
|
23
|
+
it "with #{protocol} protocol" do
|
24
|
+
allow(git_client).to receive(:remote).with(no_args).and_return(remote_url)
|
25
|
+
|
26
|
+
expected_url = "https://github.com/#{OWNER}/#{REPOSITORY_NAME}"
|
27
|
+
expected_output = ""
|
28
|
+
|
29
|
+
actual_output = StringIO.new
|
30
|
+
service_instance = described_class.new(repository, out: actual_output, git_client: git_client)
|
31
|
+
|
32
|
+
expect(service_instance).to receive(:open_file_with_default_application).with(expected_url) do
|
33
|
+
# do nothing; just don't open the browser
|
34
|
+
end
|
35
|
+
|
36
|
+
execution_result = VCR.use_cassette('github_com/open_repo') do
|
37
|
+
service_instance.execute
|
38
|
+
end
|
39
|
+
|
40
|
+
expect(actual_output.string).to eql(expected_output)
|
41
|
+
expect(execution_result).to eql(expected_url)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end # context 'should open the PR for the current branch'
|
45
|
+
end # describe Services::OpenRepo
|
46
|
+
end # module Geet
|
@@ -608,7 +608,7 @@ http_interactions:
|
|
608
608
|
uri: https://api.github.com/repos/donaldduck/testrepo_f/issues
|
609
609
|
body:
|
610
610
|
encoding: UTF-8
|
611
|
-
string: '{"title":"Title","body":"Description"
|
611
|
+
string: '{"title":"Title","body":"Description"}'
|
612
612
|
headers:
|
613
613
|
Accept-Encoding:
|
614
614
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
@@ -152,7 +152,7 @@ http_interactions:
|
|
152
152
|
uri: https://api.github.com/repos/momcorp/therepo/issues
|
153
153
|
body:
|
154
154
|
encoding: UTF-8
|
155
|
-
string: '{"title":"Title","body":"Description"
|
155
|
+
string: '{"title":"Title","body":"Description"}'
|
156
156
|
headers:
|
157
157
|
Accept-Encoding:
|
158
158
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|