Hello community,
here is the log from the commit of package rubygem-parallel_tests for
openSUSE:Factory checked in at 2020-10-03 18:51:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-parallel_tests (Old)
and /work/SRC/openSUSE:Factory/.rubygem-parallel_tests.new.4249 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-parallel_tests"
Sat Oct 3 18:51:37 2020 rev:9 rq:838063 version:3.3.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/rubygem-parallel_tests/rubygem-parallel_tests.changes
2020-05-11 13:34:36.632269447 +0200
+++
/work/SRC/openSUSE:Factory/.rubygem-parallel_tests.new.4249/rubygem-parallel_tests.changes
2020-10-03 18:51:37.513223420 +0200
@@ -1,0 +2,6 @@
+Fri Sep 25 14:37:29 UTC 2020 - Stephan Kulow <[email protected]>
+
+updated to version 3.3.0
+ no changelog found
+
+-------------------------------------------------------------------
Old:
----
parallel_tests-2.32.0.gem
New:
----
parallel_tests-3.3.0.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-parallel_tests.spec ++++++
--- /var/tmp/diff_new_pack.x8KA7l/_old 2020-10-03 18:51:38.173223859 +0200
+++ /var/tmp/diff_new_pack.x8KA7l/_new 2020-10-03 18:51:38.177223862 +0200
@@ -24,12 +24,12 @@
#
Name: rubygem-parallel_tests
-Version: 2.32.0
+Version: 3.3.0
Release: 0
%define mod_name parallel_tests
%define mod_full_name %{mod_name}-%{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-BuildRequires: %{ruby >= 2.2.0}
+BuildRequires: %{ruby >= 2.4.0}
BuildRequires: %{rubygem gem2rpm}
BuildRequires: ruby-macros >= 5
BuildRequires: update-alternatives
++++++ parallel_tests-2.32.0.gem -> parallel_tests-3.3.0.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Readme.md new/Readme.md
--- old/Readme.md 2020-03-15 20:52:21.000000000 +0100
+++ new/Readme.md 2020-09-16 21:22:44.000000000 +0200
@@ -82,6 +82,8 @@
===================
```Ruby
+require "parallel_tests"
+
# preparation:
# affected by race-condition: first process may boot slower than the second
# either sleep a bit or use a lock for example File.lock
@@ -97,7 +99,6 @@
undo_something
end
end
-
```
Even test group run-times
@@ -192,7 +193,6 @@
Options are:
<!-- copy output from bundle exec ./bin/parallel_test -h -->
-
-n [PROCESSES] How many processes to use, default:
available CPUs
-p, --pattern [PATTERN] run tests matching this regex pattern
--exclude-pattern [PATTERN] exclude tests matching this regex pattern
@@ -205,7 +205,9 @@
default - runtime when runtime log is filled otherwise filesize
-m, --multiply-processes [FLOAT] use given number as a multiplier of
processes to run
-s, --single [PATTERN] Run all matching files in the same process
- -i, --isolate Do not run any other tests in the group
used by --single(-s)
+ -i, --isolate Do not run any other tests in the group
used by --single(-s).
+ Automatically turned on if --isolate-n is
set above 0.
+ --isolate-n Number of processes for isolated groups.
Default to 1 when --isolate is on.
--only-group INT[, INT]
-e, --exec [COMMAND] execute this code parallel and with
ENV['TEST_ENV_NUMBER']
-o, --test-options '[OPTIONS]' execute test commands with those options
@@ -222,12 +224,14 @@
--ignore-tags [PATTERN] When counting steps ignore scenarios with
tags that match this pattern
--nice execute test commands with low priority.
--runtime-log [PATH] Location of previously recorded test
runtimes
- --allowed-missing Allowed percentage of missing runtimes
(default = 50)
+ --allowed-missing [INT] Allowed percentage of missing runtimes
(default = 50)
--unknown-runtime [FLOAT] Use given number as unknown runtime
(otherwise use average time)
+ --first-is-1 Use "1" as TEST_ENV_NUMBER to not reuse
the default test environment
+ --fail-fast Stop all groups when one group fails
(best used with --test-options '--fail-fast' if supported
--verbose Print debug output
- --verbose-process-command Print the command that will be executed
by each process before it begins
- --verbose-rerun-command After a process fails, print the command
executed by that process
- --quiet Print only test output
+ --verbose-process-command Displays only the command that will be
executed by each process
+ --verbose-rerun-command When there are failures, displays the
command executed by each process that failed
+ --quiet Print only tests output
-v, --version Show Version
-h, --help Show this.
@@ -257,7 +261,7 @@
- Use [rspec-retry](https://github.com/NoRedInk/rspec-retry) (not
rspec-rerun) to rerun failed tests.
- [JUnit formatter
configuration](https://github.com/grosser/parallel_tests/wiki#with-rspec_junit_formatter----by-jgarber)
- Use [parallel_split_test](https://github.com/grosser/parallel_split_test)
to run multiple scenarios in a single spec file, concurrently.
(`parallel_tests` [works at the file-level and intends to stay that
way](https://github.com/grosser/parallel_tests/issues/747#issuecomment-580216980))
-
+
### Cucumber
- Add a `parallel: foo` profile to your `config/cucumber.yml` and it will be
used to run parallel tests
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/parallel_tests/cli.rb
new/lib/parallel_tests/cli.rb
--- old/lib/parallel_tests/cli.rb 2020-03-15 20:52:21.000000000 +0100
+++ new/lib/parallel_tests/cli.rb 2020-09-16 21:22:44.000000000 +0200
@@ -42,9 +42,10 @@
Tempfile.open 'parallel_tests-lock' do |lock|
ParallelTests.with_pid_file do
simulate_output_for_ci options[:serialize_stdout] do
- Parallel.map(items, :in_threads => num_processes) do |item|
+ Parallel.map(items, in_threads: num_processes) do |item|
result = yield(item)
reprint_output(result, lock.path) if options[:serialize_stdout]
+ ParallelTests.stop_all_processes if options[:fail_fast] &&
result[:exit_status] != 0
result
end
end
@@ -191,6 +192,12 @@
options[:isolate] = true
end
+ opts.on("--isolate-n [PROCESSES]",
+ Integer,
+ "Use 'isolate' singles with number of processes, default: 1.") do
|n|
+ options[:isolate_count] = n
+ end
+
opts.on("--only-group INT[, INT]", Array) { |groups|
options[:only_group] = groups.map(&:to_i) }
opts.on("-e", "--exec [COMMAND]", "execute this code parallel and with
ENV['TEST_ENV_NUMBER']") { |path| options[:execute] = path }
@@ -220,6 +227,7 @@
opts.on("--allowed-missing [INT]", Integer, "Allowed percentage of
missing runtimes (default = 50)") { |percent| options[:allowed_missing_percent]
= percent }
opts.on("--unknown-runtime [FLOAT]", Float, "Use given number as
unknown runtime (otherwise use average time)") { |time|
options[:unknown_runtime] = time }
opts.on("--first-is-1", "Use \"1\" as TEST_ENV_NUMBER to not reuse the
default test environment") { options[:first_is_1] = true }
+ opts.on("--fail-fast", "Stop all groups when one group fails (best
used with --test-options '--fail-fast' if supported") { options[:fail_fast] =
true }
opts.on("--verbose", "Print debug output") { options[:verbose] = true }
opts.on("--verbose-process-command", "Displays only the command that
will be executed by each process") { options[:verbose_process_command] = true }
opts.on("--verbose-rerun-command", "When there are failures, displays
the command executed by each process that failed") {
options[:verbose_rerun_command] = true }
@@ -316,9 +324,8 @@
end
def final_fail_message
- fail_message = "#{@runner.name}s Failed"
+ fail_message = "Tests Failed"
fail_message = "\e[31m#{fail_message}\e[0m" if use_colors?
-
fail_message
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/parallel_tests/cucumber/features_with_steps.rb
new/lib/parallel_tests/cucumber/features_with_steps.rb
--- old/lib/parallel_tests/cucumber/features_with_steps.rb 1970-01-01
01:00:00.000000000 +0100
+++ new/lib/parallel_tests/cucumber/features_with_steps.rb 2020-09-16
21:22:44.000000000 +0200
@@ -0,0 +1,31 @@
+begin
+ gem "cuke_modeler", "~> 3.0"
+ require 'cuke_modeler'
+rescue LoadError
+ raise 'Grouping by number of cucumber steps requires the `cuke_modeler`
modeler gem with requirement `~> 3.0`. Add `gem "cuke_modeler", "~> 3.0"` to
your `Gemfile`, run `bundle install` and try again.'
+end
+
+module ParallelTests
+ module Cucumber
+ class FeaturesWithSteps
+ class << self
+ def all(tests, options)
+ ignore_tag_pattern = options[:ignore_tag_pattern].nil? ? nil :
Regexp.compile(options[:ignore_tag_pattern])
+ # format of hash will be FILENAME => NUM_STEPS
+ steps_per_file = tests.each_with_object({}) do |file,steps|
+ feature = ::CukeModeler::FeatureFile.new(file).feature
+
+ # skip feature if it matches tag regex
+ next if feature.tags.grep(ignore_tag_pattern).any?
+
+ # count the number of steps in the file
+ # will only include a feature if the regex does not match
+ all_steps = feature.scenarios.map{|a| a.steps.count if
a.tags.grep(ignore_tag_pattern).empty? }.compact
+ steps[file] = all_steps.inject(0,:+)
+ end
+ steps_per_file.sort_by { |_, value| -value }
+ end
+ end
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/parallel_tests/cucumber/scenario_line_logger.rb
new/lib/parallel_tests/cucumber/scenario_line_logger.rb
--- old/lib/parallel_tests/cucumber/scenario_line_logger.rb 2020-03-15
20:52:21.000000000 +0100
+++ new/lib/parallel_tests/cucumber/scenario_line_logger.rb 2020-09-16
21:22:44.000000000 +0200
@@ -1,37 +1,33 @@
-require 'cucumber/tag_expressions/parser'
-require 'cucumber/core/gherkin/tag_expression'
-
module ParallelTests
module Cucumber
module Formatters
class ScenarioLineLogger
attr_reader :scenarios
- def initialize(tag_expression =
::Cucumber::Core::Gherkin::TagExpression.new([]))
+ def initialize(tag_expression = nil)
@scenarios = []
@tag_expression = tag_expression
end
def visit_feature_element(uri, feature_element, feature_tags,
line_numbers: [])
- scenario_tags = feature_element[:tags].map { |tag| tag[:name] }
+ scenario_tags = feature_element.tags.map { |tag| tag.name }
scenario_tags = feature_tags + scenario_tags
- if feature_element[:examples].nil? # :Scenario
- test_line = feature_element[:location][:line]
+ if feature_element.is_a?(CukeModeler::Scenario) # :Scenario
+ test_line = feature_element.source_line
# We don't accept the feature_element if the current tags are not
valid
- return unless @tag_expression.evaluate(scenario_tags)
+ return unless matches_tags?(scenario_tags)
# or if it is not at the correct location
return if line_numbers.any? && !line_numbers.include?(test_line)
- @scenarios << [uri, feature_element[:location][:line]].join(":")
+ @scenarios << [uri, feature_element.source_line].join(":")
else # :ScenarioOutline
- feature_element[:examples].each do |example|
- example_tags = example[:tags].map { |tag| tag[:name] }
+ feature_element.examples.each do |example|
+ example_tags = example.tags.map(&:name)
example_tags = scenario_tags + example_tags
- next unless @tag_expression.evaluate(example_tags)
- rows = example[:tableBody].select { |body| body[:type] ==
:TableRow }
- rows.each do |row|
- test_line = row[:location][:line]
+ next unless matches_tags?(example_tags)
+ example.rows[1..-1].each do |row|
+ test_line = row.source_line
next if line_numbers.any? && !line_numbers.include?(test_line)
@scenarios << [uri, test_line].join(':')
@@ -42,6 +38,12 @@
def method_missing(*args)
end
+
+ private
+
+ def matches_tags?(tags)
+ @tag_expression.nil? || @tag_expression.evaluate(tags)
+ end
end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/parallel_tests/cucumber/scenarios.rb
new/lib/parallel_tests/cucumber/scenarios.rb
--- old/lib/parallel_tests/cucumber/scenarios.rb 2020-03-15
20:52:21.000000000 +0100
+++ new/lib/parallel_tests/cucumber/scenarios.rb 2020-09-16
21:22:44.000000000 +0200
@@ -1,12 +1,17 @@
require 'cucumber/tag_expressions/parser'
-require 'cucumber/core/gherkin/tag_expression'
require 'cucumber/runtime'
require 'cucumber'
require 'parallel_tests/cucumber/scenario_line_logger'
require 'parallel_tests/gherkin/listener'
-require 'gherkin/errors'
require 'shellwords'
+begin
+ gem "cuke_modeler", "~> 3.0"
+ require 'cuke_modeler'
+rescue LoadError
+ raise 'Grouping by individual cucumber scenarios requires the `cuke_modeler`
modeler gem with requirement `~> 3.0`. Add `gem "cuke_modeler", "~> 3.0"` to
your `Gemfile`, run `bundle install` and try again.'
+end
+
module ParallelTests
module Cucumber
class Scenarios
@@ -40,32 +45,17 @@
path, *test_lines = path.split(/:(?=\d+)/)
test_lines.map!(&:to_i)
- # We encode the file and get the content of it
- source = ::Cucumber::Runtime::NormalisedEncodingFile.read(path)
# We create a Gherkin document, this will be used to decode the
details of each scenario
- document = ::Cucumber::Core::Gherkin::Document.new(path, source)
+ document = ::CukeModeler::FeatureFile.new(path)
+ feature = document.feature
+
+ # We make an attempt to parse the gherkin document, this could be
failed if the document is not well formatted
+ feature_tags = feature.tags.map(&:name)
- # We create a parser for the gherkin document
- parser = ::Gherkin::Parser.new()
- scanner = ::Gherkin::TokenScanner.new(document.body)
-
- begin
- # We make an attempt to parse the gherkin document, this could
be failed if the document is not well formatted
- result = parser.parse(scanner)
- feature_tags = result[:feature][:tags].map { |tag| tag[:name] }
-
- # We loop on each children of the feature
- result[:feature][:children].each do |feature_element|
- # If the type of the child is not a scenario or scenario
outline, we continue, we are only interested by the name of the scenario here
- next unless /Scenario/.match(feature_element[:type])
-
- # It's a scenario, we add it to the scenario_line_logger
- scenario_line_logger.visit_feature_element(document.uri,
feature_element, feature_tags, line_numbers: test_lines)
- end
-
- rescue StandardError => e
- # Exception if the document is no well formated or error in the
tags
- raise
::Cucumber::Core::Gherkin::ParseError.new("#{document.uri}: #{e.message}")
+ # We loop on each children of the feature
+ feature.tests.each do |test|
+ # It's a scenario, we add it to the scenario_line_logger
+ scenario_line_logger.visit_feature_element(document.path, test,
feature_tags, line_numbers: test_lines)
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/parallel_tests/gherkin/listener.rb
new/lib/parallel_tests/gherkin/listener.rb
--- old/lib/parallel_tests/gherkin/listener.rb 2020-03-15 20:52:21.000000000
+0100
+++ new/lib/parallel_tests/gherkin/listener.rb 2020-09-16 21:22:44.000000000
+0200
@@ -1,5 +1,3 @@
-require 'gherkin/parser'
-
module ParallelTests
module Gherkin
class Listener
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/parallel_tests/gherkin/runtime_logger.rb
new/lib/parallel_tests/gherkin/runtime_logger.rb
--- old/lib/parallel_tests/gherkin/runtime_logger.rb 2020-03-15
20:52:21.000000000 +0100
+++ new/lib/parallel_tests/gherkin/runtime_logger.rb 2020-09-16
21:22:44.000000000 +0200
@@ -14,7 +14,7 @@
end
config.on_event :test_case_finished do |event|
- @example_times[event.test_case.feature.file] +=
ParallelTests.now.to_f - @start_at
+ @example_times[event.test_case.location.file] +=
ParallelTests.now.to_f - @start_at
end
config.on_event :test_run_finished do |_|
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/parallel_tests/grouper.rb
new/lib/parallel_tests/grouper.rb
--- old/lib/parallel_tests/grouper.rb 2020-03-15 20:52:21.000000000 +0100
+++ new/lib/parallel_tests/grouper.rb 2020-09-16 21:22:44.000000000 +0200
@@ -2,7 +2,7 @@
class Grouper
class << self
def by_steps(tests, num_groups, options)
- features_with_steps = build_features_with_steps(tests, options)
+ features_with_steps = group_by_features_with_steps(tests, options)
in_even_groups_by_size(features_with_steps, num_groups)
end
@@ -15,19 +15,46 @@
groups = Array.new(num_groups) { {:items => [], :size => 0} }
# add all files that should run in a single process to one group
- (options[:single_process] || []).each do |pattern|
- matched, items = items.partition { |item, _size| item =~ pattern }
- matched.each { |item, size| add_to_group(groups.first, item, size) }
+ single_process_patterns = options[:single_process] || []
+
+ single_items, items = items.partition do |item, _size|
+ single_process_patterns.any? { |pattern| item =~ pattern }
end
- groups_to_fill = (options[:isolate] ? groups[1..-1] : groups)
- group_features_by_size(items_to_group(items), groups_to_fill)
+ isolate_count = isolate_count(options)
+
+ if isolate_count >= num_groups
+ raise 'Number of isolated processes must be less than total the
number of processes'
+ end
+
+ if isolate_count >= 1
+ # add all files that should run in a multiple isolated processes to
their own groups
+ group_features_by_size(items_to_group(single_items),
groups[0..(isolate_count - 1)])
+ # group the non-isolated by size
+ group_features_by_size(items_to_group(items),
groups[isolate_count..-1])
+ else
+ # add all files that should run in a single non-isolated process to
first group
+ single_items.each { |item, size| add_to_group(groups.first, item,
size) }
+
+ # group all by size
+ group_features_by_size(items_to_group(items), groups)
+ end
groups.map! { |g| g[:items].sort }
end
private
+ def isolate_count(options)
+ if options[:isolate_count] && options[:isolate_count] > 1
+ options[:isolate_count]
+ elsif options[:isolate]
+ 1
+ else
+ 0
+ end
+ end
+
def largest_first(files)
files.sort_by{|_item, size| size }.reverse
end
@@ -41,23 +68,9 @@
group[:size] += size
end
- def build_features_with_steps(tests, options)
- require 'gherkin/parser'
- ignore_tag_pattern = options[:ignore_tag_pattern].nil? ? nil :
Regexp.compile(options[:ignore_tag_pattern])
- parser = ::Gherkin::Parser.new
- # format of hash will be FILENAME => NUM_STEPS
- steps_per_file = tests.each_with_object({}) do |file,steps|
- feature = parser.parse(File.read(file)).fetch(:feature)
-
- # skip feature if it matches tag regex
- next if feature[:tags].grep(ignore_tag_pattern).any?
-
- # count the number of steps in the file
- # will only include a feature if the regex does not match
- all_steps = feature[:children].map{|a| a[:steps].count if
a[:tags].grep(ignore_tag_pattern).empty? }.compact
- steps[file] = all_steps.inject(0,:+)
- end
- steps_per_file.sort_by { |_, value| -value }
+ def group_by_features_with_steps(tests, options)
+ require 'parallel_tests/cucumber/features_with_steps'
+ ParallelTests::Cucumber::FeaturesWithSteps.all(tests, options)
end
def group_by_scenarios(tests, options={})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/parallel_tests/rspec/runner.rb
new/lib/parallel_tests/rspec/runner.rb
--- old/lib/parallel_tests/rspec/runner.rb 2020-03-15 20:52:21.000000000
+0100
+++ new/lib/parallel_tests/rspec/runner.rb 2020-09-16 21:22:44.000000000
+0200
@@ -4,8 +4,6 @@
module RSpec
class Runner < ParallelTests::Test::Runner
DEV_NULL = (WINDOWS ? "NUL" : "/dev/null")
- NAME = 'RSpec'
-
class << self
def run_tests(test_files, process_number, num_processes, options)
exe = executable # expensive, so we cache
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/parallel_tests/tasks.rb
new/lib/parallel_tests/tasks.rb
--- old/lib/parallel_tests/tasks.rb 2020-03-15 20:52:21.000000000 +0100
+++ new/lib/parallel_tests/tasks.rb 2020-09-16 21:22:44.000000000 +0200
@@ -5,7 +5,7 @@
module Tasks
class << self
def rails_env
- ENV['RAILS_ENV'] || 'test'
+ 'test'
end
def rake_bin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/parallel_tests/test/runner.rb
new/lib/parallel_tests/test/runner.rb
--- old/lib/parallel_tests/test/runner.rb 2020-03-15 20:52:21.000000000
+0100
+++ new/lib/parallel_tests/test/runner.rb 2020-09-16 21:22:44.000000000
+0200
@@ -3,15 +3,9 @@
module ParallelTests
module Test
class Runner
- NAME = 'Test'
-
class << self
# --- usually overwritten by other runners
- def name
- NAME
- end
-
def runtime_log
'tmp/parallel_runtime_test.log'
end
@@ -179,7 +173,7 @@
allowed_missing -= 1 unless time = runtimes[test]
if allowed_missing < 0
log = options[:runtime_log] || runtime_log
- raise "Runtime log file '#{log}' does not contain sufficient
data to sort #{tests.size} test files, please update it."
+ raise "Runtime log file '#{log}' does not contain sufficient
data to sort #{tests.size} test files, please update or remove it."
end
[test, time]
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/parallel_tests/version.rb
new/lib/parallel_tests/version.rb
--- old/lib/parallel_tests/version.rb 2020-03-15 20:52:21.000000000 +0100
+++ new/lib/parallel_tests/version.rb 2020-09-16 21:22:44.000000000 +0200
@@ -1,3 +1,3 @@
module ParallelTests
- VERSION = Version = '2.32.0'
+ VERSION = Version = '3.3.0'
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 2020-03-15 20:52:21.000000000 +0100
+++ new/metadata 2020-09-16 21:22:44.000000000 +0200
@@ -1,14 +1,14 @@
--- !ruby/object:Gem::Specification
name: parallel_tests
version: !ruby/object:Gem::Version
- version: 2.32.0
+ version: 3.3.0
platform: ruby
authors:
- Michael Grosser
autorequire:
bindir: bin
cert_chain: []
-date: 2020-03-15 00:00:00.000000000 Z
+date: 2020-09-16 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: parallel
@@ -42,6 +42,7 @@
- lib/parallel_tests.rb
- lib/parallel_tests/cli.rb
- lib/parallel_tests/cucumber/failures_logger.rb
+- lib/parallel_tests/cucumber/features_with_steps.rb
- lib/parallel_tests/cucumber/runner.rb
- lib/parallel_tests/cucumber/scenario_line_logger.rb
- lib/parallel_tests/cucumber/scenarios.rb
@@ -67,8 +68,8 @@
- MIT
metadata:
bug_tracker_uri: https://github.com/grosser/parallel_tests/issues
- documentation_uri:
https://github.com/grosser/parallel_tests/blob/v2.32.0/Readme.md
- source_code_uri: https://github.com/grosser/parallel_tests/tree/v2.32.0
+ documentation_uri:
https://github.com/grosser/parallel_tests/blob/v3.3.0/Readme.md
+ source_code_uri: https://github.com/grosser/parallel_tests/tree/v3.3.0
wiki_uri: https://github.com/grosser/parallel_tests/wiki
post_install_message:
rdoc_options: []
@@ -78,14 +79,14 @@
requirements:
- - ">="
- !ruby/object:Gem::Version
- version: 2.2.0
+ version: 2.4.0
required_rubygems_version: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
requirements: []
-rubygems_version: 3.0.3
+rubygems_version: 3.1.3
signing_key:
specification_version: 4
summary: Run Test::Unit / RSpec / Cucumber / Spinach in parallel