rspec-core 2.0.0.beta.20 → 2.0.0.beta.22
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/.rspec +1 -1
- data/Gemfile +7 -6
- data/History.md +30 -0
- data/Rakefile +3 -43
- data/bin/rspec +2 -1
- data/features/configuration/{options_file.feature → read_options_from_file.feature} +29 -25
- data/features/example_groups/shared_example_group.feature +10 -6
- data/features/hooks/before_and_after_hooks.feature +38 -0
- data/lib/autotest/rspec2.rb +10 -2
- data/lib/rspec/core.rb +8 -0
- data/lib/rspec/core/configuration.rb +16 -10
- data/lib/rspec/core/configuration_options.rb +7 -3
- data/lib/rspec/core/example.rb +7 -0
- data/lib/rspec/core/example_group.rb +15 -2
- data/lib/rspec/core/extensions/module_eval_with_args.rb +9 -29
- data/lib/rspec/core/extensions/object.rb +0 -2
- data/lib/rspec/core/formatters/base_formatter.rb +8 -6
- data/lib/rspec/core/formatters/base_text_formatter.rb +18 -10
- data/lib/rspec/core/formatters/documentation_formatter.rb +9 -9
- data/lib/rspec/core/option_parser.rb +0 -4
- data/lib/rspec/core/rake_task.rb +85 -39
- data/lib/rspec/core/reporter.rb +18 -5
- data/lib/rspec/core/runner.rb +8 -18
- data/lib/rspec/core/shared_example_group.rb +2 -1
- data/lib/rspec/core/version.rb +1 -1
- data/rspec-core.gemspec +33 -233
- data/spec/autotest/failed_results_re_spec.rb +1 -2
- data/spec/autotest/rspec_spec.rb +62 -42
- data/spec/rspec/core/configuration_options_spec.rb +12 -29
- data/spec/rspec/core/configuration_spec.rb +8 -8
- data/spec/rspec/core/example_group_spec.rb +38 -7
- data/spec/rspec/core/example_spec.rb +16 -1
- data/spec/rspec/core/formatters/base_formatter_spec.rb +6 -0
- data/spec/rspec/core/formatters/base_text_formatter_spec.rb +125 -10
- data/spec/rspec/core/formatters/documentation_formatter_spec.rb +36 -0
- data/spec/rspec/core/formatters/html_formatted-1.8.7-jruby.html +282 -0
- data/spec/rspec/core/formatters/html_formatted-1.9.1.html +22 -2
- data/spec/rspec/core/formatters/text_mate_formatted-1.8.7-jruby.html +280 -0
- data/spec/rspec/core/formatters/text_mate_formatted-1.9.1.html +280 -0
- data/spec/rspec/core/rake_task_spec.rb +128 -0
- data/spec/rspec/core/reporter_spec.rb +36 -0
- data/spec/rspec/core/runner_spec.rb +0 -18
- data/spec/rspec/core/shared_example_group_spec.rb +22 -2
- data/spec/rspec/core/world_spec.rb +13 -15
- data/spec/spec_helper.rb +2 -1
- metadata +110 -13
- data/VERSION +0 -1
- data/lib/rspec/autorun.rb +0 -2
data/.rspec
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
--color
|
data/Gemfile
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
3
|
gem "rake"
|
4
|
-
gem "jeweler"
|
5
4
|
gem "cucumber"
|
6
5
|
gem "aruba", ">= 0.2.0"
|
7
6
|
gem "autotest"
|
@@ -15,9 +14,11 @@ gem "syntax"
|
|
15
14
|
gem "rspec-core", :path => "."
|
16
15
|
gem "rspec-expectations", :path => "../rspec-expectations"
|
17
16
|
gem "rspec-mocks", :path => "../rspec-mocks"
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
unless RUBY_PLATFORM == "java"
|
18
|
+
case RUBY_VERSION
|
19
|
+
when /^1.9.2/
|
20
|
+
gem "ruby-debug19"
|
21
|
+
when /^1.8/
|
22
|
+
gem "ruby-debug"
|
23
|
+
end
|
23
24
|
end
|
data/History.md
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
## rspec-core release history (incomplete)
|
2
|
+
|
3
|
+
### 2.0.0.beta.22 / 2010-09-12
|
4
|
+
|
5
|
+
[full changelog](http://github.com/rspec/rspec-core/compare/v2.0.0.beta.20...v2.0.0.beta.22)
|
6
|
+
|
7
|
+
* Enhancements
|
8
|
+
* removed at_exit hook
|
9
|
+
* CTRL-C stops the run (almost) immediately
|
10
|
+
* first it cleans things up by running the appropriate after(:all) and after(:suite) hooks
|
11
|
+
* then it reports on any examples that have already run
|
12
|
+
* cleaned up rake task
|
13
|
+
* generate correct task under variety of conditions
|
14
|
+
* options are more consistent
|
15
|
+
* deprecated redundant options
|
16
|
+
* run 'bundle exec autotest' when Gemfile is present
|
17
|
+
* support ERB in .rspec options files (Justin Ko)
|
18
|
+
* depend on bundler for development tasks (Myron Marsten)
|
19
|
+
* add example_group_finished to formatters and reporter (Roman Chernyatchik)
|
20
|
+
|
21
|
+
* Bug fixes
|
22
|
+
* support paths with spaces when using autotest (Andreas Neuhaus)
|
23
|
+
* fix module_exec with ruby 1.8.6 (Myron Marsten)
|
24
|
+
* remove context method from top-level
|
25
|
+
* was conflicting with irb, for example
|
26
|
+
* errors in before(:all) are now reported correctly (Chad Humphries)
|
27
|
+
|
28
|
+
* Removals
|
29
|
+
* removed -o --options-file command line option
|
30
|
+
* use ./.rspec and ~/.rspec
|
data/Rakefile
CHANGED
@@ -1,54 +1,14 @@
|
|
1
1
|
require "bundler"
|
2
2
|
Bundler.setup
|
3
|
+
Bundler::GemHelper.install_tasks
|
3
4
|
|
4
|
-
gem "jeweler", ">= 1.4.0"
|
5
5
|
require "rake"
|
6
6
|
require "yaml"
|
7
7
|
|
8
|
-
$:.unshift File.expand_path("../lib", __FILE__)
|
9
|
-
|
10
8
|
require "rake/rdoctask"
|
11
9
|
require "rspec/core/rake_task"
|
12
|
-
require "rspec/core/version"
|
13
10
|
require "cucumber/rake/task"
|
14
11
|
|
15
|
-
begin
|
16
|
-
require "jeweler"
|
17
|
-
Jeweler::Tasks.new do |gem|
|
18
|
-
gem.name = "rspec-core"
|
19
|
-
gem.version = RSpec::Core::Version::STRING
|
20
|
-
gem.summary = "rspec-core-#{RSpec::Core::Version::STRING}"
|
21
|
-
gem.description = "RSpec runner and example groups"
|
22
|
-
gem.email = "dchelimsky@gmail.com;chad.humphries@gmail.com"
|
23
|
-
gem.homepage = "http://github.com/rspec/rspec-core"
|
24
|
-
gem.authors = ["Chad Humphries", "David Chelimsky"]
|
25
|
-
gem.rubyforge_project = "rspec"
|
26
|
-
gem.add_development_dependency "rspec-expectations", ">= #{RSpec::Core::Version::STRING}"
|
27
|
-
gem.add_development_dependency "rspec-mocks", ">= #{RSpec::Core::Version::STRING}"
|
28
|
-
gem.add_development_dependency "cucumber", ">= 0.5.3"
|
29
|
-
gem.add_development_dependency "autotest", ">= 4.2.9"
|
30
|
-
gem.post_install_message = <<-EOM
|
31
|
-
#{"*"*50}
|
32
|
-
|
33
|
-
Thank you for installing #{gem.summary}
|
34
|
-
|
35
|
-
Please be sure to look at Upgrade.markdown to see what might have changed
|
36
|
-
since the last release.
|
37
|
-
|
38
|
-
#{"*"*50}
|
39
|
-
EOM
|
40
|
-
end
|
41
|
-
rescue LoadError
|
42
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
43
|
-
end
|
44
|
-
|
45
|
-
namespace :gem do
|
46
|
-
desc "push to gemcutter"
|
47
|
-
task :push => :build do
|
48
|
-
system "gem push pkg/rspec-core-#{RSpec::Core::Version::STRING}.gem"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
12
|
RSpec::Core::RakeTask.new(:spec)
|
53
13
|
|
54
14
|
desc "Run all examples using rcov"
|
@@ -81,7 +41,7 @@ if RUBY_VERSION.to_f >= 1.9
|
|
81
41
|
t.cucumber_opts = %w{--format progress}
|
82
42
|
end
|
83
43
|
|
84
|
-
task :default => [:
|
44
|
+
task :default => [:spec, :cucumber]
|
85
45
|
else
|
86
46
|
Cucumber::Rake::Task.new(:cucumber) do |t|
|
87
47
|
t.rcov = true
|
@@ -90,7 +50,7 @@ else
|
|
90
50
|
t.cucumber_opts = %w{--format progress}
|
91
51
|
end
|
92
52
|
|
93
|
-
task :default => [:
|
53
|
+
task :default => [:rcov, :cucumber]
|
94
54
|
end
|
95
55
|
|
96
56
|
Rake::RDocTask.new do |rdoc|
|
data/bin/rspec
CHANGED
@@ -1,27 +1,16 @@
|
|
1
|
-
Feature:
|
1
|
+
Feature: read command line configuration options from files
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
RSpec will read command line configuration options from files in
|
4
|
+
two different locations:
|
5
|
+
|
6
|
+
Local: "./.rspec" (i.e. in the project's root directory)
|
7
|
+
Global: "~/.rspec" (i.e. in the user's home directory)
|
6
8
|
|
7
|
-
Options declared in
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
"""
|
13
|
-
RSpec.configure {|c| c.color_enabled = true }
|
14
|
-
|
15
|
-
describe "color_enabled" do
|
16
|
-
context "when set with RSpec.configure" do
|
17
|
-
it "is true" do
|
18
|
-
RSpec.configuration.color_enabled?.should be_true
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
"""
|
23
|
-
When I run "rspec ./spec/example_spec.rb"
|
24
|
-
Then the output should contain "1 example, 0 failures"
|
9
|
+
Options declared in the local file override those in the global file, while
|
10
|
+
those declared in RSpec.configure will override any ".rspec" file.
|
11
|
+
|
12
|
+
NOTE: For backwards compatibility with rspec-1, you can write command line
|
13
|
+
options in a "spec/spec.opts" file and it will be loaded automatically.
|
25
14
|
|
26
15
|
Scenario: color set in .rspec
|
27
16
|
Given a file named ".rspec" with:
|
@@ -33,7 +22,7 @@ Feature: spec/spec.opts
|
|
33
22
|
describe "color_enabled" do
|
34
23
|
context "when set with RSpec.configure" do
|
35
24
|
it "is true" do
|
36
|
-
RSpec.configuration.
|
25
|
+
RSpec.configuration.should be_color_enabled
|
37
26
|
end
|
38
27
|
end
|
39
28
|
end
|
@@ -41,7 +30,7 @@ Feature: spec/spec.opts
|
|
41
30
|
When I run "rspec ./spec/example_spec.rb"
|
42
31
|
Then the output should contain "1 example, 0 failures"
|
43
32
|
|
44
|
-
Scenario: formatter set in
|
33
|
+
Scenario: formatter set in RSpec.configure overrides .rspec
|
45
34
|
Given a file named ".rspec" with:
|
46
35
|
"""
|
47
36
|
--format progress
|
@@ -64,4 +53,19 @@ Feature: spec/spec.opts
|
|
64
53
|
"""
|
65
54
|
When I run "rspec ./spec/example_spec.rb"
|
66
55
|
Then the output should contain "1 example, 0 failures"
|
67
|
-
|
56
|
+
|
57
|
+
Scenario: using ERB in .rspec
|
58
|
+
Given a file named ".rspec" with:
|
59
|
+
"""
|
60
|
+
--format <%= true ? 'documentation' : 'progress' %>
|
61
|
+
"""
|
62
|
+
And a file named "spec/example_spec.rb" with:
|
63
|
+
"""
|
64
|
+
describe "formatter" do
|
65
|
+
it "is set to documentation" do
|
66
|
+
RSpec.configuration.formatter.should be_an(RSpec::Core::Formatters::DocumentationFormatter)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
"""
|
70
|
+
When I run "rspec ./spec/example_spec.rb"
|
71
|
+
Then the output should contain "1 example, 0 failures"
|
@@ -104,32 +104,36 @@ Feature: Shared example group
|
|
104
104
|
Scenario: Passing parameters to a shared example group
|
105
105
|
Given a file named "shared_example_group_params_spec.rb" with:
|
106
106
|
"""
|
107
|
-
shared_examples_for "a measurable object" do |
|
108
|
-
|
109
|
-
|
107
|
+
shared_examples_for "a measurable object" do |measurement, measurement_methods|
|
108
|
+
measurement_methods.each do |measurement_method|
|
109
|
+
it "should return #{measurement} from ##{measurement_method}" do
|
110
|
+
subject.send(measurement_method).should == measurement
|
111
|
+
end
|
110
112
|
end
|
111
113
|
end
|
112
114
|
|
113
115
|
describe Array, "with 3 items" do
|
114
116
|
subject { [1, 2, 3] }
|
115
|
-
it_should_behave_like "a measurable object", :size,
|
117
|
+
it_should_behave_like "a measurable object", 3, [:size, :length]
|
116
118
|
end
|
117
119
|
|
118
120
|
describe String, "of 6 characters" do
|
119
121
|
subject { "FooBar" }
|
120
|
-
it_should_behave_like "a measurable object", :
|
122
|
+
it_should_behave_like "a measurable object", 6, [:size, :length]
|
121
123
|
end
|
122
124
|
"""
|
123
125
|
When I run "rspec shared_example_group_params_spec.rb --format documentation"
|
124
|
-
Then the output should contain "
|
126
|
+
Then the output should contain "4 examples, 0 failures"
|
125
127
|
And the output should contain:
|
126
128
|
"""
|
127
129
|
Array with 3 items
|
128
130
|
it should behave like a measurable object
|
129
131
|
should return 3 from #size
|
132
|
+
should return 3 from #length
|
130
133
|
|
131
134
|
String of 6 characters
|
132
135
|
it should behave like a measurable object
|
136
|
+
should return 6 from #size
|
133
137
|
should return 6 from #length
|
134
138
|
"""
|
135
139
|
|
@@ -97,6 +97,44 @@ Feature: before and after hooks
|
|
97
97
|
When I run "rspec ./before_all_spec.rb:15"
|
98
98
|
Then the output should contain "1 example, 0 failures"
|
99
99
|
|
100
|
+
Scenario: failure in before(:all) block
|
101
|
+
Given a file named "before_all_spec.rb" with:
|
102
|
+
"""
|
103
|
+
describe "an error in before(:all)" do
|
104
|
+
before(:all) do
|
105
|
+
raise "oops"
|
106
|
+
end
|
107
|
+
|
108
|
+
it "fails this example" do
|
109
|
+
end
|
110
|
+
|
111
|
+
it "fails this example, too" do
|
112
|
+
end
|
113
|
+
|
114
|
+
after(:all) do
|
115
|
+
puts "after all ran"
|
116
|
+
end
|
117
|
+
end
|
118
|
+
"""
|
119
|
+
When I run "rspec ./before_all_spec.rb --format documentation"
|
120
|
+
Then the output should contain "2 examples, 2 failures"
|
121
|
+
And the output should contain:
|
122
|
+
"""
|
123
|
+
an error in before(:all)
|
124
|
+
fails this example (FAILED - 1)
|
125
|
+
fails this example, too (FAILED - 2)
|
126
|
+
after all ran
|
127
|
+
"""
|
128
|
+
|
129
|
+
When I run "rspec ./before_all_spec.rb:9 --format documentation"
|
130
|
+
Then the output should contain "1 example, 1 failure"
|
131
|
+
And the output should contain:
|
132
|
+
"""
|
133
|
+
an error in before(:all)
|
134
|
+
fails this example, too (FAILED - 1)
|
135
|
+
after all ran
|
136
|
+
"""
|
137
|
+
|
100
138
|
Scenario: define before and after blocks in configuration
|
101
139
|
Given a file named "befores_in_configuration_spec.rb" with:
|
102
140
|
"""
|
data/lib/autotest/rspec2.rb
CHANGED
@@ -38,11 +38,11 @@ class Autotest::Rspec2 < Autotest
|
|
38
38
|
|
39
39
|
def make_test_cmd(files_to_test)
|
40
40
|
files_to_test.empty? ? '' :
|
41
|
-
"#{ruby} #{require_rubygems}#{SPEC_PROGRAM} #{normalize(files_to_test).keys.flatten.join(' ')}"
|
41
|
+
"#{ruby} #{require_rubygems}#{SPEC_PROGRAM} #{normalize(files_to_test).keys.flatten.map { |f| "'#{f}'"}.join(' ')}"
|
42
42
|
end
|
43
43
|
|
44
44
|
def require_rubygems
|
45
|
-
defined?(:Gem) ? "-rrubygems " : ""
|
45
|
+
using_bundler? ? "" : defined?(:Gem) ? "-rrubygems " : ""
|
46
46
|
end
|
47
47
|
|
48
48
|
def normalize(files_to_test)
|
@@ -52,4 +52,12 @@ class Autotest::Rspec2 < Autotest
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
+
def ruby
|
56
|
+
using_bundler? ? "bundle exec" : super
|
57
|
+
end
|
58
|
+
|
59
|
+
def using_bundler?
|
60
|
+
File.exists?('./Gemfile')
|
61
|
+
end
|
62
|
+
|
55
63
|
end
|
data/lib/rspec/core.rb
CHANGED
@@ -49,6 +49,10 @@ module RSpec
|
|
49
49
|
|
50
50
|
end
|
51
51
|
|
52
|
+
class << self
|
53
|
+
attr_accessor :wants_to_quit
|
54
|
+
end
|
55
|
+
|
52
56
|
def self.world
|
53
57
|
@world ||= RSpec::Core::World.new
|
54
58
|
end
|
@@ -60,6 +64,10 @@ module RSpec
|
|
60
64
|
def self.configure
|
61
65
|
yield configuration if block_given?
|
62
66
|
end
|
67
|
+
|
68
|
+
def self.clear_remaining_example_groups
|
69
|
+
world.example_groups.clear
|
70
|
+
end
|
63
71
|
end
|
64
72
|
|
65
73
|
require 'rspec/core/backward_compatibility'
|
@@ -29,17 +29,23 @@ module RSpec
|
|
29
29
|
add_setting :filter
|
30
30
|
add_setting :exclusion_filter
|
31
31
|
add_setting :filename_pattern, :default => '**/*_spec.rb'
|
32
|
-
add_setting :files_to_run
|
33
|
-
add_setting :include_or_extend_modules
|
32
|
+
add_setting :files_to_run
|
33
|
+
add_setting :include_or_extend_modules
|
34
34
|
add_setting :formatter_class, :default => RSpec::Core::Formatters::ProgressFormatter
|
35
|
-
add_setting :backtrace_clean_patterns
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
35
|
+
add_setting :backtrace_clean_patterns
|
36
|
+
|
37
|
+
def initialize
|
38
|
+
self.include_or_extend_modules = []
|
39
|
+
self.files_to_run = []
|
40
|
+
self.backtrace_clean_patterns = [
|
41
|
+
/\/lib\d*\/ruby\//,
|
42
|
+
/bin\/rcov:/,
|
43
|
+
/vendor\/rails/,
|
44
|
+
/bin\/rspec/,
|
45
|
+
/bin\/spec/,
|
46
|
+
/lib\/rspec\/(core|expectations|matchers|mocks)/
|
47
|
+
]
|
48
|
+
end
|
43
49
|
|
44
50
|
# :call-seq:
|
45
51
|
# add_setting(:name)
|
@@ -30,7 +30,6 @@ module RSpec
|
|
30
30
|
argv << "--backtrace" if options[:full_backtrace]
|
31
31
|
argv << "--format" << options[:formatter] if options[:formatter]
|
32
32
|
argv << "--line_number" << options[:line_number] if options[:line_number]
|
33
|
-
argv << "--options_file" << options[:options_file] if options[:options_file]
|
34
33
|
argv << "--example" << options[:full_description].source if options[:full_description]
|
35
34
|
(options[:libs] || []).each do |path|
|
36
35
|
argv << "-I" << path
|
@@ -77,10 +76,15 @@ module RSpec
|
|
77
76
|
def parse_options_file(path)
|
78
77
|
Parser.parse(args_from_options_file(path))
|
79
78
|
end
|
80
|
-
|
79
|
+
|
81
80
|
def args_from_options_file(path)
|
82
81
|
return [] unless File.exist?(path)
|
83
|
-
|
82
|
+
config_string = options_file_as_erb_string(path)
|
83
|
+
config_string.split(/\n+/).map {|l| l.split}.flatten
|
84
|
+
end
|
85
|
+
|
86
|
+
def options_file_as_erb_string(path)
|
87
|
+
ERB.new(IO.read(path)).result(binding)
|
84
88
|
end
|
85
89
|
|
86
90
|
def local_options_file(options)
|
data/lib/rspec/core/example.rb
CHANGED
@@ -37,6 +37,7 @@ module RSpec
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def run(example_group_instance, reporter)
|
40
|
+
return if RSpec.wants_to_quit
|
40
41
|
@example_group_instance = example_group_instance
|
41
42
|
@example_group_instance.example = self
|
42
43
|
|
@@ -73,6 +74,12 @@ module RSpec
|
|
73
74
|
@exception ||= exception
|
74
75
|
end
|
75
76
|
|
77
|
+
def fail_fast(reporter, exception)
|
78
|
+
start(reporter)
|
79
|
+
set_exception(exception)
|
80
|
+
finish(reporter)
|
81
|
+
end
|
82
|
+
|
76
83
|
private
|
77
84
|
|
78
85
|
def with_pending_capture(&block)
|
@@ -20,7 +20,6 @@ module RSpec
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def self.inherited(klass)
|
23
|
-
RSpec::Core::Runner.autorun
|
24
23
|
world.example_groups << klass if klass.superclass == ExampleGroup
|
25
24
|
end
|
26
25
|
|
@@ -67,10 +66,12 @@ module RSpec
|
|
67
66
|
shared_block = world.shared_example_groups[name]
|
68
67
|
raise "Could not find shared example group named \#{name.inspect}" unless shared_block
|
69
68
|
|
70
|
-
describe("#{report_label || "it should behave like"} \#{name}") do
|
69
|
+
group = describe("#{report_label || "it should behave like"} \#{name}") do
|
71
70
|
module_eval_with_args *args, &shared_block
|
72
71
|
module_eval &customization_block if customization_block
|
73
72
|
end
|
73
|
+
group.metadata[:shared_group_name] = name
|
74
|
+
group
|
74
75
|
end
|
75
76
|
END_RUBY
|
76
77
|
end
|
@@ -202,19 +203,31 @@ module RSpec
|
|
202
203
|
end
|
203
204
|
|
204
205
|
def self.run(reporter)
|
206
|
+
if RSpec.wants_to_quit
|
207
|
+
RSpec.clear_remaining_example_groups if top_level?
|
208
|
+
return
|
209
|
+
end
|
205
210
|
@reporter = reporter
|
206
211
|
example_group_instance = new
|
207
212
|
reporter.example_group_started(self)
|
213
|
+
|
208
214
|
begin
|
209
215
|
eval_before_alls(example_group_instance)
|
210
216
|
result_for_this_group = run_examples(example_group_instance, reporter)
|
211
217
|
results_for_descendants = children.map {|child| child.run(reporter)}.all?
|
212
218
|
result_for_this_group && results_for_descendants
|
219
|
+
rescue Exception => ex
|
220
|
+
fail_filtered_examples(ex, reporter)
|
213
221
|
ensure
|
214
222
|
eval_after_alls(example_group_instance)
|
223
|
+
reporter.example_group_finished(self)
|
215
224
|
end
|
216
225
|
end
|
217
226
|
|
227
|
+
def self.fail_filtered_examples(exception, reporter)
|
228
|
+
filtered_examples.each { |example| example.fail_fast(reporter, exception) }
|
229
|
+
end
|
230
|
+
|
218
231
|
def self.run_examples(instance, reporter)
|
219
232
|
filtered_examples.map do |example|
|
220
233
|
begin
|