gitarro 0.1.78 → 0.1.79

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
- SHA1:
3
- metadata.gz: 906eff5164c6cedec317447e229f6ee5aa9b6551
4
- data.tar.gz: 1b6cd4267d70bef5446140318feef9964c01fca0
2
+ SHA256:
3
+ metadata.gz: 14bb2f5adfdd8fdc345c010ab3282f7c5cf19e5bd7fd81155fac8fcb3b298b70
4
+ data.tar.gz: 05ff77cd63c57b95541c5db21b9684c06981a202e5f49ac657f8ff5b4b43e01b
5
5
  SHA512:
6
- metadata.gz: 117792f7ed4b02f925171f893ad5c19e2f0f84c04b522b6614681f9a75963541fed0136e57376d3665db22b374a9636724e92f5411dd5021d2f1f552f3360601
7
- data.tar.gz: 8209860252af7f75074beba53e6023356508ef7034804cba9197cd5d4201252a7a6e0b4a6a7f0d0f85e3e01d93541e5c5c4e49f522ee2d3fae2006848f788c6b
6
+ metadata.gz: 5eb6fb49628ce67ad61f7b60e1e0da8cc5c560e3e0a8845be5556a3265e5bddc4b4d4774fb7204700f855442d3f6b536e5a2d2467e6970553976a34bb1f5862a
7
+ data.tar.gz: 69c6dc98ba868abad274eb1587662735f258368b0a97ebd22f69d187c871e105b2c1d8565047b272dd053a761d20f2b31f495c06daf0a967aba20cce2cb62286
data/bin/gitarro CHANGED
@@ -15,10 +15,12 @@ prs.each do |pr|
15
15
  puts '=' * 30 + "\n" + "TITLE_PR: #{pr.title}, NR: #{pr.number}\n" + '=' * 30
16
16
  # check if prs contains the branch given otherwise just break
17
17
  next unless b.pr_equal_spefic_branch?(pr)
18
+
18
19
  # this check the last commit state, catch for review or not reviewd status.
19
20
  comm_st = b.client.status(b.repo, pr.head.sha)
20
21
  # pr number trigger.
21
22
  break if b.triggered_by_pr_number?
23
+
22
24
  # retrigger if magic word found
23
25
  b.retrigger_check(pr)
24
26
  # 0) do test for unreviewed pr
@@ -1,5 +1,6 @@
1
1
  #! /usr/bin/ruby
2
2
 
3
+ require 'json'
3
4
  require 'octokit'
4
5
  require 'optparse'
5
6
  require 'time'
@@ -80,14 +81,13 @@ class TestExecutor
80
81
  instance_variable_set("@#{key}", value)
81
82
  self.class.send(:attr_accessor, key)
82
83
  end
84
+ Octokit.auto_paginate = true
85
+ @client = Octokit::Client.new(netrc: true)
83
86
  end
84
87
 
85
88
  # this will clone the repo and execute the tests
86
89
  def pr_test(pr)
87
- export_pr_data_to_hidden_file(pr)
88
90
  clone_repo(@noshallow, pr)
89
- # export variables
90
- export_pr_variables(pr)
91
91
  # do valid tests and store the result
92
92
  test_status = run_script
93
93
  test_status
@@ -99,8 +99,42 @@ class TestExecutor
99
99
  $CHILD_STATUS.exitstatus.nonzero? ? 'failure' : 'success'
100
100
  end
101
101
 
102
+ def export_pr_data(pr)
103
+ export_pr_data_to_simple_file(pr)
104
+ export_pr_data_to_file(pr)
105
+ end
106
+
102
107
  private
103
108
 
109
+ def export_pr_data_to_simple_file(pr)
110
+ # save this file in local dir where gitarro is executed.
111
+ # This part is kept for compatibility purposes
112
+ File.open('.gitarro_vars', 'w') do |file|
113
+ file.write("GITARRO_PR_AUTHOR: #{pr.head.user.login}\n" \
114
+ "GITARRO_PR_TITLE: #{pr.title}\n" \
115
+ "GITARRO_PR_NUMBER: #{pr.number}\n" \
116
+ "GITARRO_PR_TARGET_REPO: #{@repo}\n")
117
+ end
118
+ end
119
+
120
+ def export_pr_data_to_file(pr)
121
+ pr = pr.to_hash
122
+ pr[:files] = []
123
+ @client.pull_request_files(@repo, pr[:number]).each do |github_file|
124
+ pr[:files].push(github_file.to_hash)
125
+ end
126
+ File.open('.gitarro_pr.json', 'w') do |file|
127
+ file.write(JSON.generate(pr))
128
+ end
129
+ end
130
+
131
+ def export_pr_variables(pr)
132
+ ENV['GITARRO_PR_AUTHOR'] = pr.head.user.login.to_s
133
+ ENV['GITARRO_PR_TITLE'] = pr.title.to_s
134
+ ENV['GITARRO_PR_NUMBER'] = pr.number.to_s
135
+ ENV['GITARRO_PR_TARGET_REPO'] = @repo
136
+ end
137
+
104
138
  def clone_repo(noshallow, pr)
105
139
  shallow = GitShallowClone.new(@git_dir, pr, @options)
106
140
  # by default we use always shallow clone
@@ -117,24 +151,6 @@ class TestExecutor
117
151
  git.merge_pr_totarget(pr.base.ref, pr.head.ref)
118
152
  git.del_pr_branch(pr.base.ref, pr.head.ref)
119
153
  end
120
-
121
- def export_pr_data_to_hidden_file(pr)
122
- # save this file in local dir where gitarro is executed.
123
- File.open('.gitarro_vars', 'w') do |file|
124
- file.write("GITARRO_PR_AUTHOR: #{pr.head.user.login}\n" \
125
- "GITARRO_PR_TITLE: #{pr.title}\n" \
126
- "GITARRO_PR_NUMBER: #{pr.number}\n" \
127
- "GITARRO_PR_BRANCH: #{pr.head.ref}\n" \
128
- "GITARRO_PR_TARGET_REPO: #{@repo}\n")
129
- end
130
- end
131
-
132
- def export_pr_variables(pr)
133
- ENV['GITARRO_PR_AUTHOR'] = pr.head.user.login.to_s
134
- ENV['GITARRO_PR_TITLE'] = pr.title.to_s
135
- ENV['GITARRO_PR_NUMBER'] = pr.number.to_s
136
- ENV['GITARRO_PR_TARGET_REPO'] = @repo
137
- end
138
154
  end
139
155
 
140
156
  # this the main public class is the backend of gitarro,
@@ -163,6 +179,7 @@ class Backend
163
179
  def pr_equal_spefic_branch?(pr)
164
180
  return true if @branch.nil?
165
181
  return true if @branch == pr.base.ref
182
+
166
183
  puts "branch \"#{pr.base.ref}\" should match github-branch \"#{@branch}\" (given) !!!"
167
184
  puts "skipping tests !!!"
168
185
  false
@@ -181,30 +198,38 @@ class Backend
181
198
  # public for retrigger the test
182
199
  def retrigger_check(pr)
183
200
  return unless retrigger_needed?(pr)
201
+
184
202
  create_status(pr, 'pending')
185
203
  print_test_required
204
+ gbexec.export_pr_data(pr)
186
205
  exit 0 if @check
187
206
  launch_test_and_setup_status(pr) == 'success' ? exit(0) : exit(1)
188
207
  end
189
208
 
190
209
  # public always rerun tests against the pr number if this exists
191
210
  def triggered_by_pr_number?
192
- return false if @pr_number.nil?
211
+ return false if @pr_number.nil?
212
+
193
213
  pr_on_number = @client.pull_request(@repo, @pr_number)
194
214
  puts "Got triggered by PR_NUMBER OPTION, rerunning on #{@pr_number}"
195
215
  print_test_required
196
- launch_test_and_setup_status(pr_on_number)
216
+ gbexec.export_pr_data(pr)
217
+ launch_test_and_setup_status(pr_on_number) == 'success' ? exit(0) : exit(1)
197
218
  end
198
219
 
199
220
  def unreviewed_new_pr?(pr, comm_st)
200
221
  return unless commit_is_unreviewed?(comm_st)
222
+
201
223
  pr_all_files_type(pr.number, @file_type)
202
224
  return if empty_files_changed_by_pr?(pr)
225
+
203
226
  # gb.check is true when there is a job running as scheduler
204
227
  # which doesn't execute the test but trigger another job
205
228
  print_test_required
229
+ gbexec.export_pr_data(pr)
206
230
  return false if @check
207
- launch_test_and_setup_status(pr)
231
+
232
+ launch_test_and_setup_status(pr) == 'success' ? exit(0) : exit(1)
208
233
  end
209
234
 
210
235
  def reviewed_pr?(comm_st, pr)
@@ -213,9 +238,11 @@ class Backend
213
238
  return false unless context_present?(comm_st) == false ||
214
239
  pending_pr?(comm_st)
215
240
  return false unless pr_all_files_type(pr.number, @file_type).any?
241
+
216
242
  print_test_required
243
+ gbexec.export_pr_data(pr)
217
244
  exit(0) if @check
218
- launch_test_and_setup_status(pr)
245
+ launch_test_and_setup_status(pr) == 'success' ? exit(0) : exit(1)
219
246
  end
220
247
 
221
248
  # this function will check if the PR contains in comment the magic word
@@ -298,6 +325,7 @@ class Backend
298
325
  def retrigger_needed?(pr)
299
326
  # we want redo sometimes tests
300
327
  return false unless retriggered_by_comment?(pr.number, @context)
328
+
301
329
  # if check is set, the comment in the trigger job will be del.
302
330
  # so setting it to pending, it will be remembered
303
331
  pr_all_files_type(pr.number, @file_type).any?
@@ -67,6 +67,7 @@ class GitOp
67
67
  `git pull origin #{upstream}`
68
68
  `git checkout -b #{pr_fix}#{pr_branch} origin/#{pr_branch}`
69
69
  return if $CHILD_STATUS.exitstatus.zero?
70
+
70
71
  # if it fails the PR contain a forked external repo
71
72
  repo_external.checkout_into
72
73
  end
@@ -82,6 +83,7 @@ class GitOp
82
83
  def ck_or_clone_git
83
84
  git_repo_dir = git_dir + '/' + @options[:repo].split('/')[1]
84
85
  return if File.directory?(git_repo_dir)
86
+
85
87
  FileUtils.mkdir_p(git_dir) unless File.directory?(git_dir)
86
88
  Dir.chdir git_dir
87
89
  clone_repo
@@ -136,6 +136,7 @@ class OptParserInternal
136
136
 
137
137
  def ck_mandatory_option(option)
138
138
  return unless @options[option.to_sym].nil?
139
+
139
140
  raise_incorrect_syntax("option --#{option} not found")
140
141
  end
141
142
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitarro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.78
4
+ version: 0.1.79
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dario Maiocchi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-19 00:00:00.000000000 Z
11
+ date: 2018-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: english
@@ -168,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
168
  version: '0'
169
169
  requirements: []
170
170
  rubyforge_project:
171
- rubygems_version: 2.5.2.1
171
+ rubygems_version: 2.7.3
172
172
  signing_key:
173
173
  specification_version: 4
174
174
  summary: gitarro gem