1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
Feature: read command line configuration options from files
RSpec reads command line configuration options from files in three different
locations:
* Local: `./.rspec-local` (i.e. in the project's root directory, can be
gitignored)
* Project: `./.rspec` (i.e. in the project's root directory, usually
checked into the project)
* Global: `~/.rspec` (i.e. in the user's home directory)
Configuration options are loaded from `~/.rspec`, `.rspec`, `.rspec-local`,
command line switches, and the `SPEC_OPTS` environment variable (listed in
lowest to highest precedence; for example, an option in `~/.rspec` can be
overridden by an option in `.rspec-local`).
Scenario: Color set in `.rspec`
Given a file named ".rspec" with:
"""
--color
"""
And a file named "spec/example_spec.rb" with:
"""ruby
RSpec.describe "color_enabled?" do
context "when set with RSpec.configure" do
before do
# color is disabled for non-tty output, so stub the output stream
# to say it is tty, even though we're running this with cucumber
allow(RSpec.configuration.output_stream).to receive(:tty?) { true }
end
it "is true" do
expect(RSpec.configuration).to be_color_enabled
end
end
end
"""
When I run `rspec ./spec/example_spec.rb`
Then the examples should all pass
Scenario: Custom options file
Given a file named "my.options" with:
"""
--format documentation
"""
And a file named "spec/example_spec.rb" with:
"""ruby
RSpec.describe "formatter set in custom options file" do
it "sets formatter" do
expect(RSpec.configuration.formatters.first).
to be_a(RSpec::Core::Formatters::DocumentationFormatter)
end
end
"""
When I run `rspec spec/example_spec.rb --options my.options`
Then the examples should all pass
Scenario: RSpec ignores `./.rspec` when custom options file is used
Given a file named "my.options" with:
"""
--format documentation
"""
And a file named ".rspec" with:
"""
--color
"""
And a file named "spec/example_spec.rb" with:
"""ruby
RSpec.describe "custom options file" do
it "causes .rspec to be ignored" do
expect(RSpec.configuration.color).to be_falsey
end
end
"""
When I run `rspec spec/example_spec.rb --options my.options`
Then the examples should all pass
Scenario: Using ERB in `.rspec`
Given a file named ".rspec" with:
"""
--format <%= true ? 'documentation' : 'progress' %>
"""
And a file named "spec/example_spec.rb" with:
"""ruby
RSpec.describe "formatter" do
it "is set to documentation" do
expect(RSpec.configuration.formatters.first).
to be_an(RSpec::Core::Formatters::DocumentationFormatter)
end
end
"""
When I run `rspec ./spec/example_spec.rb`
Then the examples should all pass
|