Class: RSpec::Core::Formatters::BaseTextFormatter
- Inherits:
-
BaseFormatter
- Object
- BaseFormatter
- RSpec::Core::Formatters::BaseTextFormatter
- Defined in:
- lib/rspec/legacy_formatters/base_text_formatter.rb
Overview
Base for all of RSpec's built-in formatters. See RSpec::Core::Formatters::BaseFormatter to learn more about all of the methods called by the reporter.
Direct Known Subclasses
Constant Summary collapse
- VT100_COLORS =
{ :black => 30, :red => 31, :green => 32, :yellow => 33, :blue => 34, :magenta => 35, :cyan => 36, :white => 37 }
- VT100_COLOR_CODES =
VT100_COLORS.values.to_set
Constants included from Helpers
Helpers::DEFAULT_PRECISION, Helpers::SUB_SECOND_PRECISION
Instance Attribute Summary
Attributes inherited from BaseFormatter
#duration, #example_count, #example_group, #examples, #failed_examples, #failure_count, #output, #pending_count, #pending_examples
Instance Method Summary collapse
- #close ⇒ void
- #color_code_for(code_or_symbol) ⇒ void
-
#colorise_summary(summary) ⇒ void
Colorizes the output red for failure, yellow for pending, and green otherwise.
- #colorize(text, code_or_symbol) ⇒ void
-
#dump_commands_to_rerun_failed_examples ⇒ void
Outputs commands which can be used to re-run failed examples.
- #dump_failures ⇒ void
- #dump_pending ⇒ void
-
#dump_profile ⇒ void
Outputs the slowest examples and example groups in a report when using
--profile COUNT
(default 10). - #dump_profile_slowest_example_groups ⇒ void
- #dump_profile_slowest_examples ⇒ void
- #dump_summary(duration, example_count, failure_count, pending_count) ⇒ void
- #message(message) ⇒ void
- #seed(number) ⇒ void
-
#summary_line(example_count, failure_count, pending_count) ⇒ void
Outputs summary with number of examples, failures and pending.
Methods inherited from BaseFormatter
#example_failed, #example_group_finished, #example_group_started, #example_passed, #example_pending, #example_started, #format_backtrace, #initialize, #start, #start_dump, #stop
Methods included from Helpers
#format_duration, #format_seconds, #pluralize, #strip_trailing_zeroes
Methods included from LegacyBacktraceFormatter
Constructor Details
This class inherits a constructor from RSpec::Core::Formatters::BaseFormatter
Instance Method Details
#close ⇒ void
163 164 165 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 163 def close output.close if IO === output && output != $stdout end |
#color_code_for(code_or_symbol) ⇒ void
180 181 182 183 184 185 186 187 188 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 180 def color_code_for(code_or_symbol) if VT100_COLOR_CODES.include?(code_or_symbol) code_or_symbol else VT100_COLORS.fetch(code_or_symbol) do color_code_for(:white) end end end |
#colorise_summary(summary) ⇒ void
Colorizes the output red for failure, yellow for pending, and green otherwise.
36 37 38 39 40 41 42 43 44 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 36 def colorise_summary(summary) if failure_count > 0 color(summary, RSpec.configuration.failure_color) elsif pending_count > 0 color(summary, RSpec.configuration.pending_color) else color(summary, RSpec.configuration.success_color) end end |
#colorize(text, code_or_symbol) ⇒ void
190 191 192 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 190 def colorize(text, code_or_symbol) "\e[#{color_code_for(code_or_symbol)}m#{text}\e[0m" end |
#dump_commands_to_rerun_failed_examples ⇒ void
Outputs commands which can be used to re-run failed examples.
58 59 60 61 62 63 64 65 66 67 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 58 def dump_commands_to_rerun_failed_examples return if failed_examples.empty? output.puts output.puts("Failed examples:") output.puts failed_examples.each do |example| output.puts(failure_color("rspec #{RSpec::Core::Metadata::relative_path(example.location)}") + " " + detail_color("# #{example.full_description}")) end end |
#dump_failures ⇒ void
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 19 def dump_failures return if failed_examples.empty? output.puts output.puts "Failures:" failed_examples.each_with_index do |example, index| output.puts pending_fixed?(example) ? dump_pending_fixed(example, index) : dump_failure(example, index) dump_backtrace(example) end end |
#dump_pending ⇒ void
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 140 def dump_pending unless pending_examples.empty? output.puts output.puts "Pending:" pending_examples.each do |pending_example| output.puts pending_color(" #{pending_example.full_description}") output.puts detail_color(" # #{pending_example.execution_result.}") output.puts detail_color(" # #{format_caller(pending_example.location)}") if pending_example.execution_result.exception \ && RSpec.configuration.show_failures_in_pending_blocks? dump_failure_info(pending_example) dump_backtrace(pending_example) end end end end |
#dump_profile ⇒ void
Outputs the slowest examples and example groups in a report when using --profile COUNT
(default 10).
73 74 75 76 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 73 def dump_profile dump_profile_slowest_examples dump_profile_slowest_example_groups end |
#dump_profile_slowest_example_groups ⇒ void
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 97 def dump_profile_slowest_example_groups number_of_examples = RSpec.configuration.profile_examples example_groups = {} examples.each do |example| location = example.example_group.parent_groups.last.[:location] example_groups[location] ||= Hash.new(0) example_groups[location][:total_time] += example.execution_result.run_time example_groups[location][:count] += 1 example_groups[location][:description] = example.example_group.top_level_description unless example_groups[location].has_key?(:description) end # stop if we've only one example group return if example_groups.keys.length <= 1 example_groups.each do |loc, hash| hash[:average] = hash[:total_time].to_f / hash[:count] end sorted_groups = example_groups.sort_by {|_, hash| -hash[:average]}.first(number_of_examples) output.puts "\nTop #{sorted_groups.size} slowest example groups:" sorted_groups.each do |loc, hash| average = "#{failure_color(format_seconds(hash[:average]))} #{failure_color("seconds")} average" total = "#{format_seconds(hash[:total_time])} seconds" count = pluralize(hash[:count], "example") output.puts " #{hash[:description]}" output.puts detail_color(" #{average} (#{total} / #{count}) #{loc}") end end |
#dump_profile_slowest_examples ⇒ void
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 78 def dump_profile_slowest_examples number_of_examples = RSpec.configuration.profile_examples sorted_examples = examples.sort_by {|example| example.execution_result.run_time }.reverse.first(number_of_examples) total, slows = [examples, sorted_examples].map {|exs| exs.inject(0.0) {|i, e| i + e.execution_result.run_time }} time_taken = slows / total percentage = '%.1f' % ((time_taken.nan? ? 0.0 : time_taken) * 100) output.puts "\nTop #{sorted_examples.size} slowest examples (#{format_seconds(slows)} seconds, #{percentage}% of total time):\n" sorted_examples.each do |example| output.puts " #{example.full_description}" output.puts detail_color(" #{failure_color(format_seconds(example.execution_result.run_time))} #{failure_color("seconds")} #{format_caller(example.location)}") end end |
#dump_summary(duration, example_count, failure_count, pending_count) ⇒ void
46 47 48 49 50 51 52 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 46 def dump_summary(duration, example_count, failure_count, pending_count) super(duration, example_count, failure_count, pending_count) dump_profile unless mute_profile_output?(failure_count) output.puts "\nFinished in #{format_duration(duration)}\n" output.puts colorise_summary(summary_line(example_count, failure_count, pending_count)) dump_commands_to_rerun_failed_examples end |
#message(message) ⇒ void
15 16 17 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 15 def () output.puts end |
#seed(number) ⇒ void
157 158 159 160 161 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 157 def seed(number) output.puts output.puts "Randomized with seed #{number}" output.puts end |
#summary_line(example_count, failure_count, pending_count) ⇒ void
Outputs summary with number of examples, failures and pending.
133 134 135 136 137 138 |
# File 'lib/rspec/legacy_formatters/base_text_formatter.rb', line 133 def summary_line(example_count, failure_count, pending_count) summary = pluralize(example_count, "example") summary << ", " << pluralize(failure_count, "failure") summary << ", #{pending_count} pending" if pending_count > 0 summary end |