geet 0.3.15 → 0.4.1
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/.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
|