|
- # frozen_string_literal: true
-
- require 'cucumber/formatter/io'
- require 'cucumber/formatter/console'
- require 'cucumber/formatter/console_counts'
- require 'cucumber/formatter/console_issues'
- require 'cucumber/core/test/result'
- require 'cucumber/formatter/ast_lookup'
-
- module Cucumber
- module Formatter
- # Summary formatter, outputting only feature / scenario titles
- class Summary
- include Io
- include Console
-
- def initialize(config)
- @config = config
- @io = ensure_io(config.out_stream, config.error_stream)
- @ast_lookup = AstLookup.new(config)
- @counts = ConsoleCounts.new(@config)
- @issues = ConsoleIssues.new(@config, @ast_lookup)
- @start_time = Time.now
-
- @config.on_event :test_case_started do |event|
- print_feature event.test_case
- print_test_case event.test_case
- end
-
- @config.on_event :test_case_finished do |event|
- print_result event.result
- end
-
- @config.on_event :test_run_finished do |_event|
- duration = Time.now - @start_time
- @io.puts
- print_statistics(duration, @config, @counts, @issues)
- end
- end
-
- private
-
- def gherkin_document(uri)
- @ast_lookup.gherkin_document(uri)
- end
-
- def print_feature(test_case)
- uri = test_case.location.file
- return if @current_feature_uri == uri
-
- feature_name = gherkin_document(uri).feature.name
- @io.puts unless @current_feature_uri.nil?
- @io.puts feature_name
- @current_feature_uri = uri
- end
-
- def print_test_case(test_case)
- @io.print " #{test_case.name} "
- end
-
- def print_result(result)
- @io.puts format_string(result, result.to_sym)
- end
- end
- end
- end
|