forking_test_runner 1.13.0 → 1.14.0

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
2
  SHA256:
3
- metadata.gz: 6d802108391cd0edbb4c9a9628ca56d447dbc07992f07cf8c1ffc1e61d770d5a
4
- data.tar.gz: cabbf4e263465b03e1bc47435b15ce5186c3478f409095f57d2197e49ca5e0e5
3
+ metadata.gz: e38d2bbf3dd185f3f8c912537be54a0068c98db3c45b17edda9a53a01ccd63d8
4
+ data.tar.gz: 63393812f02d8841d6ee56c000d9400e0062f405d7eb95eccbd766a93877e7d8
5
5
  SHA512:
6
- metadata.gz: 921396a5eec38e183f71ab4ba42340dad7c34f81d622af12ad9df156c639ce0c41d53ba0bcaff9c3e5efa6e52d5416a1676a018f6cacb1e4aa01fb820d338781
7
- data.tar.gz: c79fcf65d60af55227c194baf05c86275a1d6d2b1132fa14bd311480d982b490b40d991c02f8a14ad9a95f7578fbd92ee1b6f7a7e32108dc9a853c4d92594f90
6
+ metadata.gz: 1cf9450f7cf1fc7259bf5ec9a51f88141ce7e937aca94152577919117ff1fbec3311591f045b01864cd644b6ada45e71265656c91c067242da7c4195e987df27
7
+ data.tar.gz: ac79e34dab39a08445773c394b1912f7119605187cf2a09af670e94f54b2c2d786dc43a09968e50443881220d7d62f7bfcebf167521569b497d96603714962d5
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  # enable local usage from cloned repo
4
- root = File.expand_path("../..", __FILE__)
5
+ root = File.expand_path('..', __dir__)
5
6
  $LOAD_PATH << "#{root}/lib" if File.exist?("#{root}/Gemfile")
6
7
 
7
8
  require 'forking_test_runner'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ForkingTestRunner
2
3
  # read and delete options we support and pass the rest through to the underlying test runner (-v / --seed etc)
3
4
  module CLI
@@ -11,9 +12,9 @@ module ForkingTestRunner
11
12
  [
12
13
  :record_runtime,
13
14
  "--record-runtime=MODE",
14
- "\n Record test runtime:\n" <<
15
- " simple = write to disk at --runtime-log)\n" <<
16
- " amend = write from multiple remote workers via http://github.com/grosser/amend, needs TRAVIS_REPO_SLUG & TRAVIS_BUILD_NUMBER",
15
+ "\n Record test runtime:\n " \
16
+ "simple = write to disk at --runtime-log)\n " \
17
+ "amend = write from multiple remote workers via http://github.com/grosser/amend, needs TRAVIS_REPO_SLUG & TRAVIS_BUILD_NUMBER",
17
18
  String
18
19
  ],
19
20
  [:runtime_log, "--runtime-log=FILE", "File to store runtime log in or runtime.log", String],
@@ -22,7 +23,7 @@ module ForkingTestRunner
22
23
  [:groups, "--groups=NUM", "How many groups there are in total (use with --group)", Integer],
23
24
  [:version, "--version", "Show version"],
24
25
  [:help, "--help", "Show help"]
25
- ]
26
+ ].freeze
26
27
 
27
28
  class << self
28
29
  def parse_options(argv)
@@ -43,8 +44,8 @@ module ForkingTestRunner
43
44
  end
44
45
 
45
46
  # check if we can use merge_coverage
46
- if options.fetch(:merge_coverage)
47
- abort "merge_coverage does not work on ruby prior to 2.3" if RUBY_VERSION < "2.3.0"
47
+ if options.fetch(:merge_coverage) && "2.3.0" > RUBY_VERSION
48
+ abort "merge_coverage does not work on ruby prior to 2.3"
48
49
  end
49
50
 
50
51
  if !!options.fetch(:group) ^ !!options.fetch(:groups)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ForkingTestRunner
2
3
  module CoverageCapture
3
4
  # override Coverage.result to add pre-fork captured coverage
@@ -7,8 +8,7 @@ module ForkingTestRunner
7
8
  end
8
9
 
9
10
  # deprecated, single_cov checks for this, so leave it here
10
- def capture_coverage!
11
- end
11
+ def capture_coverage!; end
12
12
 
13
13
  class << self
14
14
  attr_accessor :coverage
@@ -49,7 +49,7 @@ module ForkingTestRunner
49
49
  def merge_lines_coverage(a, b)
50
50
  b.each_with_index.map do |b_count, i|
51
51
  a_count = a[i]
52
- (a_count.nil? && b_count.nil?) ? nil : a_count.to_i + b_count.to_i
52
+ a_count.nil? && b_count.nil? ? nil : a_count.to_i + b_count.to_i
53
53
  end
54
54
  end
55
55
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ForkingTestRunner
2
- VERSION = "1.13.0"
3
+ VERSION = "1.14.0"
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'benchmark'
2
3
  require 'optparse'
3
4
  require 'forking_test_runner/version'
@@ -11,7 +12,6 @@ module ForkingTestRunner
11
12
  CONVERAGE_REPORT_PREFIX = "coverage/fork-"
12
13
 
13
14
  class << self
14
-
15
15
  attr_accessor :before_fork_callbacks, :after_fork_callbacks
16
16
 
17
17
  def cli(argv)
@@ -42,19 +42,19 @@ module ForkingTestRunner
42
42
 
43
43
  # run all the tests
44
44
  results = with_lock do |lock|
45
- Parallel.map_with_index(test_groups, in_processes: parallel || 0) do |tests, env_index|
45
+ Parallel.map_with_index(test_groups, in_processes: parallel || 0) do |tests_group, env_index|
46
46
  if parallel
47
47
  ENV["TEST_ENV_NUMBER"] = (env_index == 0 ? '' : (env_index + 1).to_s) # NOTE: does not support first_is_1 option
48
48
  end
49
49
 
50
50
  reraise_clean_ar_error { load_test_env }
51
51
 
52
- tests.map do |file, expected|
52
+ tests_group.map do |file, expected|
53
53
  print_started file unless parallel
54
54
  result = [file, expected, *benchmark { run_test(file) }]
55
55
  sync_stdout lock do
56
56
  print_started file if parallel
57
- print_finished *result
57
+ print_finished(*result)
58
58
  end
59
59
  result
60
60
  end
@@ -64,9 +64,11 @@ module ForkingTestRunner
64
64
  unless @options.fetch(:quiet)
65
65
  # pretty print the results
66
66
  puts "\nResults:"
67
- puts results.
68
- sort_by { |_,_,_,r,_| r ? 0 : 1 }. # failures should be last so they are easy to find
69
- map { |f,_,_,r,_| "#{f}: #{r ? "OK" : "Fail"}"}
67
+ puts(
68
+ results
69
+ .sort_by { |_, _, _, r, _| r ? 0 : 1 } # failures should be last so they are easy to find
70
+ .map { |f, _, _, r, _| "#{f}: #{r ? "OK" : "Fail"}" }
71
+ )
70
72
  puts
71
73
  end
72
74
 
@@ -96,7 +98,7 @@ module ForkingTestRunner
96
98
 
97
99
  def with_lock(&block)
98
100
  return yield unless @options.fetch(:parallel)
99
- Tempfile.open"forking-test-runner-lock", &block
101
+ Tempfile.open "forking-test-runner-lock", &block
100
102
  end
101
103
 
102
104
  def sync_stdout(lock)
@@ -161,7 +163,7 @@ module ForkingTestRunner
161
163
  File.write(log, data)
162
164
  when 'amend'
163
165
  if id = ENV["BUILDKITE_JOB_ID"]
164
- slug = ENV.fetch("BUILDKITE_ORG_SLUG") + "-" + ENV.fetch("BUILDKITE_PIPELINE_SLUG")
166
+ slug = "#{ENV.fetch("BUILDKITE_ORG_SLUG")}-#{ENV.fetch("BUILDKITE_PIPELINE_SLUG")}"
165
167
  else
166
168
  slug = ENV.fetch("TRAVIS_REPO_SLUG").sub("/", "-")
167
169
  id = ENV.fetch("TRAVIS_BUILD_NUMBER")
@@ -212,7 +214,7 @@ module ForkingTestRunner
212
214
  e = begin
213
215
  yield
214
216
  nil
215
- rescue
217
+ rescue StandardError
216
218
  $!
217
219
  end
218
220
 
@@ -223,7 +225,7 @@ module ForkingTestRunner
223
225
  def load_test_helper
224
226
  disable_test_autorun
225
227
  require 'rspec/core' if @options.fetch(:rspec)
226
- helper = @options.fetch(:helper) || (@options.fetch(:rspec) ? "spec/spec_helper" : "test/test_helper")
228
+ helper = @options.fetch(:helper) || (@options.fetch(:rspec) ? "spec/spec_helper" : "test/test_helper")
227
229
  require "./#{helper}"
228
230
  end
229
231
 
@@ -268,7 +270,7 @@ module ForkingTestRunner
268
270
 
269
271
  wpipe.close
270
272
 
271
- buffer = ""
273
+ buffer = +""
272
274
 
273
275
  while ch = rpipe.read(1)
274
276
  buffer << ch
@@ -283,7 +285,11 @@ module ForkingTestRunner
283
285
  def preserve_tty
284
286
  was_tty = $stdout.tty?
285
287
  yield
286
- def $stdout.tty?; true; end if was_tty
288
+ if was_tty
289
+ def $stdout.tty?;
290
+ true;
291
+ end
292
+ end
287
293
  end
288
294
 
289
295
  def run_test(file)
@@ -317,7 +323,8 @@ module ForkingTestRunner
317
323
  def change_program_name_to(name)
318
324
  return yield if @options.fetch(:parallel)
319
325
  begin
320
- old, $0 = $0, name
326
+ old = $0
327
+ $0 = name
321
328
  yield
322
329
  ensure
323
330
  $0 = old
@@ -338,7 +345,7 @@ module ForkingTestRunner
338
345
  group = groups[group - 1] || raise("Group #{group} not found")
339
346
 
340
347
  # return tests with runtime
341
- tests = Hash[tests]
348
+ tests = tests.to_h
342
349
  group.map { |test| [test, (tests[test] if group_by == :runtime)] }
343
350
  end
344
351
 
@@ -354,7 +361,7 @@ module ForkingTestRunner
354
361
  end
355
362
  end
356
363
 
357
- def toggle_test_autorun(value, file=nil)
364
+ def toggle_test_autorun(value, file = nil)
358
365
  if @options.fetch(:rspec)
359
366
  if value
360
367
  exit(RSpec::Core::Runner.run([file] + ARGV))
@@ -391,7 +398,7 @@ module ForkingTestRunner
391
398
  File.unlink(report) # do not leave junk behind
392
399
  end
393
400
 
394
- data = JSON.pretty_generate(key => {"coverage" => coverage, "timestamp" => Time.now.to_i })
401
+ data = JSON.pretty_generate(key => { "coverage" => coverage, "timestamp" => Time.now.to_i })
395
402
  File.write(SingleCov.coverage_report, data)
396
403
 
397
404
  # make it not override our report when it finishes for main process
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forking_test_runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.0
4
+ version: 1.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-05 00:00:00.000000000 Z
11
+ date: 2024-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel_tests
@@ -39,21 +39,27 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rake
42
+ name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.3'
45
48
  - - ">="
46
49
  - !ruby/object:Gem::Version
47
- version: '0'
50
+ version: 2.3.27
48
51
  type: :development
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '2.3'
52
58
  - - ">="
53
59
  - !ruby/object:Gem::Version
54
- version: '0'
60
+ version: 2.3.27
55
61
  - !ruby/object:Gem::Dependency
56
- name: rspec
62
+ name: minitest
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - ">="
@@ -67,7 +73,7 @@ dependencies:
67
73
  - !ruby/object:Gem::Version
68
74
  version: '0'
69
75
  - !ruby/object:Gem::Dependency
70
- name: sqlite3
76
+ name: rake
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - ">="
@@ -81,7 +87,7 @@ dependencies:
81
87
  - !ruby/object:Gem::Version
82
88
  version: '0'
83
89
  - !ruby/object:Gem::Dependency
84
- name: minitest
90
+ name: rspec
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
93
  - - ">="
@@ -94,7 +100,35 @@ dependencies:
94
100
  - - ">="
95
101
  - !ruby/object:Gem::Version
96
102
  version: '0'
97
- description:
103
+ - !ruby/object:Gem::Dependency
104
+ name: rubocop
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 1.65.1
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: 1.65.1
117
+ - !ruby/object:Gem::Dependency
118
+ name: sqlite3
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: 1.6.0
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: 1.6.0
131
+ description:
98
132
  email: michael@grosser.it
99
133
  executables:
100
134
  - forking-test-runner
@@ -111,7 +145,7 @@ homepage: https://github.com/grosser/forking_test_runner
111
145
  licenses:
112
146
  - MIT
113
147
  metadata: {}
114
- post_install_message:
148
+ post_install_message:
115
149
  rdoc_options: []
116
150
  require_paths:
117
151
  - lib
@@ -119,15 +153,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
119
153
  requirements:
120
154
  - - ">="
121
155
  - !ruby/object:Gem::Version
122
- version: 2.5.0
156
+ version: 2.7.0
123
157
  required_rubygems_version: !ruby/object:Gem::Requirement
124
158
  requirements:
125
159
  - - ">="
126
160
  - !ruby/object:Gem::Version
127
161
  version: '0'
128
162
  requirements: []
129
- rubygems_version: 3.2.16
130
- signing_key:
163
+ rubygems_version: 3.4.10
164
+ signing_key:
131
165
  specification_version: 4
132
166
  summary: Run every test in a fork to avoid pollution and get clean output per test
133
167
  test_files: []