lib/cucumber/formatter/json.rb in cucumber-2.99.0 vs lib/cucumber/formatter/json.rb in cucumber-3.0.0.pre.1
- old
+ new
@@ -1,5 +1,6 @@
+# frozen_string_literal: true
require 'multi_json'
require 'base64'
require 'cucumber/formatter/backtrace_filter'
require 'cucumber/formatter/io'
require 'cucumber/formatter/hook_query_visitor'
@@ -9,20 +10,20 @@
# The formatter used for <tt>--format json</tt>
class Json
include Io
def initialize(config)
- config.on_event :before_test_case, &method(:on_before_test_case)
- config.on_event :after_test_case, &method(:on_after_test_case)
- config.on_event :before_test_step, &method(:on_before_test_step)
- config.on_event :after_test_step, &method(:on_after_test_step)
- config.on_event :finished_testing, &method(:on_finished_testing)
@io = ensure_io(config.out_stream)
@feature_hashes = []
+ config.on_event :test_case_starting, &method(:on_test_case_starting)
+ config.on_event :test_case_finished, &method(:on_test_case_finished)
+ config.on_event :test_step_starting, &method(:on_test_step_starting)
+ config.on_event :test_step_finished, &method(:on_test_step_finished)
+ config.on_event :test_run_finished, &method(:on_test_run_finished)
end
- def on_before_test_case(event)
+ def on_test_case_starting(event)
test_case = event.test_case
builder = Builder.new(test_case)
unless same_feature_as_previous_test_case?(test_case.feature)
@feature_hash = builder.feature_hash
@feature_hashes << @feature_hash
@@ -36,11 +37,11 @@
@element_hash = @test_case_hash
end
@any_step_failed = false
end
- def on_before_test_step(event)
+ def on_test_step_starting(event)
test_step = event.test_step
return if internal_hook?(test_step)
hook_query = HookQueryVisitor.new(test_step)
if hook_query.hook?
@step_or_hook_hash = {}
@@ -54,23 +55,24 @@
@step_or_hook_hash = create_step_hash(test_step.source.last)
steps << @step_or_hook_hash
@step_hash = @step_or_hook_hash
end
- def on_after_test_step(event)
- test_step = event.test_step
- result = event.result.with_filtered_backtrace(Cucumber::Formatter::BacktraceFilter)
+ def on_test_step_finished(event)
+ test_step, result = *event.attributes
+ result = result.with_filtered_backtrace(Cucumber::Formatter::BacktraceFilter)
return if internal_hook?(test_step)
add_match_and_result(test_step, result)
@any_step_failed = true if result.failed?
end
- def on_after_test_case(event)
- result = event.result.with_filtered_backtrace(Cucumber::Formatter::BacktraceFilter)
+ def on_test_case_finished(event)
+ test_case, result = *event.attributes
+ result = result.with_filtered_backtrace(Cucumber::Formatter::BacktraceFilter)
add_failed_around_hook(result) if result.failed? && !@any_step_failed
end
- def on_finished_testing(event)
+ def on_test_run_finished(event)
@io.write(MultiJson.dump(@feature_hashes, pretty: true))
end
def puts(message)
test_step_output << message