-
-
Notifications
You must be signed in to change notification settings - Fork 763
/
core_spec.rb
103 lines (82 loc) · 3.1 KB
/
core_spec.rb
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
96
97
98
99
100
101
102
require 'spec_helper'
require 'rspec/support/spec/prevent_load_time_warnings'
RSpec.describe RSpec do
fake_minitest = File.expand_path('../../support/fake_minitest', __FILE__)
it_behaves_like 'a library that issues no warnings when loaded', 'rspec-core',
# Loading minitest issues warnings, so we put our fake minitest on the load
# path to prevent the real minitest from being loaded.
"$LOAD_PATH.unshift '#{fake_minitest}'", 'require "rspec/core"', 'RSpec::Core::Runner.disable_autorun!' do
if RUBY_VERSION == '1.9.2' || (RUBY_PLATFORM == 'java' && RUBY_VERSION == '2.0.0')
before { pending "Not working on #{RUBY_DESCRIPTION}" }
end
end
describe "::configuration" do
it "returns the same object every time" do
expect(RSpec.configuration).to equal(RSpec.configuration)
end
end
describe "::configuration=" do
it "sets the configuration object" do
configuration = RSpec::Core::Configuration.new
RSpec.configuration = configuration
expect(RSpec.configuration).to equal(configuration)
end
end
describe "::configure" do
it "yields the current configuration" do
RSpec.configure do |config|
expect(config).to equal(RSpec::configuration)
end
end
end
describe "::world" do
it "returns the same object every time" do
expect(RSpec.world).to equal(RSpec.world)
end
end
describe "::world=" do
it "sets the world object" do
world = RSpec::Core::World.new
RSpec.world = world
expect(RSpec.world).to equal(world)
end
end
describe ".current_example" do
it "sets the example being executed" do
group = RSpec::Core::ExampleGroup.describe("an example group")
example = group.example("an example")
RSpec.current_example = example
expect(RSpec.current_example).to be(example)
end
end
describe "::reset" do
it "resets the configuration and world objects" do
config_before_reset = RSpec.configuration
world_before_reset = RSpec.world
RSpec.reset
expect(RSpec.configuration).not_to equal(config_before_reset)
expect(RSpec.world).not_to equal(world_before_reset)
end
end
describe "::Core.path_to_executable" do
it 'returns the absolute location of the exe/rspec file' do
expect(File.exist? RSpec::Core.path_to_executable).to be_truthy
expect(File.executable? RSpec::Core.path_to_executable).to be_truthy
end
end
include RSpec::Support::ShellOut
# This is hard to test :(. Best way I could come up with was starting
# fresh ruby process w/o this stuff already loaded.
it "loads mocks and expectations when the constants are referenced", :slow do
code = 'require "rspec"; puts RSpec::Mocks.name; puts RSpec::Expectations.name'
out, err, status = run_ruby_with_current_load_path(code)
expect(err).to eq("")
expect(out.split("\n")).to eq(%w[ RSpec::Mocks RSpec::Expectations ])
expect(status.exitstatus).to eq(0)
end
it 'correctly raises an error when an invalid const is referenced' do
expect {
RSpec::NotAConst
}.to raise_error(NameError, /RSpec::NotAConst/)
end
end