rspec 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +17 -0
- data/Rakefile +7 -4
- data/failing_examples/README.txt +7 -0
- data/failing_examples/diffing_spec.rb +36 -0
- data/failing_examples/failing_autogenerated_docstrings_example.rb +19 -0
- data/failing_examples/failure_in_setup.rb +10 -0
- data/failing_examples/failure_in_teardown.rb +10 -0
- data/failing_examples/mocking_example.rb +40 -0
- data/failing_examples/mocking_with_flexmock.rb +26 -0
- data/failing_examples/mocking_with_mocha.rb +25 -0
- data/failing_examples/mocking_with_rr.rb +27 -0
- data/failing_examples/partial_mock_example.rb +20 -0
- data/failing_examples/predicate_example.rb +29 -0
- data/failing_examples/raising_example.rb +47 -0
- data/failing_examples/spec_helper.rb +3 -0
- data/failing_examples/syntax_error_example.rb +7 -0
- data/failing_examples/team_spec.rb +44 -0
- data/failing_examples/timeout_behaviour.rb +7 -0
- data/lib/autotest/rspec.rb +21 -35
- data/lib/spec.rb +0 -7
- data/lib/spec/example/example_group_methods.rb +10 -4
- data/lib/spec/example/example_methods.rb +4 -0
- data/lib/spec/interop/test.rb +3 -1
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +1 -0
- data/lib/spec/matchers/raise_error.rb +19 -15
- data/lib/spec/runner.rb +14 -0
- data/lib/spec/runner/formatter/story/html_formatter.rb +3 -0
- data/lib/spec/runner/formatter/story/plain_text_formatter.rb +4 -1
- data/lib/spec/runner/option_parser.rb +5 -33
- data/lib/spec/runner/options.rb +51 -18
- data/lib/spec/runner/spec_parser.rb +49 -31
- data/lib/spec/story/runner.rb +0 -2
- data/lib/spec/story/step.rb +8 -6
- data/lib/spec/story/world.rb +1 -0
- data/lib/spec/version.rb +22 -22
- data/pre_commit/lib/pre_commit.rb +4 -0
- data/pre_commit/lib/pre_commit/core.rb +50 -0
- data/pre_commit/lib/pre_commit/pre_commit.rb +54 -0
- data/pre_commit/lib/pre_commit/rspec.rb +111 -0
- data/pre_commit/lib/pre_commit/rspec_on_rails.rb +313 -0
- data/pre_commit/spec/pre_commit/pre_commit_spec.rb +15 -0
- data/pre_commit/spec/pre_commit/rspec_on_rails_spec.rb +36 -0
- data/pre_commit/spec/spec_helper.rb +3 -0
- data/pre_commit/spec/spec_suite.rb +11 -0
- data/rake_tasks/examples.rake +7 -0
- data/rake_tasks/examples_with_rcov.rake +9 -0
- data/rake_tasks/failing_examples_with_html.rake +9 -0
- data/rake_tasks/verify_rcov.rake +7 -0
- data/spec/README.jruby +15 -0
- data/spec/autotest/rspec_spec.rb +11 -80
- data/spec/autotest_helper.rb +2 -1
- data/spec/autotest_matchers.rb +47 -0
- data/spec/rspec_suite.rb +1 -1
- data/spec/spec.opts +6 -0
- data/spec/spec/example/example_group_methods_spec.rb +11 -2
- data/spec/spec/example/example_methods_spec.rb +69 -56
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
- data/spec/spec/interop/test/unit/spec_spec.rb +45 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +39 -4
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +1 -1
- data/spec/spec/matchers/raise_error_spec.rb +7 -1
- data/spec/spec/mocks/bug_report_10263.rb +1 -1
- data/spec/spec/runner/command_line_spec.rb +3 -2
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/examples.txt +2 -0
- data/spec/spec/runner/failed.txt +3 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +365 -0
- data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +54 -54
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +365 -0
- data/spec/spec/runner/option_parser_spec.rb +50 -49
- data/spec/spec/runner/options_spec.rb +72 -2
- data/spec/spec/runner/resources/a_bar.rb +0 -0
- data/spec/spec/runner/resources/a_foo.rb +0 -0
- data/spec/spec/runner/resources/a_spec.rb +1 -0
- data/spec/spec/runner/spec.opts +2 -0
- data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
- data/spec/spec/runner/spec_parser_spec.rb +31 -76
- data/spec/spec/runner/spec_spaced.opts +2 -0
- data/spec/spec/spec_classes.rb +4 -0
- data/spec/spec/story/step_spec.rb +22 -0
- data/spec/spec/story/world_spec.rb +7 -0
- data/stories/interop/test_case_with_should_methods +1 -1
- metadata +85 -5
- data/spec/spec/interop/test/unit/testcase_spec_with_test_unit.rb +0 -20
- data/spec/spec/interop/test/unit/testsuite_adapter_spec_with_test_unit.rb +0 -34
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
##
|
|
4
|
+
# This is not a complete specification of PreCommit, but
|
|
5
|
+
# just a collection of bug fix regression tests.
|
|
6
|
+
describe "The helper method PreCommit#silent_sh" do
|
|
7
|
+
before do
|
|
8
|
+
@pre_commit = PreCommit.new(nil)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# bug in r1802
|
|
12
|
+
it "should return the command output" do
|
|
13
|
+
@pre_commit.send(:silent_sh, "echo foo").should ==("foo\n")
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
|
|
4
|
+
include FileUtils
|
|
5
|
+
|
|
6
|
+
##
|
|
7
|
+
# This is not a complete specification of PreCommit.RSpecOnRails, but
|
|
8
|
+
# just a collection of bug fix regression tests.
|
|
9
|
+
describe "RSpecOnRails pre_commit" do
|
|
10
|
+
before do
|
|
11
|
+
@original_dir = File.expand_path(FileUtils.pwd)
|
|
12
|
+
@rails_app_dir = File.expand_path(File.dirname(__FILE__) + "/../../../example_rails_app/")
|
|
13
|
+
|
|
14
|
+
Dir.chdir(@rails_app_dir)
|
|
15
|
+
rm_rf('vendor/plugins/rspec_on_rails')
|
|
16
|
+
system("svn export ../rspec_on_rails vendor/plugins/rspec_on_rails")
|
|
17
|
+
|
|
18
|
+
@pre_commit = PreCommit::RspecOnRails.new(nil)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
after do
|
|
22
|
+
rm('db/migrate/888_create_purchases.rb', :force => true)
|
|
23
|
+
@pre_commit.destroy_purchase
|
|
24
|
+
Dir.chdir(@original_dir)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# bug in r1802
|
|
28
|
+
it "should fail noisily if there is a migration name conflict" do
|
|
29
|
+
touch('db/migrate/888_create_purchases.rb')
|
|
30
|
+
lambda { @pre_commit.generate_purchase }.should raise_error
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should not fail if tests run ok" do
|
|
34
|
+
lambda { @pre_commit.generate_purchase }.should_not raise_error
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
class SpecSuite
|
|
2
|
+
def run
|
|
3
|
+
system("ruby rspec/spec/rspec_suite.rb") || raise("Rspec Suite FAILED")
|
|
4
|
+
system("ruby rspec_on_rails/spec/rails_suite.rb") || raise("Rails Suite FAILED")
|
|
5
|
+
system("ruby cached_example_rails_app/spec/rails_app_suite.rb") || raise("Rails App Suite FAILED")
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
if $0 == __FILE__
|
|
10
|
+
SpecSuite.new.run
|
|
11
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
require 'spec/rake/spectask'
|
|
3
|
+
|
|
4
|
+
desc "Generate HTML report for failing examples"
|
|
5
|
+
Spec::Rake::SpecTask.new('failing_examples_with_html') do |t|
|
|
6
|
+
t.spec_files = FileList['failing_examples/**/*.rb']
|
|
7
|
+
t.spec_opts = ["--format", "html:../doc/output/documentation/tools/failing_examples.html", "--diff"]
|
|
8
|
+
t.fail_on_error = false
|
|
9
|
+
end
|
data/spec/README.jruby
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
= Running specs on JRuby =
|
|
2
|
+
|
|
3
|
+
svn co http://svn.codehaus.org/jruby/trunk jruby
|
|
4
|
+
cd jruby/jruby
|
|
5
|
+
ant clean
|
|
6
|
+
ant
|
|
7
|
+
# put JRuby's bin dir on your PATH
|
|
8
|
+
jruby -S gem install rake --no-ri --no-rdoc
|
|
9
|
+
jruby -S gem install diff-lcs
|
|
10
|
+
jruby -S gem install syntax
|
|
11
|
+
cd ../testsuites/rspec
|
|
12
|
+
mkdir target
|
|
13
|
+
jruby -S rake checkout_code
|
|
14
|
+
cd target/rspec
|
|
15
|
+
jruby bin/spec spec -c
|
data/spec/autotest/rspec_spec.rb
CHANGED
|
@@ -88,11 +88,10 @@ HERE
|
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
it "should use the ALT_SEPARATOR if it is non-nil" do
|
|
91
|
-
pending("autotest got re-worked so this is failing for the moment")
|
|
92
91
|
@rspec_autotest = Rspec.new
|
|
93
92
|
spec_command = File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec")
|
|
94
93
|
@rspec_autotest.stub!(:spec_commands).and_return [spec_command]
|
|
95
|
-
@rspec_autotest.spec_command.should == spec_command.gsub('/',
|
|
94
|
+
@rspec_autotest.spec_command(@windows_alt_separator).should == spec_command.gsub('/', @windows_alt_separator)
|
|
96
95
|
end
|
|
97
96
|
|
|
98
97
|
it "should not use the ALT_SEPATOR if it is nil" do
|
|
@@ -143,93 +142,25 @@ HERE
|
|
|
143
142
|
end
|
|
144
143
|
end
|
|
145
144
|
|
|
146
|
-
describe Rspec, "
|
|
147
|
-
before :each do
|
|
148
|
-
@rspec_autotest = Rspec.new
|
|
149
|
-
@rspec_autotest.hook :initialize
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
it "should map all filenames in spec/ which end in .rb" do
|
|
153
|
-
@rspec_autotest.instance_eval{@test_mappings}.should have_key(%r%^spec/.*\.rb$%)
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
it "should map all names in lib which end in .rb to the corresponding ones in spec/" do
|
|
157
|
-
@rspec_autotest.instance_eval{@test_mappings}.should have_key(%r%^lib/(.*)\.rb$%)
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
it "should find all files in spec/shares/* and the spec helper in spec/spec_helper" do
|
|
161
|
-
@rspec_autotest.instance_eval{@test_mappings}.should have_key(%r%^spec/(spec_helper|shared/.*)\.rb$%)
|
|
162
|
-
end
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
describe Rspec, "handling results" do
|
|
166
|
-
include AutotestHelper
|
|
167
|
-
|
|
168
|
-
before :each do
|
|
169
|
-
common_setup
|
|
170
|
-
@rspec_autotest = Rspec.new
|
|
171
|
-
@rspec_autotest.stub!(:hook)
|
|
172
|
-
|
|
173
|
-
@results = mock String
|
|
174
|
-
@results.stub!(:scan).and_return ""
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
it "should call hook(:red) if there are failures" do
|
|
178
|
-
@rspec_autotest.stub!(:consolidate_failures).and_return ["spec/some_spec.rb"]
|
|
179
|
-
|
|
180
|
-
@rspec_autotest.should_receive(:hook).with(:red)
|
|
181
|
-
@rspec_autotest.handle_results(@results)
|
|
182
|
-
end
|
|
145
|
+
describe Rspec, "mappings" do
|
|
183
146
|
|
|
184
|
-
|
|
185
|
-
@rspec_autotest.stub!(:consolidate_failures).and_return []
|
|
186
|
-
@rspec_autotest.should_receive(:hook).with(:green)
|
|
187
|
-
@rspec_autotest.handle_results(@results)
|
|
188
|
-
end
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
describe Rspec, "handling failed results" do
|
|
192
|
-
include AutotestHelper
|
|
193
|
-
|
|
194
|
-
before :each do
|
|
195
|
-
common_setup
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
it %(should scan the output into a multi-dimensional array,
|
|
199
|
-
consisting of the failing spec's name as the first element,
|
|
200
|
-
and the failure as the second) do
|
|
201
|
-
@rspec_autotest = Rspec.new
|
|
202
|
-
@rspec_autotest.failed_results(@rspec_output).should == [
|
|
203
|
-
[
|
|
204
|
-
"false should be false",
|
|
205
|
-
"expected: true,\n got: false (using ==)\n./spec/autotest/rspec_spec.rb:203:"
|
|
206
|
-
]
|
|
207
|
-
]
|
|
208
|
-
end
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
describe Rspec, "specs for a given file" do
|
|
212
|
-
before :each do
|
|
147
|
+
before(:each) do
|
|
213
148
|
@lib_file = "lib/something.rb"
|
|
214
149
|
@spec_file = "spec/something_spec.rb"
|
|
215
150
|
@rspec_autotest = Rspec.new
|
|
216
151
|
@rspec_autotest.hook :initialize
|
|
217
|
-
|
|
218
|
-
@rspec_autotest.instance_variable_set("@files", {@lib_file => Time.now, @spec_file => Time.now})
|
|
219
|
-
@rspec_autotest.stub!(:find_files_to_test).and_return true
|
|
220
152
|
end
|
|
221
153
|
|
|
222
154
|
it "should find the spec file for a given lib file" do
|
|
223
|
-
@rspec_autotest.
|
|
155
|
+
@rspec_autotest.should map_specs([@spec_file]).to(@lib_file)
|
|
224
156
|
end
|
|
225
157
|
|
|
226
158
|
it "should find the spec file if given a spec file" do
|
|
227
|
-
@rspec_autotest.
|
|
159
|
+
@rspec_autotest.should map_specs([@spec_file]).to(@spec_file)
|
|
228
160
|
end
|
|
229
161
|
|
|
230
162
|
it "should only find the file if the file is being tracked (in @file)" do
|
|
231
|
-
@
|
|
232
|
-
@rspec_autotest.specs_for_file(@other_file).should == []
|
|
163
|
+
@rspec_autotest.should map_specs([]).to("lib/untracked_file")
|
|
233
164
|
end
|
|
234
165
|
end
|
|
235
166
|
|
|
@@ -246,18 +177,18 @@ HERE
|
|
|
246
177
|
end
|
|
247
178
|
|
|
248
179
|
it "should return no failures if no failures were given in the output" do
|
|
249
|
-
@rspec_autotest.
|
|
250
|
-
@rspec_autotest.consolidate_failures(@rspec_autotest.failed_results).should == {}
|
|
180
|
+
@rspec_autotest.consolidate_failures([[]]).should == {}
|
|
251
181
|
end
|
|
252
182
|
|
|
253
183
|
it "should return a hash with the spec filename => spec name for each failure or error" do
|
|
254
|
-
@rspec_autotest.stub!(:
|
|
184
|
+
@rspec_autotest.stub!(:test_files_for).and_return "./spec/autotest/rspec_spec.rb"
|
|
185
|
+
foo = [
|
|
255
186
|
[
|
|
256
187
|
"false should be false",
|
|
257
188
|
"expected: true,\n got: false (using ==)\n./spec/autotest/rspec_spec.rb:203:"
|
|
258
189
|
]
|
|
259
|
-
]
|
|
260
|
-
@rspec_autotest.consolidate_failures(
|
|
190
|
+
]
|
|
191
|
+
@rspec_autotest.consolidate_failures(foo).should == {@spec_file => ["false should be false"]}
|
|
261
192
|
end
|
|
262
193
|
|
|
263
194
|
end
|
data/spec/autotest_helper.rb
CHANGED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Matchers
|
|
3
|
+
class AutotestMappingMatcher
|
|
4
|
+
def initialize(specs)
|
|
5
|
+
@specs = specs
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def to(file)
|
|
9
|
+
@file = file
|
|
10
|
+
self
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def matches?(autotest)
|
|
14
|
+
@autotest = prepare autotest
|
|
15
|
+
@actual = autotest.test_files_for(@file)
|
|
16
|
+
@actual == @specs
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def failure_message
|
|
20
|
+
"expected #{@autotest.class} to map #{@specs.inspect} to #{@file.inspect}\ngot #{@actual.inspect}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
def prepare autotest
|
|
25
|
+
stub_found_files autotest
|
|
26
|
+
stub_find_order autotest
|
|
27
|
+
autotest
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def stub_found_files autotest
|
|
31
|
+
found_files = @specs.inject({}){|h,f| h[f] = Time.at(0)}
|
|
32
|
+
autotest.stub!(:find_files).and_return(found_files)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def stub_find_order autotest
|
|
36
|
+
find_order = @specs.dup << @file
|
|
37
|
+
autotest.instance_eval { @find_order = find_order }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def map_specs(specs)
|
|
43
|
+
AutotestMappingMatcher.new(specs)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
end
|
data/spec/rspec_suite.rb
CHANGED
data/spec/spec.opts
ADDED
|
@@ -459,14 +459,16 @@ module Spec
|
|
|
459
459
|
|
|
460
460
|
describe '#register' do
|
|
461
461
|
it "should add ExampleGroup to set of ExampleGroups to be run" do
|
|
462
|
-
example_group
|
|
462
|
+
options.example_groups.delete(example_group)
|
|
463
|
+
options.example_groups.should_not include(example_group)
|
|
464
|
+
|
|
465
|
+
example_group.register {}
|
|
463
466
|
options.example_groups.should include(example_group)
|
|
464
467
|
end
|
|
465
468
|
end
|
|
466
469
|
|
|
467
470
|
describe '#unregister' do
|
|
468
471
|
before do
|
|
469
|
-
example_group.register
|
|
470
472
|
options.example_groups.should include(example_group)
|
|
471
473
|
end
|
|
472
474
|
|
|
@@ -475,6 +477,13 @@ module Spec
|
|
|
475
477
|
options.example_groups.should_not include(example_group)
|
|
476
478
|
end
|
|
477
479
|
end
|
|
480
|
+
|
|
481
|
+
describe "#registration_backtrace" do
|
|
482
|
+
it "returns the backtrace of where the ExampleGroup was registered" do
|
|
483
|
+
example_group = Class.new(ExampleGroup)
|
|
484
|
+
example_group.registration_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-1}")
|
|
485
|
+
end
|
|
486
|
+
end
|
|
478
487
|
end
|
|
479
488
|
end
|
|
480
489
|
end
|
|
@@ -14,76 +14,89 @@ module Spec
|
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
describe
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
describe ExampleMethods, "lifecycle" do
|
|
24
|
-
before do
|
|
25
|
-
@options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
|
|
26
|
-
@options.formatters << mock("formatter", :null_object => true)
|
|
27
|
-
@options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
|
|
28
|
-
@reporter = FakeReporter.new(@options)
|
|
29
|
-
@options.reporter = @reporter
|
|
30
|
-
|
|
31
|
-
ExampleMethods.before_all_parts.should == []
|
|
32
|
-
ExampleMethods.before_each_parts.should == []
|
|
33
|
-
ExampleMethods.after_each_parts.should == []
|
|
34
|
-
ExampleMethods.after_all_parts.should == []
|
|
35
|
-
def ExampleMethods.count
|
|
36
|
-
@count ||= 0
|
|
37
|
-
@count = @count + 1
|
|
38
|
-
@count
|
|
17
|
+
describe ExampleMethods do
|
|
18
|
+
describe "with an included module that is reopened" do
|
|
19
|
+
it "should have repoened methods" do
|
|
20
|
+
method(:module_that_is_reopened_method).should_not be_nil
|
|
39
21
|
end
|
|
40
22
|
end
|
|
41
23
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
24
|
+
describe "lifecycle" do
|
|
25
|
+
before do
|
|
26
|
+
@options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
|
|
27
|
+
@options.formatters << mock("formatter", :null_object => true)
|
|
28
|
+
@options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
|
|
29
|
+
@reporter = FakeReporter.new(@options)
|
|
30
|
+
@options.reporter = @reporter
|
|
48
31
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
ExampleMethods.
|
|
32
|
+
ExampleMethods.before_all_parts.should == []
|
|
33
|
+
ExampleMethods.before_each_parts.should == []
|
|
34
|
+
ExampleMethods.after_each_parts.should == []
|
|
35
|
+
ExampleMethods.after_all_parts.should == []
|
|
36
|
+
def ExampleMethods.count
|
|
37
|
+
@count ||= 0
|
|
38
|
+
@count = @count + 1
|
|
39
|
+
@count
|
|
40
|
+
end
|
|
52
41
|
end
|
|
53
42
|
|
|
54
|
-
|
|
55
|
-
ExampleMethods.
|
|
43
|
+
after do
|
|
44
|
+
ExampleMethods.instance_variable_set("@before_all_parts", [])
|
|
45
|
+
ExampleMethods.instance_variable_set("@before_each_parts", [])
|
|
46
|
+
ExampleMethods.instance_variable_set("@after_each_parts", [])
|
|
47
|
+
ExampleMethods.instance_variable_set("@after_all_parts", [])
|
|
56
48
|
end
|
|
57
49
|
|
|
58
|
-
|
|
59
|
-
ExampleMethods.
|
|
60
|
-
|
|
50
|
+
it "should pass before and after callbacks to all ExampleGroup subclasses" do
|
|
51
|
+
ExampleMethods.before(:all) do
|
|
52
|
+
ExampleMethods.count.should == 1
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
ExampleMethods.before(:each) do
|
|
56
|
+
ExampleMethods.count.should == 2
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
ExampleMethods.after(:each) do
|
|
60
|
+
ExampleMethods.count.should == 3
|
|
61
|
+
end
|
|
61
62
|
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
ExampleMethods.after(:all) do
|
|
64
|
+
ExampleMethods.count.should == 4
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
@example_group = Class.new(ExampleGroup) do
|
|
68
|
+
it "should use ExampleMethods callbacks" do
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
@example_group.run
|
|
72
|
+
ExampleMethods.count.should == 5
|
|
64
73
|
end
|
|
65
74
|
|
|
66
|
-
|
|
67
|
-
|
|
75
|
+
describe "run_with_description_capturing" do
|
|
76
|
+
before(:each) do
|
|
77
|
+
@example_group = Class.new(ExampleGroup) do end
|
|
78
|
+
@example = @example_group.new("foo", &(lambda { 2.should == 2 }))
|
|
79
|
+
@example.run_with_description_capturing
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "should provide the generated description" do
|
|
83
|
+
@example.instance_eval { @_matcher_description }.should == "should == 2"
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "should clear the global generated_description" do
|
|
87
|
+
Spec::Matchers.generated_description.should == nil
|
|
68
88
|
end
|
|
69
89
|
end
|
|
70
|
-
@example_group.run
|
|
71
|
-
ExampleMethods.count.should == 5
|
|
72
90
|
end
|
|
73
|
-
|
|
74
|
-
describe "
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
@example.instance_eval { @_matcher_description }.should == "should == 2"
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
it "should clear the global generated_description" do
|
|
86
|
-
Spec::Matchers.generated_description.should == nil
|
|
91
|
+
|
|
92
|
+
describe "#implementation_backtrace" do
|
|
93
|
+
it "returns the backtrace of where the implementation was defined" do
|
|
94
|
+
example_group = Class.new(ExampleGroup) do
|
|
95
|
+
it "should use ExampleMethods callbacks" do
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
example = example_group.examples.first
|
|
99
|
+
example.implementation_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-4}")
|
|
87
100
|
end
|
|
88
101
|
end
|
|
89
102
|
end
|