polyrun 2.2.9 → 3.0.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 +4 -4
- data/CHANGELOG.md +17 -8
- data/README.md +7 -6
- data/docs/SETUP_PROFILE.md +2 -1
- data/lib/polyrun/cli/ci_shard_run_command.rb +31 -0
- data/lib/polyrun/cli/default_run.rb +10 -3
- data/lib/polyrun/cli/help.rb +5 -3
- data/lib/polyrun/cli/run_shards_command.rb +17 -0
- data/lib/polyrun/cli.rb +5 -2
- data/lib/polyrun/coverage/collector.rb +21 -49
- data/lib/polyrun/coverage/collector_blob.rb +53 -0
- data/lib/polyrun/data/parallel_provisioning.rb +2 -2
- data/lib/polyrun/hooks/dsl.rb +6 -6
- data/lib/polyrun/{minitest.rb → minitest_support.rb} +4 -4
- data/lib/polyrun/partition/paths.rb +95 -48
- data/lib/polyrun/partition/suite.rb +10 -6
- data/lib/polyrun/quick/config.rb +56 -0
- data/lib/polyrun/quick/example_group.rb +49 -4
- data/lib/polyrun/quick/example_runner.rb +30 -7
- data/lib/polyrun/quick/matchers.rb +6 -3
- data/lib/polyrun/quick/matchers_predicates.rb +122 -0
- data/lib/polyrun/quick/reporter.rb +40 -6
- data/lib/polyrun/quick/runner.rb +30 -16
- data/lib/polyrun/reporting/rspec_failure_fragment_formatter.rb +1 -1
- data/lib/polyrun/reporting/rspec_junit.rb +2 -2
- data/lib/polyrun/{rspec → rspec_support}/active_record_timeout_recovery.rb +1 -1
- data/lib/polyrun/{rspec → rspec_support}/example_debug.rb +1 -1
- data/lib/polyrun/{rspec → rspec_support}/example_debug_instrumentation.rb +1 -1
- data/lib/polyrun/{rspec → rspec_support}/sharded_formatter_compat.rb +1 -1
- data/lib/polyrun/{rspec.rb → rspec_support.rb} +12 -12
- data/lib/polyrun/sus_support.rb +55 -0
- data/lib/polyrun/templates/POLYRUN.md +1 -1
- data/lib/polyrun/timing/rspec_example_formatter.rb +2 -2
- data/lib/polyrun/version.rb +1 -1
- data/lib/polyrun/worker_ping.rb +9 -6
- data/sig/polyrun/{minitest.rbs → minitest_support.rbs} +1 -1
- data/sig/polyrun/{rspec.rbs → rspec_support.rbs} +1 -1
- data/sig/polyrun/sus_support.rbs +7 -0
- metadata +14 -9
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
module Polyrun
|
|
2
2
|
module Quick
|
|
3
3
|
class Reporter
|
|
4
|
+
SLOW_THRESHOLD_SECONDS = 0.05
|
|
5
|
+
SLOWEST_LIMIT = 5
|
|
6
|
+
|
|
4
7
|
def initialize(out, err, verbose)
|
|
5
8
|
@out = out
|
|
6
9
|
@err = err
|
|
@@ -8,24 +11,28 @@ module Polyrun
|
|
|
8
11
|
@passed = 0
|
|
9
12
|
@failed = 0
|
|
10
13
|
@errors = 0
|
|
14
|
+
@timings = []
|
|
11
15
|
end
|
|
12
16
|
|
|
13
|
-
def pass(group, description)
|
|
17
|
+
def pass(group, description, duration_seconds: nil)
|
|
14
18
|
@passed += 1
|
|
19
|
+
record_timing(group, description, duration_seconds)
|
|
15
20
|
return unless @verbose
|
|
16
21
|
|
|
17
|
-
@out.puts " ok #{group} #{description}"
|
|
22
|
+
@out.puts " ok #{group} #{description}#{duration_suffix(duration_seconds)}"
|
|
18
23
|
end
|
|
19
24
|
|
|
20
|
-
def fail(group, description, exc)
|
|
25
|
+
def fail(group, description, exc, duration_seconds: nil)
|
|
21
26
|
@failed += 1
|
|
22
|
-
|
|
27
|
+
record_timing(group, description, duration_seconds)
|
|
28
|
+
@err.puts " FAIL #{group} #{description}#{duration_suffix(duration_seconds)}"
|
|
23
29
|
@err.puts " #{exc.message}"
|
|
24
30
|
end
|
|
25
31
|
|
|
26
|
-
def error(group, description, exc)
|
|
32
|
+
def error(group, description, exc, duration_seconds: nil)
|
|
27
33
|
@errors += 1
|
|
28
|
-
|
|
34
|
+
record_timing(group, description, duration_seconds)
|
|
35
|
+
@err.puts " ERROR #{group} #{description}#{duration_suffix(duration_seconds)}"
|
|
29
36
|
@err.puts " #{exc.class}: #{exc.message}"
|
|
30
37
|
loc = exc.backtrace&.first
|
|
31
38
|
@err.puts " #{loc}" if loc
|
|
@@ -35,8 +42,35 @@ module Polyrun
|
|
|
35
42
|
total = @passed + @failed + @errors
|
|
36
43
|
@out.puts
|
|
37
44
|
@out.puts "Polyrun::Quick: #{@passed} passed, #{@failed} failed, #{@errors} errors (#{total} examples)"
|
|
45
|
+
print_slowest!
|
|
38
46
|
(@failed + @errors).positive? ? 1 : 0
|
|
39
47
|
end
|
|
48
|
+
|
|
49
|
+
private
|
|
50
|
+
|
|
51
|
+
def record_timing(group, description, duration_seconds)
|
|
52
|
+
return if duration_seconds.nil?
|
|
53
|
+
|
|
54
|
+
@timings << ["#{group} #{description}".strip, duration_seconds.to_f]
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def duration_suffix(duration_seconds)
|
|
58
|
+
return "" if duration_seconds.nil?
|
|
59
|
+
|
|
60
|
+
format(" (%.3fs)", duration_seconds)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def print_slowest!
|
|
64
|
+
slow = @timings.select { |(_, sec)| sec >= SLOW_THRESHOLD_SECONDS }
|
|
65
|
+
.sort_by { |(_, sec)| -sec }
|
|
66
|
+
.first(SLOWEST_LIMIT)
|
|
67
|
+
return if slow.empty?
|
|
68
|
+
|
|
69
|
+
@out.puts "Slowest:"
|
|
70
|
+
slow.each do |label, sec|
|
|
71
|
+
@out.puts format(" %.3fs %s", sec, label)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
40
74
|
end
|
|
41
75
|
end
|
|
42
76
|
end
|
data/lib/polyrun/quick/runner.rb
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
# rubocop:disable Polyrun/FileLength -- quick runner +
|
|
1
|
+
# rubocop:disable Polyrun/FileLength -- quick runner + suite config + coverage wiring
|
|
2
2
|
require "pathname"
|
|
3
3
|
|
|
4
4
|
require_relative "assertions"
|
|
5
|
+
require_relative "config"
|
|
5
6
|
require_relative "errors"
|
|
6
7
|
require_relative "example_group"
|
|
7
8
|
require_relative "example_runner"
|
|
8
9
|
require_relative "reporter"
|
|
9
10
|
|
|
10
11
|
module Polyrun
|
|
11
|
-
# Micro test runner: nested +describe+, +it+ / +test+, +before+ / +after
|
|
12
|
-
# +expect().to+ matchers, optional +Polyrun::Quick.capybara
|
|
12
|
+
# Micro test runner: nested +describe+ / +with+, +it+ / +test+, +before+ / +after+ / +around+,
|
|
13
|
+
# +let+ / +let!+ / +subject+, +expect().to+ matchers, optional +Polyrun::Quick.capybara!+.
|
|
13
14
|
#
|
|
14
15
|
# Run: +polyrun quick+ or +polyrun quick spec/foo.rb+
|
|
16
|
+
# Optional suite file: +config/polyrun_quick.rb+ (+before_suite+, +after_suite+, +add_load_path+).
|
|
15
17
|
#
|
|
16
|
-
# Coverage: when +POLYRUN_COVERAGE=1+ or (+config/polyrun_coverage.yml+ and
|
|
17
|
-
# {Polyrun::Coverage::Rails} before loading quick files
|
|
18
|
+
# Coverage: when +POLYRUN_COVERAGE=1+, Covered-style +COVERAGE+, or (+config/polyrun_coverage.yml+ and
|
|
19
|
+
# +POLYRUN_QUICK_COVERAGE=1+), starts {Polyrun::Coverage::Rails} before loading quick files.
|
|
18
20
|
module Quick
|
|
19
21
|
module DSL
|
|
20
22
|
def describe(name, &block)
|
|
@@ -103,6 +105,10 @@ module Polyrun
|
|
|
103
105
|
|
|
104
106
|
def run(paths)
|
|
105
107
|
Quick.reset_capybara_flag!
|
|
108
|
+
config = Config.load!(root: Dir.pwd)
|
|
109
|
+
config.apply_load_paths!(root: Dir.pwd)
|
|
110
|
+
status = 2
|
|
111
|
+
suite_hooks = false
|
|
106
112
|
|
|
107
113
|
files = expand_paths(paths)
|
|
108
114
|
if files.empty?
|
|
@@ -110,18 +116,27 @@ module Polyrun
|
|
|
110
116
|
return 2
|
|
111
117
|
end
|
|
112
118
|
|
|
113
|
-
|
|
114
|
-
|
|
119
|
+
begin
|
|
120
|
+
config.run_before_suite!
|
|
121
|
+
suite_hooks = true
|
|
122
|
+
quick_start_coverage_if_configured!
|
|
123
|
+
quick_start_spec_quality_if_configured!
|
|
115
124
|
|
|
116
|
-
|
|
117
|
-
|
|
125
|
+
collector = load_quick_files!(files)
|
|
126
|
+
unless collector
|
|
127
|
+
status = 1
|
|
128
|
+
return 1
|
|
129
|
+
end
|
|
118
130
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
131
|
+
reporter = Reporter.new(@out, @err, @verbose)
|
|
132
|
+
run_examples!(collector, reporter)
|
|
133
|
+
status = reporter.summary
|
|
134
|
+
status
|
|
135
|
+
ensure
|
|
136
|
+
config.run_after_suite!(status) if suite_hooks
|
|
137
|
+
Quick.collector = nil
|
|
138
|
+
Quick.reset_capybara_flag!
|
|
139
|
+
end
|
|
125
140
|
end
|
|
126
141
|
|
|
127
142
|
def load_quick_files!(files)
|
|
@@ -200,7 +215,6 @@ module Polyrun
|
|
|
200
215
|
Runner.parallel_default_paths(Dir.pwd)
|
|
201
216
|
end
|
|
202
217
|
|
|
203
|
-
# Omit RSpec/Minitest files and common helpers so +polyrun quick+ with no args does not load normal suites.
|
|
204
218
|
def default_quick_exclude?(path, base)
|
|
205
219
|
Runner.quick_path_excluded?(path, base)
|
|
206
220
|
end
|
|
@@ -4,7 +4,7 @@ require "fileutils"
|
|
|
4
4
|
module Polyrun
|
|
5
5
|
module Reporting
|
|
6
6
|
# RSpec formatter: appends one JSON object per failed example to the shard fragment file.
|
|
7
|
-
# Enable via +Polyrun::
|
|
7
|
+
# Enable via +Polyrun::RSpecSupport.install_failure_fragments!+ and +POLYRUN_FAILURE_FRAGMENTS=1+ (set by run-shards --merge-failures).
|
|
8
8
|
#
|
|
9
9
|
# Output: +tmp/polyrun_failures/polyrun-failure-fragment-<workerN|shardM-workerN>.jsonl+
|
|
10
10
|
# (same basename rules as {Coverage::CollectorFragmentMeta}.)
|
|
@@ -21,8 +21,8 @@ module Polyrun
|
|
|
21
21
|
require "rspec/core"
|
|
22
22
|
require "rspec/core/formatters/json_formatter"
|
|
23
23
|
|
|
24
|
-
RSpec.configure do |config|
|
|
25
|
-
config.add_formatter RSpec::Core::Formatters::JsonFormatter, json_abs
|
|
24
|
+
::RSpec.configure do |config|
|
|
25
|
+
config.add_formatter ::RSpec::Core::Formatters::JsonFormatter, json_abs
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
at_exit do
|
|
@@ -3,7 +3,7 @@ require "timeout"
|
|
|
3
3
|
require_relative "example_debug_instrumentation"
|
|
4
4
|
|
|
5
5
|
module Polyrun
|
|
6
|
-
module
|
|
6
|
+
module RSpecSupport
|
|
7
7
|
# Per-example RSpec debugging for local investigation (SQL, TracePoint, timeouts).
|
|
8
8
|
#
|
|
9
9
|
# +POLYRUN_EXAMPLE_DEBUG=1+ enables print helpers, Rails logging, and disables per-example timeouts.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
require_relative "../polyrun"
|
|
2
2
|
|
|
3
3
|
module Polyrun
|
|
4
|
-
# Optional RSpec wiring (require +polyrun/
|
|
5
|
-
module
|
|
4
|
+
# Optional RSpec wiring (require +polyrun/rspec_support+ explicitly).
|
|
5
|
+
module RSpecSupport
|
|
6
6
|
module_function
|
|
7
7
|
|
|
8
8
|
# Registers +before(:suite)+ to run {Data::ParallelProvisioning.run_suite_hooks!}.
|
|
@@ -74,31 +74,31 @@ module Polyrun
|
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
def install_example_debug!(rspec_config: nil)
|
|
77
|
-
require_relative "
|
|
78
|
-
Polyrun::
|
|
77
|
+
require_relative "rspec_support/example_debug"
|
|
78
|
+
Polyrun::RSpecSupport::ExampleDebug.install!(rspec_config: rspec_config || fetch_rspec_configuration!)
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
def install_example_timeout!(rspec_config: nil, seconds: ENV.fetch("RSPEC_EXAMPLE_TIMEOUT_SEC", "30").to_f)
|
|
82
|
-
require_relative "
|
|
83
|
-
Polyrun::
|
|
82
|
+
require_relative "rspec_support/example_debug"
|
|
83
|
+
Polyrun::RSpecSupport::ExampleDebug.install_example_timeout!(
|
|
84
84
|
rspec_config || fetch_rspec_configuration!,
|
|
85
85
|
seconds: seconds
|
|
86
86
|
)
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
def install_example_rails_logging!(rspec_config: nil)
|
|
90
|
-
require_relative "
|
|
91
|
-
Polyrun::
|
|
90
|
+
require_relative "rspec_support/example_debug"
|
|
91
|
+
Polyrun::RSpecSupport::ExampleDebug.install_rails_logging!(rspec_config: rspec_config || fetch_rspec_configuration!)
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
def install_example_prosopite!(rspec_config: nil)
|
|
95
|
-
require_relative "
|
|
96
|
-
Polyrun::
|
|
95
|
+
require_relative "rspec_support/example_debug"
|
|
96
|
+
Polyrun::RSpecSupport::ExampleDebug.install_prosopite!(rspec_config: rspec_config || fetch_rspec_configuration!)
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
def install_sharded_formatter_compat!(rspec_config: nil)
|
|
100
|
-
require_relative "
|
|
101
|
-
Polyrun::
|
|
100
|
+
require_relative "rspec_support/sharded_formatter_compat"
|
|
101
|
+
Polyrun::RSpecSupport::ShardedFormatterCompat.install!(rspec_config: rspec_config || fetch_rspec_configuration!)
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
def fetch_rspec_configuration!
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require_relative "../polyrun"
|
|
2
|
+
|
|
3
|
+
module Polyrun
|
|
4
|
+
# Optional Sus-oriented wiring (require +polyrun/sus_support+ explicitly).
|
|
5
|
+
#
|
|
6
|
+
# Does not load the +sus+ gem. Call installers from +config/sus.rb+ after Sus is available
|
|
7
|
+
# when a hook needs +Sus::Config+.
|
|
8
|
+
module SusSupport
|
|
9
|
+
module WorkerPingConfigHook
|
|
10
|
+
def before_tests(assertions, output: self.output)
|
|
11
|
+
Polyrun::WorkerPing.ping!(location: "sus:before_tests")
|
|
12
|
+
super
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def after_tests(assertions, output: self.output)
|
|
16
|
+
super
|
|
17
|
+
Polyrun::WorkerPing.ping!(location: "sus:after_tests")
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
module_function
|
|
22
|
+
|
|
23
|
+
# Runs {Data::ParallelProvisioning.run_suite_hooks!} (serial vs shard worker hooks).
|
|
24
|
+
def install_parallel_provisioning!
|
|
25
|
+
Polyrun::Data::ParallelProvisioning.run_suite_hooks!
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Start {Coverage::Collector} when Polyrun or Covered coverage env is on.
|
|
29
|
+
# Prefer this for shard fragment merge. If Covered::Sus is already included on +Sus::Config+,
|
|
30
|
+
# skip starting the collector so +Coverage.start+ is not contested in one process.
|
|
31
|
+
def install_coverage!(root: Dir.pwd, **kwargs)
|
|
32
|
+
require_relative "coverage/collector"
|
|
33
|
+
return unless Polyrun::Coverage::Collector.coverage_requested_for_quick?(root)
|
|
34
|
+
|
|
35
|
+
if defined?(::Covered::Sus) && defined?(::Sus::Config) && ::Sus::Config.ancestors.include?(::Covered::Sus)
|
|
36
|
+
Polyrun::Log.warn "polyrun sus_support: install_coverage! skipped (Covered::Sus already on Sus::Config; use one coverage collector per process)"
|
|
37
|
+
return
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
Polyrun::Coverage::Collector.start!(root: root, **kwargs)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Ping at Sus +before_tests+ / +after_tests+ when +Sus::Config+ is defined.
|
|
44
|
+
def install_worker_ping!
|
|
45
|
+
require_relative "worker_ping"
|
|
46
|
+
unless defined?(::Sus::Config)
|
|
47
|
+
Polyrun::Log.warn "polyrun sus_support: install_worker_ping! skipped (load Sus before calling)"
|
|
48
|
+
return
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
::Sus::Config.prepend(WorkerPingConfigHook)
|
|
52
|
+
Polyrun::WorkerPing.ensure_interval_ping_thread!
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -42,7 +42,7 @@ Do not combine Model A and Model B in one workflow without a documented reason (
|
|
|
42
42
|
|
|
43
43
|
## Spec quality (optional)
|
|
44
44
|
|
|
45
|
-
- `POLYRUN_SPEC_QUALITY=1` and `Polyrun::
|
|
45
|
+
- `POLYRUN_SPEC_QUALITY=1` and `Polyrun::RSpecSupport.install_spec_quality!` in `spec_helper` (requires coverage enabled for line deltas).
|
|
46
46
|
- `config/polyrun_spec_quality.yml` — thresholds and CI gates (`polyrun init --profile spec-quality`).
|
|
47
47
|
- Parallel: `run-shards --merge-spec-quality` → `coverage/polyrun-spec-quality.json` → `report-spec-quality`.
|
|
48
48
|
|
|
@@ -10,7 +10,7 @@ module Polyrun
|
|
|
10
10
|
# Use after RSpec is loaded:
|
|
11
11
|
# require "polyrun/timing/rspec_example_formatter"
|
|
12
12
|
# RSpec.configure { |c| c.add_formatter Polyrun::Timing::RSpecExampleFormatter }
|
|
13
|
-
# Or {Polyrun::
|
|
13
|
+
# Or {Polyrun::RSpecSupport.install_example_timing!} (+output_path:+ avoids touching +ENV+).
|
|
14
14
|
#
|
|
15
15
|
# Default output path: +ENV["POLYRUN_EXAMPLE_TIMING_OUT"]+ if set, else +polyrun_timing_examples.json+.
|
|
16
16
|
class RSpecExampleFormatter
|
|
@@ -44,7 +44,7 @@ module Polyrun
|
|
|
44
44
|
File.write(timing_output_path, JSON.pretty_generate(@times))
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
# Override in a subclass from {Polyrun::
|
|
47
|
+
# Override in a subclass from {Polyrun::RSpecSupport.install_example_timing!(output_path: ...)}.
|
|
48
48
|
def timing_output_path
|
|
49
49
|
ENV["POLYRUN_EXAMPLE_TIMING_OUT"] || "polyrun_timing_examples.json"
|
|
50
50
|
end
|
data/lib/polyrun/version.rb
CHANGED
data/lib/polyrun/worker_ping.rb
CHANGED
|
@@ -7,11 +7,11 @@ module Polyrun
|
|
|
7
7
|
#
|
|
8
8
|
# Prefer framework installs (call from helpers *after* loading the runner):
|
|
9
9
|
#
|
|
10
|
-
# require "polyrun/
|
|
11
|
-
# Polyrun::
|
|
10
|
+
# require "polyrun/rspec_support"
|
|
11
|
+
# Polyrun::RSpecSupport.install_worker_ping!
|
|
12
12
|
#
|
|
13
|
-
# require "polyrun/
|
|
14
|
-
# Polyrun::
|
|
13
|
+
# require "polyrun/minitest_support"
|
|
14
|
+
# Polyrun::MinitestSupport.install_worker_ping!
|
|
15
15
|
#
|
|
16
16
|
# Polyrun Quick runs +ping!+ automatically when requiring the Quick stack.
|
|
17
17
|
#
|
|
@@ -19,6 +19,10 @@ module Polyrun
|
|
|
19
19
|
# {#ensure_interval_ping_thread!} once at worker startup if you rely on periodic pings without per-example {#ping!};
|
|
20
20
|
# installers call this so the env toggle works out of the box.
|
|
21
21
|
module WorkerPing
|
|
22
|
+
# Load-time constant: `||=` can create two mutexes.
|
|
23
|
+
INTERVAL_PING_MX = Mutex.new
|
|
24
|
+
private_constant :INTERVAL_PING_MX
|
|
25
|
+
|
|
22
26
|
class << self
|
|
23
27
|
def ping!(location: nil)
|
|
24
28
|
path = ping_file_path
|
|
@@ -46,8 +50,7 @@ module Polyrun
|
|
|
46
50
|
path = ping_file_path
|
|
47
51
|
return if path.empty?
|
|
48
52
|
|
|
49
|
-
|
|
50
|
-
@interval_ping_mx.synchronize do
|
|
53
|
+
INTERVAL_PING_MX.synchronize do
|
|
51
54
|
return if @interval_ping_started
|
|
52
55
|
|
|
53
56
|
raw = ENV["POLYRUN_WORKER_PING_INTERVAL_SEC"].to_s.strip
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: polyrun
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrei Makarov
|
|
@@ -261,6 +261,7 @@ files:
|
|
|
261
261
|
- lib/polyrun/config/suite.rb
|
|
262
262
|
- lib/polyrun/coverage/cobertura_zero_lines.rb
|
|
263
263
|
- lib/polyrun/coverage/collector.rb
|
|
264
|
+
- lib/polyrun/coverage/collector_blob.rb
|
|
264
265
|
- lib/polyrun/coverage/collector_finish.rb
|
|
265
266
|
- lib/polyrun/coverage/collector_fragment_meta.rb
|
|
266
267
|
- lib/polyrun/coverage/config_resolve.rb
|
|
@@ -311,7 +312,7 @@ files:
|
|
|
311
312
|
- lib/polyrun/hooks/worker_runner.rb
|
|
312
313
|
- lib/polyrun/hooks/worker_shell.rb
|
|
313
314
|
- lib/polyrun/log.rb
|
|
314
|
-
- lib/polyrun/
|
|
315
|
+
- lib/polyrun/minitest_support.rb
|
|
315
316
|
- lib/polyrun/partition/constraints.rb
|
|
316
317
|
- lib/polyrun/partition/hrw.rb
|
|
317
318
|
- lib/polyrun/partition/min_heap.rb
|
|
@@ -335,10 +336,12 @@ files:
|
|
|
335
336
|
- lib/polyrun/queue/worker_loop.rb
|
|
336
337
|
- lib/polyrun/quick.rb
|
|
337
338
|
- lib/polyrun/quick/assertions.rb
|
|
339
|
+
- lib/polyrun/quick/config.rb
|
|
338
340
|
- lib/polyrun/quick/errors.rb
|
|
339
341
|
- lib/polyrun/quick/example_group.rb
|
|
340
342
|
- lib/polyrun/quick/example_runner.rb
|
|
341
343
|
- lib/polyrun/quick/matchers.rb
|
|
344
|
+
- lib/polyrun/quick/matchers_predicates.rb
|
|
342
345
|
- lib/polyrun/quick/reporter.rb
|
|
343
346
|
- lib/polyrun/quick/runner.rb
|
|
344
347
|
- lib/polyrun/railtie.rb
|
|
@@ -348,11 +351,11 @@ files:
|
|
|
348
351
|
- lib/polyrun/reporting/junit_report.rb
|
|
349
352
|
- lib/polyrun/reporting/rspec_failure_fragment_formatter.rb
|
|
350
353
|
- lib/polyrun/reporting/rspec_junit.rb
|
|
351
|
-
- lib/polyrun/
|
|
352
|
-
- lib/polyrun/
|
|
353
|
-
- lib/polyrun/
|
|
354
|
-
- lib/polyrun/
|
|
355
|
-
- lib/polyrun/
|
|
354
|
+
- lib/polyrun/rspec_support.rb
|
|
355
|
+
- lib/polyrun/rspec_support/active_record_timeout_recovery.rb
|
|
356
|
+
- lib/polyrun/rspec_support/example_debug.rb
|
|
357
|
+
- lib/polyrun/rspec_support/example_debug_instrumentation.rb
|
|
358
|
+
- lib/polyrun/rspec_support/sharded_formatter_compat.rb
|
|
356
359
|
- lib/polyrun/spec_quality.rb
|
|
357
360
|
- lib/polyrun/spec_quality/config.rb
|
|
358
361
|
- lib/polyrun/spec_quality/fragment.rb
|
|
@@ -363,6 +366,7 @@ files:
|
|
|
363
366
|
- lib/polyrun/spec_quality/report.rb
|
|
364
367
|
- lib/polyrun/spec_quality/rspec_hook.rb
|
|
365
368
|
- lib/polyrun/spec_quality/sql_counter.rb
|
|
369
|
+
- lib/polyrun/sus_support.rb
|
|
366
370
|
- lib/polyrun/templates/POLYRUN.md
|
|
367
371
|
- lib/polyrun/templates/ci_matrix.polyrun.yml
|
|
368
372
|
- lib/polyrun/templates/minimal_gem.polyrun.yml
|
|
@@ -385,9 +389,10 @@ files:
|
|
|
385
389
|
- sig/polyrun/config.rbs
|
|
386
390
|
- sig/polyrun/debug.rbs
|
|
387
391
|
- sig/polyrun/log.rbs
|
|
388
|
-
- sig/polyrun/
|
|
392
|
+
- sig/polyrun/minitest_support.rbs
|
|
389
393
|
- sig/polyrun/quick.rbs
|
|
390
|
-
- sig/polyrun/
|
|
394
|
+
- sig/polyrun/rspec_support.rbs
|
|
395
|
+
- sig/polyrun/sus_support.rbs
|
|
391
396
|
- sig/polyrun/worker_output.rbs
|
|
392
397
|
- sig/polyrun/worker_ping.rbs
|
|
393
398
|
homepage: https://github.com/amkisko/polyrun.rb
|