selective-ruby-core 0.1.1-x86_64-linux → 0.1.3-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 +18 -12
- data/lib/bin/transport +0 -0
- data/lib/selective/ruby/core/controller.rb +43 -21
- 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: 61626d843514502b6ebb7bd829345d0a18bc76603fe7c2568838371321eeb3ae
|
4
|
+
data.tar.gz: 360dcffb94500fb62dcb6ce0ce5c9bce85a71247a3750f10a1edec5f1532458c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8886c9761492e0ee4fc892e2605c2aab1c7e508d2d1a04af7ea9d0d1c80b3d9a03244ed56e4587b36ff7695fc31697db8538ac7e11d241132a026dd04aaf91db
|
7
|
+
data.tar.gz: 779c4a1e9bf5057b2f89d0b4f991a7c149a29f4f70d7df85a4d362f4369cca4885ce42ba3e5837de8685828b47bab84bc1f1840bc942fbe55a5e0505cf14c7ee
|
data/lib/bin/build_env.sh
CHANGED
@@ -3,20 +3,24 @@
|
|
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
|
+
run_id=$GITHUB_RUN_ID
|
13
|
+
run_attempt=$GITHUB_RUN_ATTEMPT
|
12
14
|
commit_message=$(git log --format=%s -n 1 $sha)
|
13
15
|
else
|
14
|
-
platform
|
15
|
-
branch
|
16
|
-
pr_title
|
17
|
-
target_branch
|
18
|
-
actor
|
19
|
-
sha
|
16
|
+
platform=$SELECTIVE_PLATFORM
|
17
|
+
branch=$SELECTIVE_BRANCH
|
18
|
+
pr_title=$SELECTIVE_PR_TITLE
|
19
|
+
target_branch=$SELECTIVE_TARGET_BRANCH
|
20
|
+
actor=$SELECTIVE_ACTOR
|
21
|
+
sha=$SELECTIVE_SHA
|
22
|
+
run_id=$SELECTIVE_RUN_ID
|
23
|
+
run_attempt=$SELECTIVE_RUN_ATTEMPT
|
20
24
|
commit_message=$(git log --format=%s -n 1 $sha)
|
21
25
|
fi
|
22
26
|
|
@@ -29,6 +33,8 @@ cat <<EOF
|
|
29
33
|
"target_branch": "$target_branch",
|
30
34
|
"actor": "$actor",
|
31
35
|
"sha": "$sha",
|
36
|
+
"run_id": "$run_id",
|
37
|
+
"run_attempt": "$run_attempt",
|
32
38
|
"commit_message": "$commit_message"
|
33
39
|
}
|
34
40
|
EOF
|
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
|
@@ -90,13 +101,15 @@ module Selective
|
|
90
101
|
def transport_url
|
91
102
|
@transport_url ||= begin
|
92
103
|
api_key = ENV.fetch("SELECTIVE_API_KEY")
|
93
|
-
run_id = ENV.fetch("SELECTIVE_RUN_ID")
|
94
|
-
run_attempt = ENV.fetch("SELECTIVE_RUN_ATTEMPT", SecureRandom.uuid)
|
95
104
|
host = ENV.fetch("SELECTIVE_HOST", "wss://app.selective.ci")
|
96
105
|
|
97
106
|
# Validate that host is a valid websocket url(starts with ws:// or wss://)
|
98
107
|
raise "Invalid host: #{host}" unless host.match?(/^wss?:\/\//)
|
99
108
|
|
109
|
+
run_id = build_env.delete("run_id")
|
110
|
+
run_attempt = build_env.delete("run_attempt")
|
111
|
+
run_attempt = SecureRandom.uuid if run_attempt.nil? || run_attempt.empty?
|
112
|
+
|
100
113
|
params = {
|
101
114
|
"run_id" => run_id,
|
102
115
|
"run_attempt" => run_attempt,
|
@@ -111,8 +124,10 @@ module Selective
|
|
111
124
|
end
|
112
125
|
|
113
126
|
def build_env
|
114
|
-
|
115
|
-
|
127
|
+
@build_env ||= begin
|
128
|
+
result = `#{Pathname.new(__dir__) + BUILD_ENV_SCRIPT_PATH}`
|
129
|
+
JSON.parse(result)
|
130
|
+
end
|
116
131
|
end
|
117
132
|
|
118
133
|
def spawn_transport_process(url)
|
@@ -123,7 +138,6 @@ module Selective
|
|
123
138
|
# The get_transport script is not released with the gem, so this
|
124
139
|
# code is intended for development/CI purposes.
|
125
140
|
if !File.exist?(transport_path) && File.exist?(get_transport_path)
|
126
|
-
require "open3"
|
127
141
|
output, status = Open3.capture2e(get_transport_path)
|
128
142
|
if !status.success?
|
129
143
|
puts <<~TEXT
|
@@ -175,8 +189,8 @@ module Selective
|
|
175
189
|
|
176
190
|
def handle_command(response)
|
177
191
|
case response[:command]
|
178
|
-
when "
|
179
|
-
|
192
|
+
when "print_notice"
|
193
|
+
print_notice(response[:message])
|
180
194
|
when "test_manifest"
|
181
195
|
handle_test_manifest
|
182
196
|
when "run_test_cases"
|
@@ -189,10 +203,11 @@ module Selective
|
|
189
203
|
handle_print_message(response[:message])
|
190
204
|
when "close"
|
191
205
|
handle_close(response[:exit_status])
|
192
|
-
|
193
|
-
#
|
194
|
-
# cannot exit but we need to break the loop
|
206
|
+
# This return is here for the sake of test where
|
207
|
+
# we cannot exit but we need to break the loop
|
195
208
|
return false
|
209
|
+
else
|
210
|
+
raise "Unknown command received: #{response[:command]}" if debug?
|
196
211
|
end
|
197
212
|
|
198
213
|
true
|
@@ -207,10 +222,9 @@ module Selective
|
|
207
222
|
def handle_test_manifest
|
208
223
|
self.class.restore_reporting!
|
209
224
|
@logger.info("Sending Response: test_manifest")
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
}})
|
225
|
+
data = {test_cases: runner.manifest["examples"]}
|
226
|
+
data[:modified_test_files] = modified_test_files unless modified_test_files.nil?
|
227
|
+
write({type: "test_manifest", data: data})
|
214
228
|
end
|
215
229
|
|
216
230
|
def handle_run_test_cases(test_cases)
|
@@ -227,9 +241,17 @@ module Selective
|
|
227
241
|
end
|
228
242
|
|
229
243
|
def modified_test_files
|
230
|
-
|
231
|
-
|
232
|
-
|
244
|
+
@modified_test_files ||= begin
|
245
|
+
target_branch = build_env["target_branch"]
|
246
|
+
return [] if target_branch.nil? || target_branch.empty?
|
247
|
+
|
248
|
+
output, status = Open3.capture2e("git diff #{target_branch} --name-only")
|
249
|
+
|
250
|
+
if status.success?
|
251
|
+
output.split("\n").filter do |f|
|
252
|
+
f.match?(/^#{runner.base_test_path}/)
|
253
|
+
end
|
254
|
+
end
|
233
255
|
end
|
234
256
|
end
|
235
257
|
|
@@ -285,10 +307,10 @@ module Selective
|
|
285
307
|
TEXT
|
286
308
|
end
|
287
309
|
|
288
|
-
def
|
310
|
+
def print_notice(message)
|
289
311
|
puts_indented <<~TEXT
|
290
312
|
#{banner}
|
291
|
-
|
313
|
+
#{message}
|
292
314
|
TEXT
|
293
315
|
end
|
294
316
|
|
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.3
|
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-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: zeitwerk
|