Skip to main content

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

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".