Skip to content

Commit

Permalink
Emit a warning for around(:context)
Browse files Browse the repository at this point in the history
fixes #2486
  • Loading branch information
pirj committed Jan 11, 2020
1 parent 1174cc5 commit 8c6ff23
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Changelog.md
Expand Up @@ -6,6 +6,8 @@ Bug Fixes:
* Prevent bisect command from blocking when number of specs exceeds file
descriptor limit on OSX or Linux. (Benoit Tigeot, #2669)
* Prevent warnings being issued on Ruby 2.7.0. (Jon Rowe, #2680)
* Emit a warning when `around` hook is used with `:context` scope
(Phil Pirozhkov, #2687)

### 3.9.0 / 2019-10-07
[Full Changelog](http://github.com/rspec/rspec-core/compare/v3.8.2...v3.9.0)
Expand Down
5 changes: 5 additions & 0 deletions lib/rspec/core/hooks.rb
Expand Up @@ -448,6 +448,11 @@ def register(prepend_or_append, position, *args, &block)
"`#{position}(:suite)` hook, registered on an example " \
"group, will be ignored."
return
elsif scope == :context && position == :around
# TODO: consider making this an error in RSpec 4. For SemVer reasons,
# we are only warning in RSpec 3.
RSpec.warn_with "WARNING: `around(:context)` hooks are not supported and " \
"behave like `around(:example)."
end

hook = HOOK_TYPES[position][scope].new(block, options)
Expand Down
29 changes: 29 additions & 0 deletions spec/rspec/core/hooks_spec.rb
Expand Up @@ -492,5 +492,34 @@ def yielder
:hooks
])
end

it 'emits a warning for `around(:context)`' do
expect(RSpec).to receive(:warn_with).with(a_string_including(
'`around(:context)` hooks are not supported'
))
RSpec.describe do
around(:context) { }
end
end

it 'emits a warning for `around(:context)` defined in `configure`' do
expect(RSpec).to receive(:warn_with).with(a_string_including(
'`around(:context)` hooks are not supported'
))
RSpec.configure do |c|
c.around(:context) { }
end
end

[:before, :around, :after].each do |type|
it "emits a warning for `#{type}(:suite)` hooks" do
expect(RSpec).to receive(:warn_with).with(a_string_including(
"`#{type}(:suite)` hooks are only supported on the RSpec configuration object."
))
RSpec.describe do
send(type, :suite) { }
end
end
end
end
end

0 comments on commit 8c6ff23

Please sign in to comment.