lib/parallel_tests/gherkin/runner.rb in parallel_tests-3.4.0 vs lib/parallel_tests/gherkin/runner.rb in parallel_tests-3.5.0

- old
+ new

@@ -1,25 +1,27 @@ +# frozen_string_literal: true require "parallel_tests/test/runner" require 'shellwords' module ParallelTests module Gherkin class Runner < ParallelTests::Test::Runner - class << self def run_tests(test_files, process_number, num_processes, options) combined_scenarios = test_files if options[:group_by] == :scenarios grouped = test_files.map { |t| t.split(':') }.group_by(&:first) - combined_scenarios = grouped.map {|file,files_and_lines| "#{file}:#{files_and_lines.map(&:last).join(':')}" } + combined_scenarios = grouped.map do |file, files_and_lines| + "#{file}:#{files_and_lines.map(&:last).join(':')}" + end end sanitized_test_files = combined_scenarios.map { |val| WINDOWS ? "\"#{val}\"" : Shellwords.escape(val) } options[:env] ||= {} - options[:env] = options[:env].merge({'AUTOTEST' => '1'}) if $stdout.tty? # display color when we are in a terminal + options[:env] = options[:env].merge({ 'AUTOTEST' => '1' }) if $stdout.tty? cmd = [ executable, (runtime_logging if File.directory?(File.dirname(runtime_log))), cucumber_opts(options[:test_options]), @@ -42,75 +44,68 @@ # cucumber has 2 result lines per test run, that cannot be added # 1 scenario (1 failed) # 1 step (1 failed) def summarize_results(results) - sort_order = %w[scenario step failed flaky undefined skipped pending passed] + sort_order = ['scenario', 'step', 'failed', 'flaky', 'undefined', 'skipped', 'pending', 'passed'] - %w[scenario step].map do |group| + ['scenario', 'step'].map do |group| group_results = results.grep(/^\d+ #{group}/) next if group_results.empty? sums = sum_up_results(group_results) sums = sums.sort_by { |word, _| sort_order.index(word) || 999 } sums.map! do |word, number| - plural = "s" if word == group and number != 1 + plural = "s" if (word == group) && (number != 1) "#{number} #{word}#{plural}" end "#{sums[0]} (#{sums[1..-1].join(", ")})" end.compact.join("\n") end def cucumber_opts(given) - if given =~ /--profile/ or given =~ /(^|\s)-p / + if given =~ (/--profile/) || given =~ (/(^|\s)-p /) given else [given, profile_from_config].compact.join(" ") end end def profile_from_config # copied from https://github.com/cucumber/cucumber/blob/master/lib/cucumber/cli/profile_loader.rb#L85 config = Dir.glob("{,.config/,config/}#{name}{.yml,.yaml}").first - if config && File.read(config) =~ /^parallel:/ - "--profile parallel" - end + "--profile parallel" if config && File.read(config) =~ /^parallel:/ end - def tests_in_groups(tests, num_groups, options={}) - if options[:group_by] == :scenarios - @test_file_name = "scenario" - end + def tests_in_groups(tests, num_groups, options = {}) + @test_file_name = "scenario" if options[:group_by] == :scenarios method = "by_#{options[:group_by]}" if Grouper.respond_to?(method) Grouper.send(method, find_tests(tests, options), num_groups, options) else super end end - def runtime_logging "--format ParallelTests::Gherkin::RuntimeLogger --out #{runtime_log}" end def runtime_log "tmp/parallel_runtime_#{name}.log" end def determine_executable - case - when File.exist?("bin/#{name}") + if File.exist?("bin/#{name}") ParallelTests.with_ruby_binary("bin/#{name}") - when ParallelTests.bundler_enabled? + elsif ParallelTests.bundler_enabled? "bundle exec #{name}" - when File.file?("script/#{name}") + elsif File.file?("script/#{name}") ParallelTests.with_ruby_binary("script/#{name}") else - "#{name}" + name.to_s end end - end end end end