class KnapsackPro::Adapters::CucumberAdapter
Constants
- TEST_DIR_PATTERN
Public Class Methods
test_path(object)
click to toggle source
# File lib/knapsack_pro/adapters/cucumber_adapter.rb, line 8 def self.test_path(object) if ::Cucumber::VERSION.to_i >= 2 test_case = object test_case.location.file else if object.respond_to?(:scenario_outline) if object.scenario_outline.respond_to?(:feature) # Cucumber < 1.3 object.scenario_outline.feature.file else # Cucumber >= 1.3 object.scenario_outline.file end else if object.respond_to?(:feature) # Cucumber < 1.3 object.feature.file else # Cucumber >= 1.3 object.file end end end end
Public Instance Methods
bind_after_queue_hook()
click to toggle source
# File lib/knapsack_pro/adapters/cucumber_adapter.rb, line 68 def bind_after_queue_hook ::Kernel.at_exit do KnapsackPro::Hooks::Queue.call_after_subset_queue KnapsackPro::Report.save_subset_queue_to_file end end
bind_before_queue_hook()
click to toggle source
# File lib/knapsack_pro/adapters/cucumber_adapter.rb, line 58 def bind_before_queue_hook Around do |object, block| unless ENV['KNAPSACK_PRO_BEFORE_QUEUE_HOOK_CALLED'] KnapsackPro::Hooks::Queue.call_before_queue ENV['KNAPSACK_PRO_BEFORE_QUEUE_HOOK_CALLED'] = 'true' end block.call end end
bind_save_report(latest_error = nil)
click to toggle source
# File lib/knapsack_pro/adapters/cucumber_adapter.rb, line 46 def bind_save_report(latest_error = nil) ::Kernel.at_exit do # $! is latest error message latest_error = (latest_error || $!) exit_status = latest_error.status if latest_error.is_a?(SystemExit) # saving report makes API call which changes exit status # from cucumber so we need to preserve cucumber exit status KnapsackPro::Report.save ::Kernel.exit exit_status if exit_status end end
bind_time_tracker()
click to toggle source
# File lib/knapsack_pro/adapters/cucumber_adapter.rb, line 33 def bind_time_tracker Around do |object, block| KnapsackPro.tracker.current_test_path = KnapsackPro::Adapters::CucumberAdapter.test_path(object) KnapsackPro.tracker.start_timer block.call KnapsackPro.tracker.stop_timer end ::Kernel.at_exit do KnapsackPro.logger.debug(KnapsackPro::Presenter.global_time) end end
Private Instance Methods
Around(*tag_expressions, &proc)
click to toggle source
# File lib/knapsack_pro/adapters/cucumber_adapter.rb, line 77 def Around(*tag_expressions, &proc) if ::Cucumber::VERSION.to_i >= 3 ::Cucumber::Glue::Dsl.register_rb_hook('around', tag_expressions, proc) else ::Cucumber::RbSupport::RbDsl.register_rb_hook('around', tag_expressions, proc) end end