selective-ruby-core 0.1.1-x86_64-linux → 0.1.2-x86_64-linux
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bin/build_env.sh +12 -12
- data/lib/selective/ruby/core/controller.rb +39 -19
- data/lib/selective/ruby/core/version.rb +1 -1
- data/lib/selective-ruby-core.rb +3 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14a8dd050ca8404ea8339e60ce70d6efe818729113d40b40773cc984846107e1
|
4
|
+
data.tar.gz: 53e9f422e0f7fb10fd28c3469c07a5a34010148cc6a08ca0f6800230dc864f6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07d4d6629a4737e2f4fd571a9be4dd586671f56275f41d6d34ed4390255ab1d9094c17ffffb1de0e02f7b10b140a7dcaa28457c8be6e44eebdce875bd47d2d7f
|
7
|
+
data.tar.gz: 38efb142fa8fb83b3b7836d1a9a6127c8063d1371b39a78fb0b4e3207fcbf1d81acb03f263596e28ff3dcb4bcc59119fdd75193742d8cd568216ed74f012112b
|
data/lib/bin/build_env.sh
CHANGED
@@ -3,20 +3,20 @@
|
|
3
3
|
# Detect the platform (only GitHub Actions in this case)
|
4
4
|
if [ -n "$GITHUB_ACTIONS" ]; then
|
5
5
|
# Get environment variables
|
6
|
-
platform=
|
7
|
-
branch
|
8
|
-
pr_title
|
9
|
-
target_branch
|
10
|
-
actor
|
11
|
-
sha
|
6
|
+
platform=github_actions
|
7
|
+
branch=${GITHUB_HEAD_REF:-$GITHUB_REF_NAME}
|
8
|
+
pr_title=$SELECTIVE_PR_TITLE
|
9
|
+
target_branch=${GITHUB_BASE_REF}
|
10
|
+
actor=$GITHUB_ACTOR
|
11
|
+
sha=$GITHUB_SHA
|
12
12
|
commit_message=$(git log --format=%s -n 1 $sha)
|
13
13
|
else
|
14
|
-
platform
|
15
|
-
branch
|
16
|
-
pr_title
|
17
|
-
target_branch
|
18
|
-
actor
|
19
|
-
sha
|
14
|
+
platform=$SELECTIVE_PLATFORM
|
15
|
+
branch=$SELECTIVE_BRANCH
|
16
|
+
pr_title=$SELECTIVE_PR_TITLE
|
17
|
+
target_branch=$SELECTIVE_TARGET_BRANCH
|
18
|
+
actor=$SELECTIVE_ACTOR
|
19
|
+
sha=$SELECTIVE_SHA
|
20
20
|
commit_message=$(git log --format=%s -n 1 $sha)
|
21
21
|
fi
|
22
22
|
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require "logger"
|
2
2
|
require "uri"
|
3
3
|
require "json"
|
4
|
+
require "fileutils"
|
5
|
+
require "open3"
|
4
6
|
|
5
7
|
module Selective
|
6
8
|
module Ruby
|
@@ -8,12 +10,12 @@ module Selective
|
|
8
10
|
class Controller
|
9
11
|
@@selective_suppress_reporting = false
|
10
12
|
|
11
|
-
def initialize(runner, debug
|
13
|
+
def initialize(runner, debug: false, log: false)
|
12
14
|
@debug = debug
|
13
15
|
@runner = runner
|
14
16
|
@retries = 0
|
15
17
|
@runner_id = ENV.fetch("SELECTIVE_RUNNER_ID", generate_runner_id)
|
16
|
-
@logger =
|
18
|
+
@logger = init_logger(log)
|
17
19
|
end
|
18
20
|
|
19
21
|
def start(reconnect: false)
|
@@ -52,6 +54,15 @@ module Selective
|
|
52
54
|
|
53
55
|
BUILD_ENV_SCRIPT_PATH = "../../../bin/build_env.sh".freeze
|
54
56
|
|
57
|
+
def init_logger(enabled)
|
58
|
+
if enabled
|
59
|
+
FileUtils.mkdir_p("log")
|
60
|
+
Logger.new("log/#{runner_id}.log")
|
61
|
+
else
|
62
|
+
Logger.new("/dev/null")
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
55
66
|
def run_main_loop
|
56
67
|
loop do
|
57
68
|
message = pipe.read
|
@@ -111,8 +122,10 @@ module Selective
|
|
111
122
|
end
|
112
123
|
|
113
124
|
def build_env
|
114
|
-
|
115
|
-
|
125
|
+
@build_env ||= begin
|
126
|
+
result = `#{Pathname.new(__dir__) + BUILD_ENV_SCRIPT_PATH}`
|
127
|
+
JSON.parse(result)
|
128
|
+
end
|
116
129
|
end
|
117
130
|
|
118
131
|
def spawn_transport_process(url)
|
@@ -123,7 +136,6 @@ module Selective
|
|
123
136
|
# The get_transport script is not released with the gem, so this
|
124
137
|
# code is intended for development/CI purposes.
|
125
138
|
if !File.exist?(transport_path) && File.exist?(get_transport_path)
|
126
|
-
require "open3"
|
127
139
|
output, status = Open3.capture2e(get_transport_path)
|
128
140
|
if !status.success?
|
129
141
|
puts <<~TEXT
|
@@ -175,8 +187,8 @@ module Selective
|
|
175
187
|
|
176
188
|
def handle_command(response)
|
177
189
|
case response[:command]
|
178
|
-
when "
|
179
|
-
|
190
|
+
when "print_notice"
|
191
|
+
print_notice(response[:message])
|
180
192
|
when "test_manifest"
|
181
193
|
handle_test_manifest
|
182
194
|
when "run_test_cases"
|
@@ -189,10 +201,11 @@ module Selective
|
|
189
201
|
handle_print_message(response[:message])
|
190
202
|
when "close"
|
191
203
|
handle_close(response[:exit_status])
|
192
|
-
|
193
|
-
#
|
194
|
-
# cannot exit but we need to break the loop
|
204
|
+
# This return is here for the sake of test where
|
205
|
+
# we cannot exit but we need to break the loop
|
195
206
|
return false
|
207
|
+
else
|
208
|
+
raise "Unknown command received: #{response[:command]}" if debug?
|
196
209
|
end
|
197
210
|
|
198
211
|
true
|
@@ -207,10 +220,9 @@ module Selective
|
|
207
220
|
def handle_test_manifest
|
208
221
|
self.class.restore_reporting!
|
209
222
|
@logger.info("Sending Response: test_manifest")
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
}})
|
223
|
+
data = {test_cases: runner.manifest["examples"]}
|
224
|
+
data[:modified_test_files] = modified_test_files unless modified_test_files.nil?
|
225
|
+
write({type: "test_manifest", data: data})
|
214
226
|
end
|
215
227
|
|
216
228
|
def handle_run_test_cases(test_cases)
|
@@ -227,9 +239,17 @@ module Selective
|
|
227
239
|
end
|
228
240
|
|
229
241
|
def modified_test_files
|
230
|
-
|
231
|
-
|
232
|
-
|
242
|
+
@modified_test_files ||= begin
|
243
|
+
target_branch = build_env["target_branch"]
|
244
|
+
return [] if target_branch.nil? || target_branch.empty?
|
245
|
+
|
246
|
+
output, status = Open3.capture2e("git diff #{target_branch} --name-only")
|
247
|
+
|
248
|
+
if status.success?
|
249
|
+
output.split("\n").filter do |f|
|
250
|
+
f.match?(/^#{runner.base_test_path}/)
|
251
|
+
end
|
252
|
+
end
|
233
253
|
end
|
234
254
|
end
|
235
255
|
|
@@ -285,10 +305,10 @@ module Selective
|
|
285
305
|
TEXT
|
286
306
|
end
|
287
307
|
|
288
|
-
def
|
308
|
+
def print_notice(message)
|
289
309
|
puts_indented <<~TEXT
|
290
310
|
#{banner}
|
291
|
-
|
311
|
+
#{message}
|
292
312
|
TEXT
|
293
313
|
end
|
294
314
|
|
data/lib/selective-ruby-core.rb
CHANGED
@@ -24,6 +24,7 @@ module Selective
|
|
24
24
|
class Init
|
25
25
|
def initialize(args)
|
26
26
|
@debug = !args.delete("--debug").nil?
|
27
|
+
@log = !args.delete("--log").nil?
|
27
28
|
@runner_name, @args, @command = parse_args(args)
|
28
29
|
require_runner
|
29
30
|
end
|
@@ -34,10 +35,10 @@ module Selective
|
|
34
35
|
|
35
36
|
private
|
36
37
|
|
37
|
-
attr_reader :debug, :runner_name, :args, :command
|
38
|
+
attr_reader :debug, :log, :runner_name, :args, :command
|
38
39
|
|
39
40
|
def run
|
40
|
-
Selective::Ruby::Core::Controller.new(runner, debug).send(command)
|
41
|
+
Selective::Ruby::Core::Controller.new(runner, debug: debug, log: log).send(command)
|
41
42
|
end
|
42
43
|
|
43
44
|
def parse_args(args)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selective-ruby-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: x86_64-linux
|
6
6
|
authors:
|
7
7
|
- Benjamin Wood
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-11-
|
12
|
+
date: 2023-11-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: zeitwerk
|