Sha256: 63851b8514e3dfea2cbefd7613ad0095de8da0e40aebc608008075365a1ce89f

Contents?: true

Size: 1.41 KB

Versions: 12

Compression:

Stored size: 1.41 KB

Contents

module KnapsackPro
  module Runners
    class RSpecRunner < BaseRunner
      def self.run(args)
        ENV['KNAPSACK_PRO_TEST_SUITE_TOKEN'] = KnapsackPro::Config::Env.test_suite_token_rspec
        ENV['KNAPSACK_PRO_RECORDING_ENABLED'] = 'true'

        adapter_class = KnapsackPro::Adapters::RSpecAdapter
        KnapsackPro::Config::Env.set_test_runner_adapter(adapter_class)
        runner = new(adapter_class)

        if runner.test_files_to_execute_exist?
          adapter_class.verify_bind_method_called

          cli_args = (args || '').split
          adapter_class.ensure_no_tag_option_when_rspec_split_by_test_examples_enabled!(cli_args)

          KnapsackPro.tracker.set_prerun_tests(runner.test_file_paths)

          require 'rspec/core/rake_task'

          task_name = 'knapsack_pro:rspec_run'
          if Rake::Task.task_defined?(task_name)
            Rake::Task[task_name].clear
          end

          ::RSpec::Core::RakeTask.new(task_name) do |t|
            # we cannot pass runner.test_file_paths array to t.pattern
            # because pattern does not accept test example path like spec/a_spec.rb[1:2]
            # instead we pass test files and test example paths to t.rspec_opts
            t.pattern = []
            t.rspec_opts = "#{args} --default-path #{runner.test_dir} #{runner.stringify_test_file_paths}"
          end
          Rake::Task[task_name].invoke
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
knapsack_pro-3.4.1 lib/knapsack_pro/runners/rspec_runner.rb
knapsack_pro-3.4.0 lib/knapsack_pro/runners/rspec_runner.rb
knapsack_pro-3.3.1 lib/knapsack_pro/runners/rspec_runner.rb
knapsack_pro-3.3.0 lib/knapsack_pro/runners/rspec_runner.rb
knapsack_pro-3.2.1 lib/knapsack_pro/runners/rspec_runner.rb
knapsack_pro-3.2.0 lib/knapsack_pro/runners/rspec_runner.rb
knapsack_pro-3.1.3 lib/knapsack_pro/runners/rspec_runner.rb
knapsack_pro-3.1.2 lib/knapsack_pro/runners/rspec_runner.rb
knapsack_pro-3.1.1 lib/knapsack_pro/runners/rspec_runner.rb
knapsack_pro-3.1.0 lib/knapsack_pro/runners/rspec_runner.rb
knapsack_pro-3.0.0 lib/knapsack_pro/runners/rspec_runner.rb
knapsack_pro-2.18.2 lib/knapsack_pro/runners/rspec_runner.rb