module Crabfarm::Utils::RSpecRunner
Public Instance Methods
run_single_spec_for(_target, _tag=nil)
click to toggle source
# File lib/crabfarm/utils/rspec_runner.rb, line 14 def run_single_spec_for(_target, _tag=nil) setup_rspec_once begin configuration.reset runner = ::RSpec::Core::Runner.new config_options(_target) runner.setup $stderr, $stdout example = skip_all_but_one _tag runner.run_specs(world.ordered_example_groups) example ensure ::RSpec.clear_examples end end
Private Instance Methods
config_options(_target)
click to toggle source
# File lib/crabfarm/utils/rspec_runner.rb, line 48 def config_options(_target) ::RSpec::Core::ConfigurationOptions.new [ _target, '-f','Crabfarm::Utils::RSpecRunner::SilentFormatter' ] end
configuration()
click to toggle source
# File lib/crabfarm/utils/rspec_runner.rb, line 37 def configuration ::RSpec.configuration end
is_better_example?(_new, _old, _tag)
click to toggle source
# File lib/crabfarm/utils/rspec_runner.rb, line 69 def is_better_example?(_new, _old, _tag) return true if _old.nil? if _tag new_tagged = !!(_new.metadata[_tag]) old_tagged = !!(_old.metadata[_tag]) # preffer tagged return new_tagged if new_tagged != old_tagged end # preffer higher line number return _new.metadata[:line_number] > _old.metadata[:line_number] end
setup_rspec_once()
click to toggle source
# File lib/crabfarm/utils/rspec_runner.rb, line 41 def setup_rspec_once unless @ready ::RSpec::Core::Formatters.register SilentFormatter @ready = true end end
skip_all_but_one(_tag)
click to toggle source
# File lib/crabfarm/utils/rspec_runner.rb, line 55 def skip_all_but_one(_tag) best_example = world.all_examples.inject(nil) do |best, example| example.metadata[:skip] = true if is_better_example? example, best, _tag example else best end end best_example.metadata[:skip] = false if best_example best_example end
world()
click to toggle source
# File lib/crabfarm/utils/rspec_runner.rb, line 33 def world ::RSpec.world end