Skip to content

Commit 68575de

Browse files
makenowjustsdogruyol
authored andcommitted
Improve Ctrl-C handling of spec (#5719)
1 parent 90c3a7a commit 68575de

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

src/spec/context.cr

+5-3
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,15 @@ module Spec
4242
@results[result.kind] << result
4343
end
4444

45-
def self.print_results(elapsed_time)
46-
@@instance.print_results(elapsed_time)
45+
def self.print_results(elapsed_time, aborted = false)
46+
@@instance.print_results(elapsed_time, aborted)
4747
end
4848

4949
def self.succeeded
5050
@@instance.succeeded
5151
end
5252

53-
def print_results(elapsed_time)
53+
def print_results(elapsed_time, aborted = false)
5454
Spec.formatters.each(&.finish)
5555

5656
pendings = @results[:pending]
@@ -124,11 +124,13 @@ module Spec
124124
total = pendings.size + failures.size + errors.size + success.size
125125

126126
final_status = case
127+
when aborted then :error
127128
when (failures.size + errors.size) > 0 then :fail
128129
when pendings.size > 0 then :pending
129130
else :success
130131
end
131132

133+
puts "Aborted!".colorize.red if aborted
132134
puts "Finished in #{Spec.to_human(elapsed_time)}"
133135
puts Spec.color("#{total} examples, #{failures.size} failures, #{errors.size} errors, #{pendings.size} pending", final_status)
134136

src/spec/dsl.cr

+3-2
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ module Spec
5252

5353
# :nodoc:
5454
def self.abort!
55+
@@aborted = true
5556
exit
5657
end
5758

@@ -169,8 +170,8 @@ module Spec
169170
start_time = Time.monotonic
170171
at_exit do
171172
elapsed_time = Time.monotonic - start_time
172-
Spec::RootContext.print_results(elapsed_time)
173-
exit 1 unless Spec::RootContext.succeeded
173+
Spec::RootContext.print_results(elapsed_time, @@aborted)
174+
exit 1 unless Spec::RootContext.succeeded && !@@aborted
174175
end
175176
end
176177
end

0 commit comments

Comments
 (0)