Setting a failure exit code

Use the failure_exit_code option to set a custom exit code when RSpec fails.

  RSpec.configure { |c| c.failure_exit_code = 42 }

Background

Given a file named “spec/spec_helper.rb” with:

RSpec.configure { |c| c.failure_exit_code = 42 }

A failing spec with the default exit code

Given a file named “spec/example_spec.rb” with:

RSpec.describe "something" do
  it "fails" do
    fail
  end
end

When I run rspec spec/example_spec.rb

Then the exit status should be 1.

A failing spec with a custom exit code

Given a file named “spec/example_spec.rb” with:

require 'spec_helper'
RSpec.describe "something" do
  it "fails" do
    fail
  end
end

When I run rspec spec/example_spec.rb

Then the exit status should be 42.

An error running specs spec with a custom exit code

Given a file named “spec/typo_spec.rb” with:

require 'spec_helper'
RSpec.escribe "something" do # intentional typo
  it "works" do
    true
  end
end

When I run rspec spec/typo_spec.rb

Then the exit status should be 42.

Success running specs spec with a custom exit code defined

Given a file named “spec/example_spec.rb” with:

require 'spec_helper'
RSpec.describe "something" do
  it "works" do
    true
  end
end

When I run rspec spec/example_spec.rb

Then the exit status should be 0.

Exit with the default exit code when an at_exit hook is added upstream

Given a file named “exitatspec.rb” with:

require 'rspec/autorun'
at_exit { exit(0) }

RSpec.describe "exit 0 at_exit ignored" do
  it "does not interfere with the default exit code" do
    fail
  end
end

When I run ruby exit_at_spec.rb

Then the exit status should be 1.