rspec-core 2.4.0 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/Gemfile +9 -4
- data/Guardfile +3 -3
- data/README.md +1 -1
- data/features/.nav +7 -2
- data/features/{README.markdown → Autotest.md} +17 -20
- data/features/Changelog.md +57 -2
- data/features/README.md +17 -0
- data/features/Upgrade.md +8 -66
- data/features/command_line/configure.feature +2 -2
- data/features/command_line/example_name_option.feature +10 -10
- data/features/command_line/exit_status.feature +4 -4
- data/features/command_line/line_number_appended_to_path.feature +11 -11
- data/features/command_line/line_number_option.feature +9 -9
- data/features/command_line/tag.feature +9 -9
- data/features/configuration/custom_settings.feature +3 -3
- data/features/configuration/fail_fast.feature +3 -3
- data/features/configuration/read_options_from_file.feature +4 -4
- data/features/example_groups/shared_example_group.feature +4 -4
- data/features/expectation_framework_integration/configure_expectation_framework.feature +8 -9
- data/features/filtering/exclusion_filters.feature +1 -1
- data/features/filtering/run_all_when_everything_filtered.feature +1 -1
- data/features/formatters/custom_formatter.feature +17 -13
- data/features/helper_methods/arbitrary_methods.feature +40 -0
- data/features/helper_methods/let.feature +50 -0
- data/features/hooks/before_and_after_hooks.feature +10 -10
- data/features/hooks/filtering.feature +37 -20
- data/features/metadata/described_class.feature +1 -1
- data/features/mock_framework_integration/use_flexmock.feature +1 -1
- data/features/mock_framework_integration/use_mocha.feature +1 -1
- data/features/mock_framework_integration/use_rr.feature +1 -1
- data/features/mock_framework_integration/use_rspec.feature +1 -1
- data/features/spec_files/arbitrary_file_suffix.feature +1 -1
- data/features/step_definitions/additional_cli_steps.rb +1 -1
- data/features/subject/attribute_of_subject.feature +2 -2
- data/features/subject/explicit_subject.feature +5 -5
- data/features/subject/implicit_receiver.feature +2 -2
- data/features/subject/implicit_subject.feature +2 -2
- data/lib/autotest/rspec2.rb +63 -13
- data/lib/rspec/core/configuration.rb +0 -1
- data/lib/rspec/core/configuration_options.rb +15 -12
- data/lib/rspec/core/example.rb +14 -6
- data/lib/rspec/core/example_group.rb +5 -4
- data/lib/rspec/core/formatters/base_formatter.rb +1 -1
- data/lib/rspec/core/formatters/documentation_formatter.rb +1 -1
- data/lib/rspec/core/formatters/html_formatter.rb +131 -32
- data/lib/rspec/core/formatters/snippet_extractor.rb +1 -1
- data/lib/rspec/core/hooks.rb +16 -1
- data/lib/rspec/core/option_parser.rb +6 -6
- data/lib/rspec/core/rake_task.rb +1 -1
- data/lib/rspec/core/subject.rb +7 -7
- data/lib/rspec/core/version.rb +1 -1
- data/rspec-core.gemspec +0 -12
- data/script/FullBuildRakeFile +63 -0
- data/script/cucumber +1 -0
- data/script/full_build +1 -0
- data/script/spec +1 -0
- data/spec/autotest/failed_results_re_spec.rb +22 -5
- data/spec/autotest/rspec_spec.rb +132 -16
- data/spec/rspec/core/configuration_options_spec.rb +38 -6
- data/spec/rspec/core/example_group_spec.rb +15 -64
- data/spec/rspec/core/formatters/base_formatter_spec.rb +23 -0
- data/spec/rspec/core/formatters/html_formatted-1.8.6.html +150 -48
- data/spec/rspec/core/formatters/html_formatted-1.8.7-jruby.html +151 -49
- data/spec/rspec/core/formatters/html_formatted-1.8.7.html +150 -48
- data/spec/rspec/core/formatters/html_formatted-1.9.1.html +150 -48
- data/spec/rspec/core/formatters/html_formatted-1.9.2.html +150 -48
- data/spec/rspec/core/formatters/text_mate_formatted-1.8.6.html +150 -48
- data/spec/rspec/core/formatters/text_mate_formatted-1.8.7-jruby.html +151 -49
- data/spec/rspec/core/formatters/text_mate_formatted-1.8.7.html +150 -48
- data/spec/rspec/core/formatters/text_mate_formatted-1.9.1.html +150 -48
- data/spec/rspec/core/formatters/text_mate_formatted-1.9.2.html +150 -48
- data/spec/rspec/core/hooks_filtering_spec.rb +49 -0
- data/spec/rspec/core/rake_task_spec.rb +3 -3
- data/spec/rspec/core/subject_spec.rb +81 -0
- metadata +20 -22
- data/History.markdown +0 -186
- data/Upgrade.markdown +0 -345
@@ -0,0 +1,63 @@
|
|
1
|
+
# this is in a separate rakefile because our main one depends on the bundled gems
|
2
|
+
# already being installed. This must be able to run w/o bundled gems installed.
|
3
|
+
|
4
|
+
def rake(command = "")
|
5
|
+
sh "rake #{command}"
|
6
|
+
end
|
7
|
+
|
8
|
+
desc "Run a full build: install necessary gems with bundler, runs specs, run cukes"
|
9
|
+
task :build => :bundle_install do
|
10
|
+
rake
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Install necessary gems with bundler and runs specs"
|
14
|
+
task :spec => :bundle_install do
|
15
|
+
rake "spec"
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "Install necessary gems with bundler and runs cukes"
|
19
|
+
task :cucumber => :bundle_install do
|
20
|
+
rake "cucumber"
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "Prints description of current ruby interpreter"
|
24
|
+
task :print_ruby_description do
|
25
|
+
description = if defined?(RUBY_DESCRIPTION)
|
26
|
+
RUBY_DESCRIPTION
|
27
|
+
else
|
28
|
+
# RUBY_DESCRIPTION is undefined on 1.8.6
|
29
|
+
"ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE} patchlevel #{RUBY_PATCHLEVEL}) [#{RUBY_PLATFORM}]"
|
30
|
+
end
|
31
|
+
|
32
|
+
puts
|
33
|
+
puts "=" * 80
|
34
|
+
puts "Using #{description}"
|
35
|
+
puts "=" * 80
|
36
|
+
puts
|
37
|
+
end
|
38
|
+
|
39
|
+
task :bundle_install => :ensure_bundler_installed do
|
40
|
+
# Unfortunately, there is no version of ruby-debug that installs cleanly on 1.9.1 and 1.9.2.
|
41
|
+
# Our Gemfile specifies different versions using conditionals, but we still need to bundle update
|
42
|
+
# to get bundler to use the different versions.
|
43
|
+
if RUBY_VERSION =~ /^1\.9/
|
44
|
+
sh "bundle update ruby-debug-base19"
|
45
|
+
end
|
46
|
+
|
47
|
+
sh "bundle install"
|
48
|
+
end
|
49
|
+
|
50
|
+
task :ensure_bundler_installed => :print_ruby_description do
|
51
|
+
installed = begin
|
52
|
+
require 'rubygems'
|
53
|
+
require 'bundler'
|
54
|
+
true
|
55
|
+
rescue LoadError
|
56
|
+
false
|
57
|
+
end
|
58
|
+
|
59
|
+
unless installed
|
60
|
+
sh "gem install bundler"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
data/script/cucumber
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm 1.8.6,1.8.7,ree,1.9.1,1.9.2,jruby rake -f script/FullBuildRakeFile cucumber | tee tmp/cucumber.out
|
data/script/full_build
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm 1.8.6,1.8.7,ree,1.9.1,1.9.2,jruby rake -f script/FullBuildRakeFile build | tee tmp/full_build.out
|
data/script/spec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm 1.8.6,1.8.7,ree,1.9.1,1.9.2,jruby rake -f script/FullBuildRakeFile spec | tee tmp/spec.out
|
@@ -7,14 +7,31 @@ describe "failed_results_re for autotest" do
|
|
7
7
|
group = RSpec::Core::ExampleGroup.describe("group name")
|
8
8
|
group.example("example name") { "this".should eq("that") }
|
9
9
|
group.run(formatter)
|
10
|
-
RSpec.configuration.stub(:color_enabled?) { false }
|
11
10
|
formatter.dump_failures
|
12
11
|
output.string
|
13
12
|
end
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
context "output does not have color enabled" do
|
15
|
+
before do
|
16
|
+
RSpec.configuration.stub(:color_enabled?) { false }
|
17
|
+
end
|
18
|
+
|
19
|
+
it "matches a failure" do
|
20
|
+
re = Autotest::Rspec2.new.failed_results_re
|
21
|
+
example_output.should =~ re
|
22
|
+
example_output[re, 2].should == __FILE__.sub(File.expand_path('.'),'.')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "output has color enabled" do
|
27
|
+
before do
|
28
|
+
RSpec.configuration.stub(:color_enabled?) { true }
|
29
|
+
end
|
30
|
+
|
31
|
+
it "matches a failure" do
|
32
|
+
re = Autotest::Rspec2.new.failed_results_re
|
33
|
+
example_output.should =~ re
|
34
|
+
example_output[re, 2].should == __FILE__.sub(File.expand_path('.'),'.')
|
35
|
+
end
|
19
36
|
end
|
20
37
|
end
|
data/spec/autotest/rspec_spec.rb
CHANGED
@@ -5,6 +5,138 @@ describe Autotest::Rspec2 do
|
|
5
5
|
let(:spec_cmd) { File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'rspec')) }
|
6
6
|
let(:ruby_cmd) { "ruby" }
|
7
7
|
|
8
|
+
before do
|
9
|
+
RSpec.stub(:warn_deprecation)
|
10
|
+
File.stub(:exist?) { false }
|
11
|
+
@orig_argv = ARGV.dup; ARGV.clear
|
12
|
+
end
|
13
|
+
|
14
|
+
after { ARGV.clear; ARGV.concat(@orig_argv) }
|
15
|
+
|
16
|
+
context "with ARGV" do
|
17
|
+
it "passes ARGV to command" do
|
18
|
+
ARGV.concat(%w[-c -f d])
|
19
|
+
rspec_autotest.cl_args.should eq(%w[-c -f d --tty])
|
20
|
+
end
|
21
|
+
|
22
|
+
context "with --skip-bundler" do
|
23
|
+
before do
|
24
|
+
ARGV.concat(%w[--skip-bundler])
|
25
|
+
end
|
26
|
+
it "extracts --skip-bundler" do
|
27
|
+
rspec_autotest.cl_args.should eq(%w[--tty])
|
28
|
+
end
|
29
|
+
|
30
|
+
it "sets skip_bundler? true" do
|
31
|
+
rspec_autotest.skip_bundler?.should be_true
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "handling bundler" do
|
37
|
+
context "gemfile, no prefix" do
|
38
|
+
before do
|
39
|
+
File.stub(:exist?).with("./Gemfile") { true }
|
40
|
+
end
|
41
|
+
|
42
|
+
it "warns of deprecation of implicit inclusion of 'bundle exec'" do
|
43
|
+
RSpec.should_receive(:warn_deprecation)
|
44
|
+
rspec_autotest.make_test_cmd({})
|
45
|
+
end
|
46
|
+
|
47
|
+
it "includes bundle exec" do
|
48
|
+
rspec_autotest.
|
49
|
+
make_test_cmd({'a' => 'b'}).should match(/bundle exec/)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context "gemfile, no prefix, --skip-bundler" do
|
54
|
+
before do
|
55
|
+
File.stub(:exist?).with("./Gemfile") { true }
|
56
|
+
ARGV.concat(%w[--skip-bundler])
|
57
|
+
end
|
58
|
+
|
59
|
+
it "does not warn" do
|
60
|
+
RSpec.should_not_receive(:warn_deprecation)
|
61
|
+
rspec_autotest.make_test_cmd({})
|
62
|
+
end
|
63
|
+
|
64
|
+
it "does not include bundle exec" do
|
65
|
+
rspec_autotest.
|
66
|
+
make_test_cmd({'a' => 'b'}).should_not match(/bundle exec/)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context "no gemfile, prefix" do
|
71
|
+
before do
|
72
|
+
File.stub(:exist?).with("./Gemfile") { false }
|
73
|
+
end
|
74
|
+
|
75
|
+
it "does not warn" do
|
76
|
+
RSpec.should_not_receive(:warn_deprecation)
|
77
|
+
rspec_autotest.make_test_cmd({'a' => 'b'})
|
78
|
+
end
|
79
|
+
|
80
|
+
it "includes bundle exec" do
|
81
|
+
rspec_autotest.prefix = "bundle exec "
|
82
|
+
rspec_autotest.
|
83
|
+
make_test_cmd({'a' => 'b'}).should match(/bundle exec/)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
context "gemfile, prefix" do
|
88
|
+
before do
|
89
|
+
File.stub(:exist?).with("./Gemfile") { true }
|
90
|
+
rspec_autotest.prefix = "bundle exec "
|
91
|
+
end
|
92
|
+
|
93
|
+
it "does not warn" do
|
94
|
+
RSpec.should_not_receive(:warn_deprecation)
|
95
|
+
rspec_autotest.make_test_cmd({'a' => 'b'})
|
96
|
+
end
|
97
|
+
|
98
|
+
it "includes bundle exec" do
|
99
|
+
rspec_autotest.prefix = "bundle exec "
|
100
|
+
rspec_autotest.
|
101
|
+
make_test_cmd({'a' => 'b'}).should match(/bundle exec/)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context "gemfile, prefix, --skip-bundler" do
|
106
|
+
before do
|
107
|
+
File.stub(:exist?).with("./Gemfile") { true }
|
108
|
+
rspec_autotest.prefix = "bundle exec "
|
109
|
+
rspec_autotest.stub(:skip_bundler?) { true }
|
110
|
+
end
|
111
|
+
|
112
|
+
it "does not warn" do
|
113
|
+
RSpec.should_not_receive(:warn_deprecation)
|
114
|
+
rspec_autotest.make_test_cmd({'a' => 'b'})
|
115
|
+
end
|
116
|
+
|
117
|
+
it "does not include bundle exec" do
|
118
|
+
rspec_autotest.
|
119
|
+
make_test_cmd({'a' => 'b'}).should_not match(/bundle exec/)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
context "no gemfile, no prefix" do
|
124
|
+
before do
|
125
|
+
File.stub(:exist?).with("./Gemfile") { false }
|
126
|
+
end
|
127
|
+
|
128
|
+
it "does not warn" do
|
129
|
+
RSpec.should_not_receive(:warn_deprecation)
|
130
|
+
rspec_autotest.make_test_cmd({'a' => 'b'})
|
131
|
+
end
|
132
|
+
|
133
|
+
it "does not include bundle exec" do
|
134
|
+
rspec_autotest.
|
135
|
+
make_test_cmd({'a' => 'b'}).should_not match(/bundle exec/)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
8
140
|
describe "commands" do
|
9
141
|
before do
|
10
142
|
rspec_autotest.stub(:ruby => ruby_cmd)
|
@@ -110,20 +242,4 @@ describe Autotest::Rspec2 do
|
|
110
242
|
rspec_autotest.normalize(@files_to_test).should have(1).file
|
111
243
|
end
|
112
244
|
end
|
113
|
-
|
114
|
-
describe "ruby command" do
|
115
|
-
context "using bundler" do
|
116
|
-
it "returns 'bundle exec'" do
|
117
|
-
File.stub(:exists?).with("./Gemfile") { true }
|
118
|
-
rspec_autotest.make_test_cmd({'a' => 'b'}).should =~ /bundle exec .*ruby/
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
context "not using bundler" do
|
123
|
-
it "returns the ruby command generated by Autotest" do
|
124
|
-
File.stub(:exists?).with("./Gemfile") { false }
|
125
|
-
rspec_autotest.make_test_cmd({'a' => 'b'}).should_not =~ /bundle exec/
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
245
|
end
|
@@ -162,6 +162,7 @@ describe RSpec::Core::ConfigurationOptions do
|
|
162
162
|
it "does not send --drb back to the parser after parsing options" do
|
163
163
|
config_options_object("--drb", "--color").drb_argv.should_not include("--drb")
|
164
164
|
end
|
165
|
+
|
165
166
|
end
|
166
167
|
|
167
168
|
describe "files_or_directories_to_run" do
|
@@ -204,6 +205,38 @@ describe RSpec::Core::ConfigurationOptions do
|
|
204
205
|
config_options_object(*%w[--options custom.opts]).drb_argv.should include("--options", "custom.opts")
|
205
206
|
end
|
206
207
|
|
208
|
+
context "with tags" do
|
209
|
+
it "includes the tags" do
|
210
|
+
coo = config_options_object("--tag", "tag")
|
211
|
+
coo.drb_argv.should eq(["--tag", "tag"])
|
212
|
+
end
|
213
|
+
|
214
|
+
it "leaves tags intact" do
|
215
|
+
coo = config_options_object("--tag", "tag")
|
216
|
+
coo.drb_argv
|
217
|
+
coo.options[:filter].should eq( {:tag=>true} )
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
context "with formatters" do
|
222
|
+
it "includes the formatters" do
|
223
|
+
coo = config_options_object("--format", "d")
|
224
|
+
coo.drb_argv.should eq(["--format", "d"])
|
225
|
+
end
|
226
|
+
|
227
|
+
it "leaves formatters intact" do
|
228
|
+
coo = config_options_object("--format", "d")
|
229
|
+
coo.drb_argv
|
230
|
+
coo.options[:formatters].should eq([["d"]])
|
231
|
+
end
|
232
|
+
|
233
|
+
it "leaves output intact" do
|
234
|
+
coo = config_options_object("--format", "p", "--out", "foo.txt", "--format", "d")
|
235
|
+
coo.drb_argv
|
236
|
+
coo.options[:formatters].should eq([["p","foo.txt"],["d"]])
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
207
240
|
context "--drb specified in ARGV" do
|
208
241
|
it "renders all the original arguments except --drb" do
|
209
242
|
config_options_object(*%w[ --drb --color --format s --line_number 1 --example pattern --profile --backtrace -I path/a -I path/b --require path/c --require path/d]).
|
@@ -239,7 +272,7 @@ describe RSpec::Core::ConfigurationOptions do
|
|
239
272
|
end
|
240
273
|
end
|
241
274
|
|
242
|
-
describe "sources: ~/.rspec, ./.rspec, custom,
|
275
|
+
describe "sources: ~/.rspec, ./.rspec, custom, CLI, and SPEC_OPTS" do
|
243
276
|
let(:local_options_file) { File.join(Dir.tmpdir, ".rspec-local") }
|
244
277
|
let(:global_options_file) { File.join(Dir.tmpdir, ".rspec-global") }
|
245
278
|
let(:custom_options_file) { File.join(Dir.tmpdir, "custom.options") }
|
@@ -280,16 +313,15 @@ describe RSpec::Core::ConfigurationOptions do
|
|
280
313
|
options[:drb].should be_true
|
281
314
|
end
|
282
315
|
|
283
|
-
it "prefers
|
316
|
+
it "prefers SPEC_OPTS over CLI" do
|
284
317
|
ENV["SPEC_OPTS"] = "--format spec_opts"
|
285
|
-
parse_options("--format", "cli")[:formatters].should eq([['
|
318
|
+
parse_options("--format", "cli")[:formatters].should eq([['spec_opts']])
|
286
319
|
end
|
287
320
|
|
288
|
-
it "prefers
|
321
|
+
it "prefers CLI over file options" do
|
289
322
|
write_options(:local, "--format local")
|
290
323
|
write_options(:global, "--format global")
|
291
|
-
|
292
|
-
parse_options[:formatters].should eq([['spec_opts']])
|
324
|
+
parse_options("--format", "cli")[:formatters].should eq([['cli']])
|
293
325
|
end
|
294
326
|
|
295
327
|
it "prefers local file options over global" do
|
@@ -228,6 +228,21 @@ module RSpec::Core
|
|
228
228
|
|
229
229
|
end
|
230
230
|
|
231
|
+
[:focus, :focused].each do |example_alias|
|
232
|
+
describe "##{example_alias}" do
|
233
|
+
let(:group) { ExampleGroup.describe }
|
234
|
+
subject { group.send example_alias, "a focused example" }
|
235
|
+
|
236
|
+
it 'defines an example that can be filtered with :focused => true' do
|
237
|
+
subject.metadata.should include(:focused => true)
|
238
|
+
end
|
239
|
+
|
240
|
+
it 'defines an example that can be filtered with :focus => true' do
|
241
|
+
subject.metadata.should include(:focus => true)
|
242
|
+
end
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
231
246
|
describe "#before, after, and around hooks" do
|
232
247
|
|
233
248
|
it "runs the before alls in order" do
|
@@ -620,70 +635,6 @@ module RSpec::Core
|
|
620
635
|
end
|
621
636
|
end
|
622
637
|
|
623
|
-
describe "#its" do
|
624
|
-
context "with nil value" do
|
625
|
-
subject do
|
626
|
-
Class.new do
|
627
|
-
def nil_value
|
628
|
-
nil
|
629
|
-
end
|
630
|
-
end.new
|
631
|
-
end
|
632
|
-
its(:nil_value) { should be_nil }
|
633
|
-
end
|
634
|
-
|
635
|
-
context "with nested attributes" do
|
636
|
-
subject do
|
637
|
-
Class.new do
|
638
|
-
def name
|
639
|
-
"John"
|
640
|
-
end
|
641
|
-
end.new
|
642
|
-
end
|
643
|
-
its("name.size") { should == 4 }
|
644
|
-
its("name.size.class") { should == Fixnum }
|
645
|
-
end
|
646
|
-
|
647
|
-
context "when it is a Hash" do
|
648
|
-
subject do
|
649
|
-
{ :attribute => 'value',
|
650
|
-
'another_attribute' => 'another_value' }
|
651
|
-
end
|
652
|
-
its([:attribute]) { should == 'value' }
|
653
|
-
its([:attribute]) { should_not == 'another_value' }
|
654
|
-
its([:another_attribute]) { should == 'another_value' }
|
655
|
-
its([:another_attribute]) { should_not == 'value' }
|
656
|
-
its(:keys) { should =~ ['another_attribute', :attribute] }
|
657
|
-
context "when referring to an attribute without the proper array syntax" do
|
658
|
-
context "it raises an error" do
|
659
|
-
its(:attribute) do
|
660
|
-
expect do
|
661
|
-
should eq('value')
|
662
|
-
end.to raise_error(NoMethodError)
|
663
|
-
end
|
664
|
-
end
|
665
|
-
end
|
666
|
-
end
|
667
|
-
|
668
|
-
context "calling and overriding super" do
|
669
|
-
it "calls to the subject defined in the parent group" do
|
670
|
-
group = ExampleGroup.describe(Array) do
|
671
|
-
subject { [1, 'a'] }
|
672
|
-
|
673
|
-
its(:last) { should == 'a' }
|
674
|
-
|
675
|
-
describe '.first' do
|
676
|
-
def subject; super().first; end
|
677
|
-
|
678
|
-
its(:next) { should == 2 }
|
679
|
-
end
|
680
|
-
end
|
681
|
-
|
682
|
-
group.run.should be_true
|
683
|
-
end
|
684
|
-
end
|
685
|
-
|
686
|
-
end
|
687
638
|
|
688
639
|
describe "#top_level_description" do
|
689
640
|
it "returns the description from the outermost example group" do
|
@@ -31,6 +31,29 @@ describe RSpec::Core::Formatters::BaseFormatter do
|
|
31
31
|
formatter.send(:read_failed_line, exception, example)
|
32
32
|
}.should_not raise_error
|
33
33
|
end
|
34
|
+
|
35
|
+
context "when String alias to_int to_i" do
|
36
|
+
before do
|
37
|
+
class String
|
38
|
+
alias :to_int :to_i
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
after do
|
43
|
+
class String
|
44
|
+
undef to_int
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
it "doesn't hang when file exists" do
|
49
|
+
exception = mock(:Exception, :backtrace => [ "#{__FILE__}:#{__LINE__}"])
|
50
|
+
|
51
|
+
example = mock(:Example, :file_path => __FILE__)
|
52
|
+
formatter.send(:read_failed_line, exception, example).should
|
53
|
+
eql %Q{ exception = mock(:Exception, :backtrace => [ "\#{__FILE__}:\#{__LINE__}"])\n}
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
34
57
|
end
|
35
58
|
|
36
59
|
end
|