geet 0.27.2 → 0.27.3
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/.rubocop.yml +7 -0
- data/Gemfile +9 -9
- data/Rakefile +2 -2
- data/bin/geet +7 -7
- data/geet.gemspec +19 -19
- data/lib/geet/commandline/commands.rb +16 -15
- data/lib/geet/commandline/configuration.rb +96 -92
- data/lib/geet/commandline/editor.rb +13 -7
- data/lib/geet/git/repository.rb +75 -6
- data/lib/geet/github/abstract_issue.rb +4 -4
- data/lib/geet/github/api_interface.rb +23 -23
- data/lib/geet/github/gist.rb +8 -8
- data/lib/geet/github/issue.rb +5 -5
- data/lib/geet/github/label.rb +4 -4
- data/lib/geet/github/milestone.rb +8 -8
- data/lib/geet/github/pr.rb +20 -20
- data/lib/geet/github/remote_repository.rb +1 -1
- data/lib/geet/github/user.rb +5 -5
- data/lib/geet/gitlab/api_interface.rb +13 -13
- data/lib/geet/gitlab/issue.rb +3 -3
- data/lib/geet/gitlab/label.rb +3 -3
- data/lib/geet/gitlab/milestone.rb +4 -4
- data/lib/geet/gitlab/pr.rb +3 -3
- data/lib/geet/gitlab/user.rb +2 -2
- data/lib/geet/helpers/json_helper.rb +1 -1
- data/lib/geet/helpers/os_helper.rb +5 -5
- data/lib/geet/helpers/services_workflow_helper.rb +4 -4
- data/lib/geet/services/abstract_create_issue.rb +3 -3
- data/lib/geet/services/add_upstream_repo.rb +1 -1
- data/lib/geet/services/close_milestones.rb +9 -2
- data/lib/geet/services/comment_pr.rb +11 -0
- data/lib/geet/services/create_gist.rb +18 -4
- data/lib/geet/services/create_issue.rb +13 -7
- data/lib/geet/services/create_label.rb +22 -3
- data/lib/geet/services/create_milestone.rb +7 -1
- data/lib/geet/services/create_pr.rb +98 -23
- data/lib/geet/services/list_issues.rb +4 -3
- data/lib/geet/services/list_labels.rb +7 -0
- data/lib/geet/services/list_milestones.rb +35 -6
- data/lib/geet/services/list_prs.rb +7 -0
- data/lib/geet/services/merge_pr.rb +20 -2
- data/lib/geet/services/open_pr.rb +2 -2
- data/lib/geet/services/open_repo.rb +7 -1
- data/lib/geet/shared/repo_permissions.rb +4 -4
- data/lib/geet/shared/selection.rb +2 -2
- data/lib/geet/utils/attributes_selection_manager.rb +30 -10
- data/lib/geet/utils/git_client.rb +74 -33
- data/lib/geet/utils/manual_list_selection.rb +23 -11
- data/lib/geet/utils/string_matching_selection.rb +22 -6
- data/lib/geet/version.rb +2 -1
- data/lib/geet.rb +2 -2
- data/spec/integration/comment_pr_spec.rb +10 -10
- data/spec/integration/create_gist_spec.rb +12 -12
- data/spec/integration/create_issue_spec.rb +21 -21
- data/spec/integration/create_label_spec.rb +33 -33
- data/spec/integration/create_milestone_spec.rb +9 -9
- data/spec/integration/create_pr_spec.rb +120 -134
- data/spec/integration/list_issues_spec.rb +25 -25
- data/spec/integration/list_labels_spec.rb +15 -15
- data/spec/integration/list_milestones_spec.rb +15 -15
- data/spec/integration/list_prs_spec.rb +10 -10
- data/spec/integration/merge_pr_spec.rb +18 -18
- data/spec/integration/open_pr_spec.rb +18 -20
- data/spec/integration/open_repo_spec.rb +18 -18
- data/spec/spec_helper.rb +10 -10
- data/spec/unit/github/pr_spec.rb +73 -73
- metadata +3 -3
data/spec/unit/github/pr_spec.rb
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
# typed: false
|
|
3
3
|
|
|
4
|
-
require
|
|
4
|
+
require "spec_helper"
|
|
5
5
|
|
|
6
|
-
require_relative
|
|
7
|
-
require_relative
|
|
6
|
+
require_relative "../../../lib/geet/github/pr"
|
|
7
|
+
require_relative "../../../lib/geet/github/api_interface"
|
|
8
8
|
|
|
9
9
|
describe Geet::Github::PR do
|
|
10
|
-
describe
|
|
10
|
+
describe "#fetch_available_merge_method" do
|
|
11
11
|
let(:api_interface) { instance_double(Geet::Github::ApiInterface) }
|
|
12
12
|
let(:pr_number) { 123 }
|
|
13
|
-
let(:pr_title) {
|
|
14
|
-
let(:pr_link) {
|
|
15
|
-
let(:node_id) {
|
|
16
|
-
let(:repository_path) {
|
|
13
|
+
let(:pr_title) { "Test PR" }
|
|
14
|
+
let(:pr_link) { "https://github.com/owner/repo/pull/123" }
|
|
15
|
+
let(:node_id) { "PR_node_id_123" }
|
|
16
|
+
let(:repository_path) { "owner/repo" }
|
|
17
17
|
|
|
18
18
|
subject { described_class.new(pr_number, api_interface, pr_title, pr_link, node_id: node_id) }
|
|
19
19
|
|
|
@@ -21,144 +21,144 @@ describe Geet::Github::PR do
|
|
|
21
21
|
allow(api_interface).to receive(:repository_path).and_return(repository_path)
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
context
|
|
25
|
-
it
|
|
24
|
+
context "when there is one commit and squash merge is allowed" do
|
|
25
|
+
it "returns SQUASH" do
|
|
26
26
|
graphql_response = {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
"repository" => {
|
|
28
|
+
"mergeCommitAllowed" => true,
|
|
29
|
+
"squashMergeAllowed" => true,
|
|
30
|
+
"rebaseMergeAllowed" => true,
|
|
31
|
+
"pullRequest" => {
|
|
32
|
+
"commits" => {
|
|
33
|
+
"totalCount" => 1,
|
|
34
34
|
},
|
|
35
35
|
},
|
|
36
36
|
},
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
expect(api_interface).to receive(:send_graphql_request)
|
|
40
|
-
.with(anything, variables: {owner:
|
|
40
|
+
.with(anything, variables: {owner: "owner", name: "repo", number: pr_number})
|
|
41
41
|
.and_return(graphql_response)
|
|
42
42
|
|
|
43
43
|
result = subject.send(:fetch_available_merge_method)
|
|
44
|
-
expect(result).to eq(
|
|
44
|
+
expect(result).to eq("SQUASH")
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
-
context
|
|
49
|
-
it
|
|
48
|
+
context "when there is one commit but squash merge is not allowed" do
|
|
49
|
+
it "returns MERGE if merge commit is allowed" do
|
|
50
50
|
graphql_response = {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
51
|
+
"repository" => {
|
|
52
|
+
"mergeCommitAllowed" => true,
|
|
53
|
+
"squashMergeAllowed" => false,
|
|
54
|
+
"rebaseMergeAllowed" => true,
|
|
55
|
+
"pullRequest" => {
|
|
56
|
+
"commits" => {
|
|
57
|
+
"totalCount" => 1,
|
|
58
58
|
},
|
|
59
59
|
},
|
|
60
60
|
},
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
expect(api_interface).to receive(:send_graphql_request)
|
|
64
|
-
.with(anything, variables: {owner:
|
|
64
|
+
.with(anything, variables: {owner: "owner", name: "repo", number: pr_number})
|
|
65
65
|
.and_return(graphql_response)
|
|
66
66
|
|
|
67
67
|
result = subject.send(:fetch_available_merge_method)
|
|
68
|
-
expect(result).to eq(
|
|
68
|
+
expect(result).to eq("MERGE")
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
-
context
|
|
73
|
-
it
|
|
72
|
+
context "when there are multiple commits and merge commit is allowed" do
|
|
73
|
+
it "returns MERGE" do
|
|
74
74
|
graphql_response = {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
75
|
+
"repository" => {
|
|
76
|
+
"mergeCommitAllowed" => true,
|
|
77
|
+
"squashMergeAllowed" => true,
|
|
78
|
+
"rebaseMergeAllowed" => true,
|
|
79
|
+
"pullRequest" => {
|
|
80
|
+
"commits" => {
|
|
81
|
+
"totalCount" => 3,
|
|
82
82
|
},
|
|
83
83
|
},
|
|
84
84
|
},
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
expect(api_interface).to receive(:send_graphql_request)
|
|
88
|
-
.with(anything, variables: {owner:
|
|
88
|
+
.with(anything, variables: {owner: "owner", name: "repo", number: pr_number})
|
|
89
89
|
.and_return(graphql_response)
|
|
90
90
|
|
|
91
91
|
result = subject.send(:fetch_available_merge_method)
|
|
92
|
-
expect(result).to eq(
|
|
92
|
+
expect(result).to eq("MERGE")
|
|
93
93
|
end
|
|
94
94
|
end
|
|
95
95
|
|
|
96
|
-
context
|
|
97
|
-
it
|
|
96
|
+
context "when there are multiple commits and merge commit is not allowed" do
|
|
97
|
+
it "returns SQUASH if squash merge is allowed" do
|
|
98
98
|
graphql_response = {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
99
|
+
"repository" => {
|
|
100
|
+
"mergeCommitAllowed" => false,
|
|
101
|
+
"squashMergeAllowed" => true,
|
|
102
|
+
"rebaseMergeAllowed" => true,
|
|
103
|
+
"pullRequest" => {
|
|
104
|
+
"commits" => {
|
|
105
|
+
"totalCount" => 3,
|
|
106
106
|
},
|
|
107
107
|
},
|
|
108
108
|
},
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
expect(api_interface).to receive(:send_graphql_request)
|
|
112
|
-
.with(anything, variables: {owner:
|
|
112
|
+
.with(anything, variables: {owner: "owner", name: "repo", number: pr_number})
|
|
113
113
|
.and_return(graphql_response)
|
|
114
114
|
|
|
115
115
|
result = subject.send(:fetch_available_merge_method)
|
|
116
|
-
expect(result).to eq(
|
|
116
|
+
expect(result).to eq("SQUASH")
|
|
117
117
|
end
|
|
118
118
|
|
|
119
|
-
it
|
|
119
|
+
it "returns REBASE if only rebase merge is allowed" do
|
|
120
120
|
graphql_response = {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
121
|
+
"repository" => {
|
|
122
|
+
"mergeCommitAllowed" => false,
|
|
123
|
+
"squashMergeAllowed" => false,
|
|
124
|
+
"rebaseMergeAllowed" => true,
|
|
125
|
+
"pullRequest" => {
|
|
126
|
+
"commits" => {
|
|
127
|
+
"totalCount" => 3,
|
|
128
128
|
},
|
|
129
129
|
},
|
|
130
130
|
},
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
expect(api_interface).to receive(:send_graphql_request)
|
|
134
|
-
.with(anything, variables: {owner:
|
|
134
|
+
.with(anything, variables: {owner: "owner", name: "repo", number: pr_number})
|
|
135
135
|
.and_return(graphql_response)
|
|
136
136
|
|
|
137
137
|
result = subject.send(:fetch_available_merge_method)
|
|
138
|
-
expect(result).to eq(
|
|
138
|
+
expect(result).to eq("REBASE")
|
|
139
139
|
end
|
|
140
140
|
end
|
|
141
141
|
|
|
142
|
-
context
|
|
143
|
-
it
|
|
142
|
+
context "when no merge methods are allowed" do
|
|
143
|
+
it "raises an error" do
|
|
144
144
|
graphql_response = {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
145
|
+
"repository" => {
|
|
146
|
+
"mergeCommitAllowed" => false,
|
|
147
|
+
"squashMergeAllowed" => false,
|
|
148
|
+
"rebaseMergeAllowed" => false,
|
|
149
|
+
"pullRequest" => {
|
|
150
|
+
"commits" => {
|
|
151
|
+
"totalCount" => 3,
|
|
152
152
|
},
|
|
153
153
|
},
|
|
154
154
|
},
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
expect(api_interface).to receive(:send_graphql_request)
|
|
158
|
-
.with(anything, variables: {owner:
|
|
158
|
+
.with(anything, variables: {owner: "owner", name: "repo", number: pr_number})
|
|
159
159
|
.and_return(graphql_response)
|
|
160
160
|
|
|
161
|
-
expect { subject.send(:fetch_available_merge_method) }.to raise_error(
|
|
161
|
+
expect { subject.send(:fetch_available_merge_method) }.to raise_error("No merge methods are allowed on this repository")
|
|
162
162
|
end
|
|
163
163
|
end
|
|
164
164
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: geet
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.27.
|
|
4
|
+
version: 0.27.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Saverio Miroddi
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-01-
|
|
10
|
+
date: 2026-01-26 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: base64
|
|
@@ -309,7 +309,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
309
309
|
- !ruby/object:Gem::Version
|
|
310
310
|
version: '0'
|
|
311
311
|
requirements: []
|
|
312
|
-
rubygems_version: 3.6.
|
|
312
|
+
rubygems_version: 3.6.9
|
|
313
313
|
specification_version: 4
|
|
314
314
|
summary: Commandline interface for performing SCM host operations, eg. create a PR
|
|
315
315
|
on GitHub
|