Skip to content
This repository was archived by the owner on Nov 30, 2024. It is now read-only.

Commit 7143703

Browse files
committed
Buffer and flush messages, nested within example.
1 parent a62d1c9 commit 7143703

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

lib/rspec/core/formatters/documentation_formatter.rb

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ class DocumentationFormatter < BaseTextFormatter
1212
def initialize(output)
1313
super
1414
@group_level = 0
15+
@messages = []
1516
end
1617

1718
def example_group_started(notification)
19+
flush_messages
20+
1821
output.puts if @group_level == 0
1922
output.puts "#{current_indentation}#{notification.group.description.strip}"
2023

@@ -23,27 +26,43 @@ def example_group_started(notification)
2326

2427
def example_group_finished(_notification)
2528
@group_level -= 1 if @group_level > 0
29+
flush_messages
2630
end
2731

2832
def example_passed(passed)
2933
output.puts passed_output(passed.example)
34+
flush_messages
3035
end
3136

3237
def example_pending(pending)
3338
output.puts pending_output(pending.example,
3439
pending.example.execution_result.pending_message)
40+
flush_messages
3541
end
3642

3743
def example_failed(failure)
3844
output.puts failure_output(failure.example)
45+
flush_messages
3946
end
4047

4148
def message(notification)
42-
output.puts "#{current_indentation}#{notification.message}"
49+
if @group_level.zero?
50+
output.puts notification.message
51+
else
52+
@messages << notification.message
53+
end
4354
end
4455

4556
private
4657

58+
def flush_messages
59+
@messages.each do |message|
60+
output.puts "#{current_indentation(1)}#{message}"
61+
end
62+
63+
@messages.clear
64+
end
65+
4766
def passed_output(example)
4867
ConsoleCodes.wrap("#{current_indentation}#{example.description.strip}", :success)
4968
end
@@ -65,8 +84,8 @@ def next_failure_index
6584
@next_failure_index += 1
6685
end
6786

68-
def current_indentation
69-
' ' * @group_level
87+
def current_indentation(offset=0)
88+
' ' * (@group_level + offset)
7089
end
7190
end
7291
end

spec/rspec/core/formatters/documentation_formatter_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ def execution_result(values)
8989

9090
expect(formatter_output.string).to eql("
9191
root
92-
message
9392
example
93+
message
9494
")
9595
end
9696

0 commit comments

Comments
 (0)