rspec-core 2.6.0 → 2.6.2.rc
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/Rakefile +15 -0
- data/features/Changelog.md +16 -0
- data/lib/rspec/core.rb +9 -0
- data/lib/rspec/core/backward_compatibility.rb +1 -1
- data/lib/rspec/core/configuration.rb +8 -1
- data/lib/rspec/core/configuration_options.rb +23 -11
- data/lib/rspec/core/reporter.rb +3 -3
- data/lib/rspec/core/version.rb +1 -1
- data/lib/rspec/core/world.rb +7 -7
- data/spec/rspec/core/configuration_options_spec.rb +24 -13
- data/spec/rspec/core/configuration_spec.rb +13 -0
- metadata +13 -10
data/Rakefile
CHANGED
@@ -2,6 +2,20 @@ require "bundler"
|
|
2
2
|
Bundler.setup
|
3
3
|
Bundler::GemHelper.install_tasks
|
4
4
|
|
5
|
+
task :build => :raise_if_psych_is_defined
|
6
|
+
|
7
|
+
task :raise_if_psych_is_defined do
|
8
|
+
if defined?(Psych)
|
9
|
+
raise <<-MSG
|
10
|
+
===============================================================================
|
11
|
+
Gems compiled in Ruby environments with Psych loaded are incompatible with Ruby
|
12
|
+
environments that don't have Psych loaded. Try building this gem in Ruby 1.8.7
|
13
|
+
instead.
|
14
|
+
===============================================================================
|
15
|
+
MSG
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
5
19
|
require "rake"
|
6
20
|
require "yaml"
|
7
21
|
|
@@ -10,6 +24,7 @@ require "rspec/core/rake_task"
|
|
10
24
|
require "rspec/core/version"
|
11
25
|
|
12
26
|
cucumber_loaded = false
|
27
|
+
|
13
28
|
begin
|
14
29
|
require "cucumber/rake/task"
|
15
30
|
|
data/features/Changelog.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
### 2.6.2 / 2011-05-20
|
2
|
+
|
3
|
+
[full changelog](http://github.com/rspec/rspec-core/compare/v2.6.1...v2.6.2)
|
4
|
+
|
5
|
+
* Bug fixes
|
6
|
+
* Warn rather than raise when HOME env var is not defined
|
7
|
+
* Properly merge command-line exclusions with default :if and :unless (joshcooper)
|
8
|
+
|
9
|
+
### 2.6.1 / 2011-05-19
|
10
|
+
|
11
|
+
[full changelog](http://github.com/rspec/rspec-core/compare/v2.6.0...v2.6.1)
|
12
|
+
|
13
|
+
* Bug fixes
|
14
|
+
* Don't extend nil when filters are nil
|
15
|
+
* `require 'rspec/autorun'` when running rcov.
|
16
|
+
|
1
17
|
### 2.6.0 / 2011-05-12
|
2
18
|
|
3
19
|
[full changelog](http://github.com/rspec/rspec-core/compare/v2.5.1...v2.6.0)
|
data/lib/rspec/core.rb
CHANGED
@@ -26,6 +26,8 @@ require 'rspec/core/example_group'
|
|
26
26
|
require 'rspec/core/version'
|
27
27
|
require 'rspec/core/errors'
|
28
28
|
|
29
|
+
require 'rspec/autorun' if $0.split(File::SEPARATOR).last == 'rcov'
|
30
|
+
|
29
31
|
module RSpec
|
30
32
|
autoload :Matchers, 'rspec/matchers'
|
31
33
|
|
@@ -60,6 +62,13 @@ module RSpec
|
|
60
62
|
@configuration ||= RSpec::Core::Configuration.new
|
61
63
|
end
|
62
64
|
|
65
|
+
# Yields the global configuration object
|
66
|
+
#
|
67
|
+
# == Examples
|
68
|
+
#
|
69
|
+
# RSpec.configure do |config|
|
70
|
+
# config.format = 'documentation'
|
71
|
+
# end
|
63
72
|
def self.configure
|
64
73
|
warn_about_deprecated_configure if RSpec.world.example_groups.any?
|
65
74
|
yield configuration if block_given?
|
@@ -13,7 +13,7 @@ be removed from a future version of RSpec.
|
|
13
13
|
|
14
14
|
* #{name} is deprecated.
|
15
15
|
* RSpec is the new top-level module in RSpec-2
|
16
|
-
|
16
|
+
*****************************************************************
|
17
17
|
WARNING
|
18
18
|
RSpec
|
19
19
|
else
|
@@ -349,10 +349,17 @@ EOM
|
|
349
349
|
settings[:exclusion_filter] = filter
|
350
350
|
end
|
351
351
|
|
352
|
+
def exclusion_filter
|
353
|
+
settings[:exclusion_filter] || {}
|
354
|
+
end
|
355
|
+
|
352
356
|
def inclusion_filter=(filter)
|
353
357
|
settings[:inclusion_filter] = filter
|
354
358
|
end
|
355
359
|
|
360
|
+
def inclusion_filter
|
361
|
+
settings[:inclusion_filter] || {}
|
362
|
+
end
|
356
363
|
def filter_run_including(*args)
|
357
364
|
force_overwrite = if args.last.is_a?(Hash) || args.last.is_a?(Symbol)
|
358
365
|
false
|
@@ -362,7 +369,7 @@ EOM
|
|
362
369
|
|
363
370
|
options = build_metadata_hash_from(args)
|
364
371
|
|
365
|
-
if inclusion_filter
|
372
|
+
if inclusion_filter[:line_number] || inclusion_filter[:full_description]
|
366
373
|
warn "Filtering by #{options.inspect} is not possible since " \
|
367
374
|
"you are already filtering by #{inclusion_filter.inspect}"
|
368
375
|
else
|
@@ -2,9 +2,6 @@ module RSpec
|
|
2
2
|
module Core
|
3
3
|
|
4
4
|
class ConfigurationOptions
|
5
|
-
LOCAL_OPTIONS_FILE = ".rspec"
|
6
|
-
GLOBAL_OPTIONS_FILE = File.join(File.expand_path("~"), ".rspec")
|
7
|
-
|
8
5
|
attr_reader :options
|
9
6
|
|
10
7
|
def initialize(args)
|
@@ -15,15 +12,16 @@ module RSpec
|
|
15
12
|
keys = options.keys
|
16
13
|
keys.unshift(:requires) if keys.delete(:requires)
|
17
14
|
keys.unshift(:libs) if keys.delete(:libs)
|
15
|
+
|
18
16
|
formatters = options[:formatters] if keys.delete(:formatters)
|
17
|
+
|
18
|
+
config.exclusion_filter.merge! options[:exclusion_filter] if keys.delete(:exclusion_filter)
|
19
|
+
|
19
20
|
keys.each do |key|
|
20
21
|
config.send("#{key}=", options[key]) if config.respond_to?("#{key}=")
|
21
22
|
end
|
22
|
-
|
23
|
-
|
24
|
-
config.add_formatter(*pair)
|
25
|
-
end
|
26
|
-
end
|
23
|
+
|
24
|
+
formatters.each {|pair| config.add_formatter(*pair) } if formatters
|
27
25
|
end
|
28
26
|
|
29
27
|
def drb_argv
|
@@ -79,11 +77,11 @@ module RSpec
|
|
79
77
|
end
|
80
78
|
|
81
79
|
def local_options
|
82
|
-
@local_options ||= options_from(
|
80
|
+
@local_options ||= options_from(local_options_file)
|
83
81
|
end
|
84
82
|
|
85
83
|
def global_options
|
86
|
-
@global_options ||= options_from(
|
84
|
+
@global_options ||= options_from(global_options_file)
|
87
85
|
end
|
88
86
|
|
89
87
|
def options_from(path)
|
@@ -91,7 +89,7 @@ module RSpec
|
|
91
89
|
end
|
92
90
|
|
93
91
|
def args_from_options_file(path)
|
94
|
-
return [] unless File.exist?(path)
|
92
|
+
return [] unless path && File.exist?(path)
|
95
93
|
config_string = options_file_as_erb_string(path)
|
96
94
|
config_string.split(/\n+/).map {|l| l.split}.flatten
|
97
95
|
end
|
@@ -104,6 +102,20 @@ module RSpec
|
|
104
102
|
def custom_options_file
|
105
103
|
command_line_options[:custom_options_file]
|
106
104
|
end
|
105
|
+
|
106
|
+
def local_options_file
|
107
|
+
".rspec"
|
108
|
+
end
|
109
|
+
|
110
|
+
def global_options_file
|
111
|
+
begin
|
112
|
+
File.join(File.expand_path("~"), ".rspec")
|
113
|
+
rescue ArgumentError
|
114
|
+
warn "Unable to find ~/.rspec because the HOME environment variable is not set"
|
115
|
+
nil
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
107
119
|
end
|
108
120
|
end
|
109
121
|
end
|
data/lib/rspec/core/reporter.rb
CHANGED
@@ -11,11 +11,11 @@ module RSpec::Core
|
|
11
11
|
begin
|
12
12
|
yield self
|
13
13
|
ensure
|
14
|
-
|
14
|
+
finish
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
18
|
+
def finish
|
19
19
|
begin
|
20
20
|
stop
|
21
21
|
notify :start_dump
|
@@ -27,7 +27,7 @@ module RSpec::Core
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
alias_method :abort, :
|
30
|
+
alias_method :abort, :finish
|
31
31
|
|
32
32
|
def start(expected_example_count)
|
33
33
|
@start = Time.now
|
data/lib/rspec/core/version.rb
CHANGED
data/lib/rspec/core/world.rb
CHANGED
@@ -34,8 +34,8 @@ module RSpec
|
|
34
34
|
@filtered_examples = Hash.new { |hash,group|
|
35
35
|
hash[group] = begin
|
36
36
|
examples = group.examples.dup
|
37
|
-
examples = apply_exclusion_filters(examples, exclusion_filter)
|
38
|
-
examples = apply_inclusion_filters(examples, inclusion_filter)
|
37
|
+
examples = apply_exclusion_filters(examples, exclusion_filter)
|
38
|
+
examples = apply_inclusion_filters(examples, inclusion_filter)
|
39
39
|
examples.uniq
|
40
40
|
end
|
41
41
|
}
|
@@ -106,13 +106,13 @@ module RSpec
|
|
106
106
|
example_groups.clear
|
107
107
|
if filter_announcements.empty?
|
108
108
|
reporter.message("No examples found.")
|
109
|
-
elsif inclusion_filter
|
109
|
+
elsif !inclusion_filter.empty?
|
110
110
|
message = "No examples matched #{inclusion_filter.description}."
|
111
111
|
if @configuration.run_all_when_everything_filtered?
|
112
112
|
message << " Running all."
|
113
113
|
end
|
114
114
|
reporter.message(message)
|
115
|
-
elsif exclusion_filter
|
115
|
+
elsif !exclusion_filter.empty?
|
116
116
|
reporter.message(
|
117
117
|
"No examples were matched. Perhaps #{exclusion_filter.description} is excluding everything?")
|
118
118
|
end
|
@@ -122,7 +122,7 @@ module RSpec
|
|
122
122
|
end
|
123
123
|
|
124
124
|
def announce_inclusion_filter(announcements)
|
125
|
-
|
125
|
+
unless inclusion_filter.empty?
|
126
126
|
announcements << "including #{inclusion_filter.description}"
|
127
127
|
end
|
128
128
|
end
|
@@ -139,8 +139,8 @@ module RSpec
|
|
139
139
|
|
140
140
|
private
|
141
141
|
|
142
|
-
def apply?(predicate,
|
143
|
-
lambda {|example| example.metadata.apply?(predicate,
|
142
|
+
def apply?(predicate, filter)
|
143
|
+
lambda {|example| filter.empty? || example.metadata.apply?(predicate, filter)}
|
144
144
|
end
|
145
145
|
|
146
146
|
def declaration_line_numbers
|
@@ -14,6 +14,17 @@ describe RSpec::Core::ConfigurationOptions do
|
|
14
14
|
config_options_object(*args).options
|
15
15
|
end
|
16
16
|
|
17
|
+
it "warns when HOME env var is not set" do
|
18
|
+
begin
|
19
|
+
orig_home = ENV.delete("HOME")
|
20
|
+
coo = RSpec::Core::ConfigurationOptions.new([])
|
21
|
+
coo.should_receive(:warn)
|
22
|
+
coo.parse_options
|
23
|
+
ensure
|
24
|
+
ENV["HOME"] = orig_home
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
17
28
|
describe "#configure" do
|
18
29
|
it "sends libs before requires" do
|
19
30
|
opts = config_options_object(*%w[--require a/path -I a/lib])
|
@@ -30,6 +41,13 @@ describe RSpec::Core::ConfigurationOptions do
|
|
30
41
|
config.should_receive(:add_formatter).ordered
|
31
42
|
opts.configure(config)
|
32
43
|
end
|
44
|
+
|
45
|
+
it "merges the :exclusion_filter option with the default exclusion_filter" do
|
46
|
+
opts = config_options_object(*%w[--tag ~slow])
|
47
|
+
config = RSpec::Core::Configuration.new
|
48
|
+
opts.configure(config)
|
49
|
+
config.exclusion_filter.should have_key(:slow)
|
50
|
+
end
|
33
51
|
end
|
34
52
|
|
35
53
|
describe "-c, --color, and --colour" do
|
@@ -279,23 +297,16 @@ describe RSpec::Core::ConfigurationOptions do
|
|
279
297
|
|
280
298
|
before do
|
281
299
|
@orig_spec_opts = ENV["SPEC_OPTS"]
|
282
|
-
|
283
|
-
|
284
|
-
RSpec::Core::ConfigurationOptions::
|
285
|
-
RSpec::Core::ConfigurationOptions::
|
286
|
-
RSpec::Core::ConfigurationOptions::GLOBAL_OPTIONS_FILE = global_options_file
|
287
|
-
RSpec::Core::ConfigurationOptions::LOCAL_OPTIONS_FILE = local_options_file
|
288
|
-
FileUtils.rm local_options_file if File.exist? local_options_file
|
289
|
-
FileUtils.rm global_options_file if File.exist? global_options_file
|
290
|
-
FileUtils.rm custom_options_file if File.exist? custom_options_file
|
300
|
+
RSpec::Core::ConfigurationOptions::send :public, :global_options_file
|
301
|
+
RSpec::Core::ConfigurationOptions::send :public, :local_options_file
|
302
|
+
RSpec::Core::ConfigurationOptions::any_instance.stub(:global_options_file) { global_options_file }
|
303
|
+
RSpec::Core::ConfigurationOptions::any_instance.stub(:local_options_file) { local_options_file }
|
291
304
|
end
|
292
305
|
|
293
306
|
after do
|
294
307
|
ENV["SPEC_OPTS"] = @orig_spec_opts
|
295
|
-
RSpec::Core::ConfigurationOptions::
|
296
|
-
RSpec::Core::ConfigurationOptions::
|
297
|
-
RSpec::Core::ConfigurationOptions::GLOBAL_OPTIONS_FILE = @orig_global_options_file
|
298
|
-
RSpec::Core::ConfigurationOptions::LOCAL_OPTIONS_FILE = @orig_local_options_file
|
308
|
+
RSpec::Core::ConfigurationOptions::send :private, :global_options_file
|
309
|
+
RSpec::Core::ConfigurationOptions::send :private, :local_options_file
|
299
310
|
end
|
300
311
|
|
301
312
|
def write_options(scope, options)
|
@@ -527,7 +527,20 @@ module RSpec::Core
|
|
527
527
|
end
|
528
528
|
end
|
529
529
|
|
530
|
+
describe "#inclusion_filter" do
|
531
|
+
it "returns {} even if set to nil" do
|
532
|
+
config.inclusion_filter = nil
|
533
|
+
config.inclusion_filter.should eq({})
|
534
|
+
end
|
535
|
+
end
|
536
|
+
|
537
|
+
|
530
538
|
describe "#exclusion_filter" do
|
539
|
+
it "returns {} even if set to nil" do
|
540
|
+
config.exclusion_filter = nil
|
541
|
+
config.exclusion_filter.should eq({})
|
542
|
+
end
|
543
|
+
|
531
544
|
describe "the default :if filter" do
|
532
545
|
it "does not exclude a spec with no :if metadata" do
|
533
546
|
config.exclusion_filter[:if].call(nil, {}).should be_false
|
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 7712002
|
5
|
+
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 6
|
9
|
-
-
|
10
|
-
|
9
|
+
- 2
|
10
|
+
- rc
|
11
|
+
version: 2.6.2.rc
|
11
12
|
platform: ruby
|
12
13
|
authors:
|
13
14
|
- Chad Humphries
|
@@ -16,7 +17,7 @@ autorequire:
|
|
16
17
|
bindir: bin
|
17
18
|
cert_chain: []
|
18
19
|
|
19
|
-
date: 2011-05-
|
20
|
+
date: 2011-05-20 00:00:00 -04:00
|
20
21
|
default_executable:
|
21
22
|
dependencies: []
|
22
23
|
|
@@ -229,19 +230,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
229
230
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
230
231
|
none: false
|
231
232
|
requirements:
|
232
|
-
- - "
|
233
|
+
- - ">"
|
233
234
|
- !ruby/object:Gem::Version
|
234
|
-
hash:
|
235
|
+
hash: 25
|
235
236
|
segments:
|
236
|
-
-
|
237
|
-
|
237
|
+
- 1
|
238
|
+
- 3
|
239
|
+
- 1
|
240
|
+
version: 1.3.1
|
238
241
|
requirements: []
|
239
242
|
|
240
243
|
rubyforge_project: rspec
|
241
244
|
rubygems_version: 1.6.2
|
242
245
|
signing_key:
|
243
246
|
specification_version: 3
|
244
|
-
summary: rspec-core-2.6.
|
247
|
+
summary: rspec-core-2.6.2.rc
|
245
248
|
test_files:
|
246
249
|
- features/Autotest.md
|
247
250
|
- features/Changelog.md
|