selective-ruby-core 0.1.0-x86_64-linux → 0.1.2-x86_64-linux
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/Rakefile +0 -8
- data/lib/bin/build_env.sh +12 -12
- data/lib/bin/transport +0 -0
- 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 +4 -3
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/Rakefile
CHANGED
@@ -1,14 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "bundler/gem_tasks"
|
4
|
-
|
5
|
-
# Override the guard_clean task to be a no-op
|
6
|
-
Rake::Task["release:guard_clean"].clear
|
7
|
-
|
8
|
-
task "release:guard_clean" do
|
9
|
-
# Intentionally blank to skip the check
|
10
|
-
end
|
11
|
-
|
12
4
|
require "rspec/core/rake_task"
|
13
5
|
|
14
6
|
RSpec::Core::RakeTask.new(:spec)
|
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
|
|
data/lib/bin/transport
CHANGED
Binary file
|
@@ -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
|
@@ -47,7 +47,8 @@ files:
|
|
47
47
|
- lib/selective/ruby/core/named_pipe.rb
|
48
48
|
- lib/selective/ruby/core/version.rb
|
49
49
|
homepage: https://www.selective.ci
|
50
|
-
licenses:
|
50
|
+
licenses:
|
51
|
+
- MIT
|
51
52
|
metadata:
|
52
53
|
homepage_uri: https://www.selective.ci
|
53
54
|
source_code_uri: http://github.com/selectiveci/selective-ruby-core
|