selective-ruby-core 0.1.0-aarch64-linux → 0.1.2-aarch64-linux

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a0e4dc18c3cb6d8d0b4821b8ff26bcb0082a3a501593493207d99dd9814305c
4
- data.tar.gz: 2791a6864d2be9e577d0e5a00600df3f5da2d28f9a3207e64ed1bfddfa7129a1
3
+ metadata.gz: f46c8813512297c86dcc7d42a197c19c69261610793c6476b0ef863e94eac062
4
+ data.tar.gz: 59b7700e822f4810a468013ac74701976bcdc09426b718b35bc4350fdde06f14
5
5
  SHA512:
6
- metadata.gz: d8ae66cad83d5e643f5ae882b30424bd06a8c711dfd22b76d805f7f3c610c734901ae7d3adf68c696f07c9a0451b14fbdee3f760945a9775a160a1e5ad199be3
7
- data.tar.gz: 1d2e7be21539b9fcdccfa23e093892723aa7fedccc8c6d89128fc9d9eff5a34522cd2f1c3e3d4c94ab569fe675f85a6c670488dac11660b4c8a72fd4b088f2f1
6
+ metadata.gz: 87c2116863c1db55e887569178d8c5b109ee4c50fd9b64413410e9a274da99999ff0756da57b22d80a9ab019761fedc6d53231f878d5eca3f4a52ef1b9b5385f
7
+ data.tar.gz: 7e78f5ee5c42ed2d92cb76a2a38225703b3d13d8cb4b2439b117baaf5319933c94139634cde9fde5bab49fbac50b9c369916397f0cdf9ca2005da9a458013c06
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="github_actions"
7
- branch="${GITHUB_HEAD_REF:-$GITHUB_REF_NAME}"
8
- pr_title="$PR_TITLE"
9
- target_branch="${GITHUB_BASE_REF}"
10
- actor="$GITHUB_ACTOR"
11
- sha="$GITHUB_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="$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"
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 = false)
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 = Logger.new("log/#{runner_id}.log")
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
- result = `#{Pathname.new(__dir__) + BUILD_ENV_SCRIPT_PATH}`
115
- JSON.parse(result)
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 "init"
179
- print_init(response[:runner_id])
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
- # This is here for the sake of test where we
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
- write({type: "test_manifest", data: {
211
- test_cases: runner.manifest["examples"],
212
- modified_test_files: modified_test_files
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
- # Todo: This should find files changed in the current branch
231
- `git diff --name-only`.split("\n").filter do |f|
232
- f.match?(/^#{runner.base_test_path}/)
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 print_init(runner_id)
308
+ def print_notice(message)
289
309
  puts_indented <<~TEXT
290
310
  #{banner}
291
- Runner ID: #{runner_id.gsub("selgen-", "")}
311
+ #{message}
292
312
  TEXT
293
313
  end
294
314
 
@@ -3,7 +3,7 @@
3
3
  module Selective
4
4
  module Ruby
5
5
  module Core
6
- VERSION = "0.1.0"
6
+ VERSION = "0.1.2"
7
7
  end
8
8
  end
9
9
  end
@@ -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.0
4
+ version: 0.1.2
5
5
  platform: aarch64-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-03 00:00:00.000000000 Z
12
+ date: 2023-11-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: zeitwerk