Logo: Relish

  1. Sign up
  2. Sign in

Project: RSpec Core 3.0

Custom deprecation stream

Define a custom output stream for warning about deprecations (default
$stderr).

RSpec.configure do |c|
  c.deprecation_stream = File.open('deprecations.txt', 'w')
end

or

RSpec.configure { |c| c.deprecation_stream = 'deprecations.txt' }

or pass --deprecation-out

Background
Given
a file named "lib/foo.rb" with:
class Foo
  def bar
    RSpec.deprecate "Foo#bar"
  end
end
Scenarios
Default - print deprecations to `$stderr`
Given
a file named "spec/example_spec.rb" with:
require "foo"

RSpec.describe "calling a deprecated method" do
  example { Foo.new.bar }
end
When
I run rspec spec/example_spec.rb
Then
the output should contain "Deprecation Warnings:\n\nFoo#bar is deprecated"
Configure using the path to a file
Given
a file named "spec/example_spec.rb" with:
require "foo"

RSpec.configure {|c| c.deprecation_stream = 'deprecations.txt' }

RSpec.describe "calling a deprecated method" do
  example { Foo.new.bar }
end
When
I run rspec spec/example_spec.rb
Then
the output should not contain "Deprecation Warnings:"
But
the output should contain "1 deprecation logged to deprecations.txt"
And
the file "deprecations.txt" should contain "Foo#bar is deprecated"
Configure using a `File` object
Given
a file named "spec/example_spec.rb" with:
require "foo"

RSpec.configure do |c|
  c.deprecation_stream = File.open('deprecations.txt', 'w')
end

RSpec.describe "calling a deprecated method" do
  example { Foo.new.bar }
end
When
I run rspec spec/example_spec.rb
Then
the output should not contain "Deprecation Warnings:"
But
the output should contain "1 deprecation logged to deprecations.txt"
And
the file "deprecations.txt" should contain "Foo#bar is deprecated"
configure using the CLI `--deprecation-out` option
Given
a file named "spec/example_spec.rb" with:
require "foo"
RSpec.describe "calling a deprecated method" do
  example { Foo.new.bar }
end
When
I run rspec spec/example_spec.rb --deprecation-out deprecations.txt
Then
the output should not contain "Deprecation Warnings:"
But
the output should contain "1 deprecation logged to deprecations.txt"
And
the file "deprecations.txt" should contain "Foo#bar is deprecated"

Last published about 2 years ago by myronmarston.