Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions local_test/client_config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
'local_test/success_spec.rb',
'local_test/fail_spec.rb',
'local_test/timeout_spec.rb',
# this file is commented-out because it cause false positive of other tests.
# 'local_test/error_outside_examples_spec.rb',
]
end
conf.setup_command = <<-END
Expand Down
8 changes: 8 additions & 0 deletions local_test/error_outside_examples_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
describe 'test4' do
describe 'outside error' do
include_context 'not exist context'
it 'cause outside error' do
expect(1).to eq(1)
end
end
end
13 changes: 12 additions & 1 deletion rrrspec-client/lib/rrrspec/client/slave_runner.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class SlaveRunner
TASKQUEUE_ARBITER_TIMEOUT = 20
TIMEOUT_EXITCODE = 42
class SoftTimeoutException < Exception; end
class OutsideExamplesError < StandardError; end

def initialize(slave, working_dir, taskset_key)
@slave = slave
Expand Down Expand Up @@ -92,7 +93,9 @@ def work
end

class RedisReportingFormatter
RSpec::Core::Formatters.register(self, :example_passed, :example_pending, :example_failed)
RSpec::Core::Formatters.register(
self, :example_passed, :example_pending, :example_failed, :dump_summary
)

def initialize(_output)
self.class.reset
Expand All @@ -110,6 +113,14 @@ def example_failed(notification)
self.class.example_failed(notification)
end

def dump_summary(notification)
# RSpec skips all examples when error outside examples occurred
# So we will raise error and make current taskset failure
if notification.errors_outside_of_examples_count > 0
raise OutsideExamplesError
end
end

module ClassMethods
attr_reader :passed, :pending, :failed

Expand Down