rspec-core 2.0.0.beta.4 → 2.0.0.beta.5
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/features/subject/explicit_subject.feature +33 -0
- data/lib/autotest/rspec2.rb +5 -4
- data/lib/rspec/core/command_line_options.rb +3 -1
- data/lib/rspec/core/configuration.rb +27 -21
- data/lib/rspec/core/example_group.rb +1 -1
- data/lib/rspec/core/example_group_subject.rb +3 -7
- data/lib/rspec/core/formatters.rb +1 -0
- data/lib/rspec/core/formatters/base_formatter.rb +3 -1
- data/lib/rspec/core/formatters/base_text_formatter.rb +4 -8
- data/lib/rspec/core/formatters/helpers.rb +27 -0
- data/lib/rspec/core/metadata.rb +9 -4
- data/lib/rspec/core/mocking/with_absolutely_nothing.rb +5 -7
- data/lib/rspec/core/mocking/with_flexmock.rb +13 -13
- data/lib/rspec/core/mocking/with_mocha.rb +12 -13
- data/lib/rspec/core/mocking/with_rr.rb +12 -13
- data/lib/rspec/core/mocking/with_rspec.rb +12 -12
- data/lib/rspec/core/runner.rb +2 -0
- data/rspec-core.gemspec +15 -10
- data/spec/autotest/rspec_spec.rb +2 -20
- data/spec/rspec/core/configuration_spec.rb +33 -14
- data/spec/rspec/core/formatters/base_formatter_spec.rb +6 -2
- data/spec/rspec/core/formatters/base_text_formatter_spec.rb +5 -0
- data/spec/rspec/core/formatters/helpers_spec.rb +38 -0
- data/spec/rspec/core/metadata_spec.rb +18 -9
- data/spec/rspec/core/shared_example_group_spec.rb +2 -2
- data/spec/spec_helper.rb +1 -4
- metadata +14 -9
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.0.beta.
|
1
|
+
2.0.0.beta.5
|
@@ -33,3 +33,36 @@ Feature: explicit subject
|
|
33
33
|
"""
|
34
34
|
When I run "rspec nested_subject_spec.rb"
|
35
35
|
Then I should see "1 example, 0 failures"
|
36
|
+
|
37
|
+
@wip
|
38
|
+
Scenario: access subject from before block
|
39
|
+
Given a file named "top_level_subject_spec.rb" with:
|
40
|
+
"""
|
41
|
+
describe Array, "with some elements" do
|
42
|
+
subject { [] }
|
43
|
+
before { subject += [1,2,3] }
|
44
|
+
it "should have the prescribed elements" do
|
45
|
+
subject.should == [1,2,3]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
"""
|
49
|
+
When I run "spec top_level_subject_spec.rb"
|
50
|
+
Then I should see "1 example, 0 failures"
|
51
|
+
|
52
|
+
Scenario: subject using helper method
|
53
|
+
Given a file named "helper_subject_spec.rb" with:
|
54
|
+
"""
|
55
|
+
require 'rspec/expectations'
|
56
|
+
|
57
|
+
describe Array do
|
58
|
+
def prepared_array; [1,2,3] end
|
59
|
+
subject { prepared_array }
|
60
|
+
describe "with some elements" do
|
61
|
+
it "should have the prescribed elements" do
|
62
|
+
subject.should == [1,2,3]
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
"""
|
67
|
+
When I run "rspec helper_subject_spec.rb"
|
68
|
+
Then I should see "1 example, 0 failures"
|
data/lib/autotest/rspec2.rb
CHANGED
@@ -38,7 +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} #{SPEC_PROGRAM} #{normalize(files_to_test).keys.flatten.join(' ')}
|
41
|
+
"#{ruby} #{require_rubygems}#{SPEC_PROGRAM} #{normalize(files_to_test).keys.flatten.join(' ')}"
|
42
|
+
end
|
43
|
+
|
44
|
+
def require_rubygems
|
45
|
+
defined?(:Gem) ? "-rrubygems " : ""
|
42
46
|
end
|
43
47
|
|
44
48
|
def normalize(files_to_test)
|
@@ -48,7 +52,4 @@ class Autotest::Rspec2 < Autotest
|
|
48
52
|
end
|
49
53
|
end
|
50
54
|
|
51
|
-
def add_options_if_present # :nodoc:
|
52
|
-
File.exist?("spec/spec.opts") ? "-O #{File.join('spec','spec.opts')} " : ""
|
53
|
-
end
|
54
55
|
end
|
@@ -26,7 +26,9 @@ module Rspec
|
|
26
26
|
options[:color_enabled] = o
|
27
27
|
end
|
28
28
|
|
29
|
-
opts.on('-f', '--formatter [FORMATTER]', 'Choose
|
29
|
+
opts.on('-f', '--formatter [FORMATTER]', 'Choose a formatter',
|
30
|
+
' [p]rogress (default - dots)',
|
31
|
+
' [d]ocumentation (group and example names)') do |o|
|
30
32
|
options[:formatter] = o
|
31
33
|
end
|
32
34
|
|
@@ -10,6 +10,8 @@ module Rspec
|
|
10
10
|
# Run all examples if the run is filtered, and no examples were found.
|
11
11
|
attr_writer :run_all_when_everything_filtered
|
12
12
|
|
13
|
+
attr_reader :options
|
14
|
+
|
13
15
|
def initialize
|
14
16
|
@run_all_when_everything_filtered = false
|
15
17
|
@hooks = {
|
@@ -25,6 +27,7 @@ module Rspec
|
|
25
27
|
{
|
26
28
|
:color_enabled => false,
|
27
29
|
:mock_framework => nil,
|
30
|
+
:use_transactional_examples => true,
|
28
31
|
:profile_examples => false,
|
29
32
|
:files_to_run => [],
|
30
33
|
:filename_pattern => '**/*_spec.rb',
|
@@ -48,31 +51,29 @@ module Rspec
|
|
48
51
|
|
49
52
|
def mock_framework=(use_me_to_mock)
|
50
53
|
@options[:mock_framework] = use_me_to_mock
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
54
|
+
end
|
55
|
+
|
56
|
+
def use_transactional_examples=(value)
|
57
|
+
@options[:use_transactional_examples] = value
|
58
|
+
end
|
59
|
+
|
60
|
+
def use_transactional_examples?
|
61
|
+
@options[:use_transactional_examples]
|
62
|
+
end
|
63
|
+
|
64
|
+
def require_mock_framework_adapter
|
65
|
+
require case @options[:mock_framework].to_s
|
66
|
+
when "", /rspec/i
|
67
|
+
'rspec/core/mocking/with_rspec'
|
56
68
|
when /mocha/i
|
57
|
-
|
58
|
-
Rspec::Core::Mocking::WithMocha
|
69
|
+
'rspec/core/mocking/with_mocha'
|
59
70
|
when /rr/i
|
60
|
-
|
61
|
-
Rspec::Core::Mocking::WithRR
|
71
|
+
'rspec/core/mocking/with_rr'
|
62
72
|
when /flexmock/i
|
63
|
-
|
64
|
-
Rspec::Core::Mocking::WithFlexmock
|
73
|
+
'rspec/core/mocking/with_flexmock'
|
65
74
|
else
|
66
|
-
|
67
|
-
Rspec::Core::Mocking::WithAbsolutelyNothing
|
75
|
+
'rspec/core/mocking/with_absolutely_nothing'
|
68
76
|
end
|
69
|
-
|
70
|
-
@options[:mock_framework_class] = mock_framework_class
|
71
|
-
Rspec::Core::ExampleGroup.send(:include, mock_framework_class)
|
72
|
-
end
|
73
|
-
|
74
|
-
def mock_framework
|
75
|
-
@options[:mock_framework]
|
76
77
|
end
|
77
78
|
|
78
79
|
def filename_pattern
|
@@ -136,7 +137,7 @@ EOM
|
|
136
137
|
|
137
138
|
def formatter=(formatter_to_use)
|
138
139
|
formatter_class = case formatter_to_use.to_s
|
139
|
-
when
|
140
|
+
when 'd', 'doc', 'documentation', 's', 'n', 'spec', 'nested'
|
140
141
|
Rspec::Core::Formatters::DocumentationFormatter
|
141
142
|
when 'progress'
|
142
143
|
Rspec::Core::Formatters::ProgressFormatter
|
@@ -224,6 +225,11 @@ EOM
|
|
224
225
|
end.map { |filters, block| block }
|
225
226
|
end
|
226
227
|
|
228
|
+
def configure_mock_framework
|
229
|
+
require_mock_framework_adapter
|
230
|
+
Rspec::Core::ExampleGroup.send(:include, Rspec::Core::MockFrameworkAdapter)
|
231
|
+
end
|
232
|
+
|
227
233
|
end
|
228
234
|
end
|
229
235
|
end
|
@@ -9,7 +9,7 @@ module Rspec
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def subject
|
12
|
-
@subject ||= self.class.subject
|
12
|
+
@subject ||= instance_eval(&self.class.subject)
|
13
13
|
end
|
14
14
|
|
15
15
|
# When +should+ is called with no explicit receiver, the call is
|
@@ -52,8 +52,7 @@ module Rspec
|
|
52
52
|
#
|
53
53
|
# See +ExampleMethods#should+ for more information about this approach.
|
54
54
|
def subject(&block)
|
55
|
-
block
|
56
|
-
explicit_subject || implicit_subject : @explicit_subject_block = block
|
55
|
+
block ? @explicit_subject_block = block : explicit_subject || implicit_subject
|
57
56
|
end
|
58
57
|
|
59
58
|
attr_reader :explicit_subject_block # :nodoc:
|
@@ -69,12 +68,9 @@ module Rspec
|
|
69
68
|
end
|
70
69
|
|
71
70
|
def implicit_subject
|
71
|
+
described = describes || description
|
72
72
|
Class === described ? lambda { described.new } : lambda { described }
|
73
73
|
end
|
74
|
-
|
75
|
-
def described
|
76
|
-
@described ||= describes || description
|
77
|
-
end
|
78
74
|
end
|
79
75
|
end
|
80
76
|
end
|
@@ -5,6 +5,7 @@ module Rspec
|
|
5
5
|
module Formatters
|
6
6
|
|
7
7
|
class BaseFormatter
|
8
|
+
include Helpers
|
8
9
|
attr_accessor :example_group
|
9
10
|
attr_reader :example_count, :duration, :examples
|
10
11
|
|
@@ -98,6 +99,7 @@ module Rspec
|
|
98
99
|
|
99
100
|
def backtrace_line(line)
|
100
101
|
return nil if configuration.cleaned_from_backtrace?(line)
|
102
|
+
line.sub!(File.expand_path("."), ".")
|
101
103
|
line.sub!(/\A([^:]+:\d+)$/, '\\1')
|
102
104
|
return nil if line == '-e:1'
|
103
105
|
line
|
@@ -122,4 +124,4 @@ module Rspec
|
|
122
124
|
end
|
123
125
|
end
|
124
126
|
|
125
|
-
end
|
127
|
+
end
|
@@ -31,12 +31,13 @@ module Rspec
|
|
31
31
|
def colorise(s, failure)
|
32
32
|
red(s)
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
def dump_summary
|
36
36
|
failure_count = failed_examples.size
|
37
37
|
pending_count = pending_examples.size
|
38
|
+
|
38
39
|
|
39
|
-
|
40
|
+
output.puts "\nFinished in #{format_seconds(duration)} seconds\n"
|
40
41
|
|
41
42
|
summary = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failures"
|
42
43
|
summary << ", #{pending_count} pending" if pending_count > 0
|
@@ -56,7 +57,7 @@ module Rspec
|
|
56
57
|
sorted_examples = examples.sort_by { |example| example.execution_result[:run_time] }.reverse.first(10)
|
57
58
|
output.puts "\nTop #{sorted_examples.size} slowest examples:\n"
|
58
59
|
sorted_examples.each do |example|
|
59
|
-
output.puts " (#{
|
60
|
+
output.puts " (#{format_seconds(duration, 7)} seconds) #{example}"
|
60
61
|
output.puts grey(" # #{format_caller(example.metadata[:caller])}")
|
61
62
|
end
|
62
63
|
end
|
@@ -64,11 +65,6 @@ module Rspec
|
|
64
65
|
output.flush
|
65
66
|
end
|
66
67
|
|
67
|
-
# def textmate_link_backtrace(path)
|
68
|
-
# file, line = path.split(':')
|
69
|
-
# "txmt://open/?url=file://#{File.expand_path(file)}&line=#{line}"
|
70
|
-
# end
|
71
|
-
|
72
68
|
def format_caller(caller_info)
|
73
69
|
caller_info.to_s.split(':in `block').first
|
74
70
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Rspec
|
2
|
+
|
3
|
+
module Core
|
4
|
+
|
5
|
+
module Formatters
|
6
|
+
|
7
|
+
module Helpers
|
8
|
+
SUB_SECOND_PRECISION = 5
|
9
|
+
DEFAULT_PRECISION = 2
|
10
|
+
|
11
|
+
def format_seconds(float, precision = nil)
|
12
|
+
precision ||= (float < 1) ? SUB_SECOND_PRECISION : DEFAULT_PRECISION
|
13
|
+
formatted = sprintf("%.#{precision}f", float)
|
14
|
+
strip_trailing_zeroes(formatted)
|
15
|
+
end
|
16
|
+
|
17
|
+
def strip_trailing_zeroes(string)
|
18
|
+
string.sub(/[^1-9]+$/, '')
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/lib/rspec/core/metadata.rb
CHANGED
@@ -130,19 +130,24 @@ EOM
|
|
130
130
|
end
|
131
131
|
|
132
132
|
def file_path_from(metadata, given_file_path=nil)
|
133
|
-
given_file_path
|
133
|
+
return given_file_path if given_file_path
|
134
|
+
file = file_and_line_number(metadata)[0] if file_and_line_number(metadata)
|
135
|
+
file.strip if file
|
134
136
|
end
|
135
137
|
|
136
138
|
def line_number_from(metadata, given_line_number=nil)
|
137
|
-
given_line_number
|
139
|
+
return given_line_number if given_line_number
|
140
|
+
line_number = file_and_line_number(metadata)[1] if file_and_line_number(metadata)
|
141
|
+
line_number && line_number.to_i
|
138
142
|
end
|
139
|
-
|
143
|
+
|
140
144
|
def location_from(metadata)
|
141
145
|
"#{metadata[:file_path]}:#{metadata[:line_number]}"
|
142
146
|
end
|
143
147
|
|
144
148
|
def file_and_line_number(metadata)
|
145
|
-
candidate_entries_from_caller(metadata).first
|
149
|
+
entry = candidate_entries_from_caller(metadata).first
|
150
|
+
entry && entry.split(":")
|
146
151
|
end
|
147
152
|
|
148
153
|
def candidate_entries_from_caller(metadata)
|
@@ -1,13 +1,11 @@
|
|
1
1
|
module Rspec
|
2
2
|
module Core
|
3
|
-
module
|
4
|
-
module WithAbsolutelyNothing
|
3
|
+
module MockFrameworkAdapter
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
def _setup_mocks; end
|
6
|
+
def _verify_mocks; end
|
7
|
+
def _teardown_mocks; end
|
9
8
|
|
10
|
-
end
|
11
9
|
end
|
12
10
|
end
|
13
|
-
end
|
11
|
+
end
|
@@ -7,19 +7,19 @@ require 'flexmock/rspec'
|
|
7
7
|
|
8
8
|
module Rspec
|
9
9
|
module Core
|
10
|
-
module
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
19
|
-
def teardown_mocks_for_rspec
|
20
|
-
flexmock_close
|
21
|
-
end
|
10
|
+
module MockFrameworkAdapter
|
11
|
+
|
12
|
+
include FlexMock::MockContainer
|
13
|
+
def setup_mocks_for_rspec
|
14
|
+
# No setup required
|
15
|
+
end
|
16
|
+
def verify_mocks_for_rspec
|
17
|
+
flexmock_verify
|
22
18
|
end
|
19
|
+
def teardown_mocks_for_rspec
|
20
|
+
flexmock_close
|
21
|
+
end
|
22
|
+
|
23
23
|
end
|
24
24
|
end
|
25
|
-
end
|
25
|
+
end
|
@@ -3,20 +3,19 @@ require 'mocha/object'
|
|
3
3
|
|
4
4
|
module Rspec
|
5
5
|
module Core
|
6
|
-
module
|
7
|
-
module WithMocha
|
8
|
-
# Mocha::Standalone was deprecated as of Mocha 0.9.7.
|
9
|
-
begin
|
10
|
-
include Mocha::API
|
11
|
-
rescue NameError
|
12
|
-
include Mocha::Standalone
|
13
|
-
end
|
14
|
-
|
15
|
-
alias :_setup_mocks :mocha_setup
|
16
|
-
alias :_verify_mocks :mocha_verify
|
17
|
-
alias :_teardown_mocks :mocha_teardown
|
6
|
+
module MockFrameworkAdapter
|
18
7
|
|
8
|
+
# Mocha::Standalone was deprecated as of Mocha 0.9.7.
|
9
|
+
begin
|
10
|
+
include Mocha::API
|
11
|
+
rescue NameError
|
12
|
+
include Mocha::Standalone
|
19
13
|
end
|
14
|
+
|
15
|
+
alias :_setup_mocks :mocha_setup
|
16
|
+
alias :_verify_mocks :mocha_verify
|
17
|
+
alias :_teardown_mocks :mocha_teardown
|
18
|
+
|
20
19
|
end
|
21
20
|
end
|
22
|
-
end
|
21
|
+
end
|
@@ -4,23 +4,22 @@ Rspec.configuration.backtrace_clean_patterns.push(RR::Errors::BACKTRACE_IDENTIFI
|
|
4
4
|
|
5
5
|
module Rspec
|
6
6
|
module Core
|
7
|
-
module
|
8
|
-
module WithRR
|
9
|
-
include RR::Extensions::InstanceMethods
|
7
|
+
module MockFrameworkAdapter
|
10
8
|
|
11
|
-
|
12
|
-
RR::Space.instance.reset
|
13
|
-
end
|
9
|
+
include RR::Extensions::InstanceMethods
|
14
10
|
|
15
|
-
|
16
|
-
|
17
|
-
|
11
|
+
def _setup_mocks
|
12
|
+
RR::Space.instance.reset
|
13
|
+
end
|
18
14
|
|
19
|
-
|
20
|
-
|
21
|
-
|
15
|
+
def _verify_mocks
|
16
|
+
RR::Space.instance.verify_doubles
|
17
|
+
end
|
22
18
|
|
19
|
+
def _teardown_mocks
|
20
|
+
RR::Space.instance.reset
|
23
21
|
end
|
22
|
+
|
24
23
|
end
|
25
24
|
end
|
26
|
-
end
|
25
|
+
end
|
@@ -3,19 +3,19 @@ require 'rspec/mocks/extensions'
|
|
3
3
|
|
4
4
|
module Rspec
|
5
5
|
module Core
|
6
|
-
module
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
end
|
15
|
-
def _teardown_mocks
|
16
|
-
$rspec_mocks.reset_all
|
17
|
-
end
|
6
|
+
module MockFrameworkAdapter
|
7
|
+
|
8
|
+
include Rspec::Mocks::ExampleMethods
|
9
|
+
def _setup_mocks
|
10
|
+
$rspec_mocks ||= Rspec::Mocks::Space.new
|
11
|
+
end
|
12
|
+
def _verify_mocks
|
13
|
+
$rspec_mocks.verify_all
|
18
14
|
end
|
15
|
+
def _teardown_mocks
|
16
|
+
$rspec_mocks.reset_all
|
17
|
+
end
|
18
|
+
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
data/lib/rspec/core/runner.rb
CHANGED
data/rspec-core.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rspec-core}
|
8
|
-
s.version = "2.0.0.beta.
|
8
|
+
s.version = "2.0.0.beta.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Chad Humphries", "David Chelimsky"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-04-04}
|
13
13
|
s.description = %q{Rspec runner and example group classes}
|
14
14
|
s.email = %q{dchelimsky@gmail.com;chad.humphries@gmail.com}
|
15
15
|
s.executables = ["rspec", "spec"]
|
@@ -111,6 +111,7 @@ Gem::Specification.new do |s|
|
|
111
111
|
"lib/rspec/core/formatters/base_formatter.rb",
|
112
112
|
"lib/rspec/core/formatters/base_text_formatter.rb",
|
113
113
|
"lib/rspec/core/formatters/documentation_formatter.rb",
|
114
|
+
"lib/rspec/core/formatters/helpers.rb",
|
114
115
|
"lib/rspec/core/formatters/progress_formatter.rb",
|
115
116
|
"lib/rspec/core/hooks.rb",
|
116
117
|
"lib/rspec/core/kernel_extensions.rb",
|
@@ -139,7 +140,9 @@ Gem::Specification.new do |s|
|
|
139
140
|
"spec/rspec/core/example_group_subject_spec.rb",
|
140
141
|
"spec/rspec/core/example_spec.rb",
|
141
142
|
"spec/rspec/core/formatters/base_formatter_spec.rb",
|
143
|
+
"spec/rspec/core/formatters/base_text_formatter_spec.rb",
|
142
144
|
"spec/rspec/core/formatters/documentation_formatter_spec.rb",
|
145
|
+
"spec/rspec/core/formatters/helpers_spec.rb",
|
143
146
|
"spec/rspec/core/formatters/progress_formatter_spec.rb",
|
144
147
|
"spec/rspec/core/kernel_extensions_spec.rb",
|
145
148
|
"spec/rspec/core/metadata_spec.rb",
|
@@ -163,7 +166,7 @@ Gem::Specification.new do |s|
|
|
163
166
|
s.homepage = %q{http://github.com/rspec/core}
|
164
167
|
s.post_install_message = %q{**************************************************
|
165
168
|
|
166
|
-
Thank you for installing rspec-core-2.0.0.beta.
|
169
|
+
Thank you for installing rspec-core-2.0.0.beta.5
|
167
170
|
|
168
171
|
This is beta software. If you are looking
|
169
172
|
for a supported production release, please
|
@@ -175,7 +178,7 @@ Gem::Specification.new do |s|
|
|
175
178
|
s.require_paths = ["lib"]
|
176
179
|
s.rubyforge_project = %q{rspec}
|
177
180
|
s.rubygems_version = %q{1.3.6}
|
178
|
-
s.summary = %q{rspec-core-2.0.0.beta.
|
181
|
+
s.summary = %q{rspec-core-2.0.0.beta.5}
|
179
182
|
s.test_files = [
|
180
183
|
"spec/autotest/failed_results_re_spec.rb",
|
181
184
|
"spec/autotest/rspec_spec.rb",
|
@@ -185,7 +188,9 @@ Gem::Specification.new do |s|
|
|
185
188
|
"spec/rspec/core/example_group_subject_spec.rb",
|
186
189
|
"spec/rspec/core/example_spec.rb",
|
187
190
|
"spec/rspec/core/formatters/base_formatter_spec.rb",
|
191
|
+
"spec/rspec/core/formatters/base_text_formatter_spec.rb",
|
188
192
|
"spec/rspec/core/formatters/documentation_formatter_spec.rb",
|
193
|
+
"spec/rspec/core/formatters/helpers_spec.rb",
|
189
194
|
"spec/rspec/core/formatters/progress_formatter_spec.rb",
|
190
195
|
"spec/rspec/core/kernel_extensions_spec.rb",
|
191
196
|
"spec/rspec/core/metadata_spec.rb",
|
@@ -211,19 +216,19 @@ Gem::Specification.new do |s|
|
|
211
216
|
s.specification_version = 3
|
212
217
|
|
213
218
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
214
|
-
s.add_development_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.
|
215
|
-
s.add_development_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
219
|
+
s.add_development_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.5"])
|
220
|
+
s.add_development_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.5"])
|
216
221
|
s.add_development_dependency(%q<cucumber>, [">= 0.5.3"])
|
217
222
|
s.add_development_dependency(%q<autotest>, [">= 4.2.9"])
|
218
223
|
else
|
219
|
-
s.add_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.
|
220
|
-
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
224
|
+
s.add_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.5"])
|
225
|
+
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.5"])
|
221
226
|
s.add_dependency(%q<cucumber>, [">= 0.5.3"])
|
222
227
|
s.add_dependency(%q<autotest>, [">= 4.2.9"])
|
223
228
|
end
|
224
229
|
else
|
225
|
-
s.add_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.
|
226
|
-
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
230
|
+
s.add_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.5"])
|
231
|
+
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.5"])
|
227
232
|
s.add_dependency(%q<cucumber>, [">= 0.5.3"])
|
228
233
|
s.add_dependency(%q<autotest>, [">= 4.2.9"])
|
229
234
|
end
|
data/spec/autotest/rspec_spec.rb
CHANGED
@@ -1,31 +1,13 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe Autotest::
|
4
|
-
describe "adding spec.opts --options" do
|
5
|
-
before(:each) do
|
6
|
-
@rspec_autotest = Autotest::Rspec2.new
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should return the command line option to add spec.opts if the options file exists" do
|
10
|
-
File.stub!(:exist?).and_return true
|
11
|
-
@rspec_autotest.add_options_if_present.should == "-O spec/spec.opts "
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should return an empty string if no spec.opts exists" do
|
15
|
-
File.stub!(:exist?).and_return false
|
16
|
-
Autotest::Rspec2.new.add_options_if_present.should == ""
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
3
|
+
describe Autotest::Rspec2 do
|
20
4
|
describe "commands" do
|
21
5
|
before(:each) do
|
22
6
|
@rspec_autotest = Autotest::Rspec2.new
|
23
7
|
@rspec_autotest.stub!(:ruby).and_return "ruby"
|
24
|
-
@rspec_autotest.stub!(:add_options_if_present).and_return "-O spec/spec.opts"
|
25
8
|
|
26
9
|
@ruby = @rspec_autotest.ruby
|
27
10
|
@spec_cmd = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'rspec'))
|
28
|
-
@options = @rspec_autotest.add_options_if_present
|
29
11
|
files = %w[file_one file_two]
|
30
12
|
@files_to_test = {
|
31
13
|
files[0] => [],
|
@@ -38,7 +20,7 @@ describe Autotest::Rspec do
|
|
38
20
|
|
39
21
|
it "should make the appropriate test command" do
|
40
22
|
actual = @rspec_autotest.make_test_cmd(@files_to_test)
|
41
|
-
expected = /#{@ruby}
|
23
|
+
expected = /#{@ruby}.*#{@spec_cmd} (.*)/
|
42
24
|
|
43
25
|
actual.should match(expected)
|
44
26
|
|
@@ -6,28 +6,34 @@ module Rspec::Core
|
|
6
6
|
|
7
7
|
let(:config) { Configuration.new }
|
8
8
|
|
9
|
-
|
9
|
+
describe "#mock_framework_class" do
|
10
|
+
before(:each) do
|
11
|
+
config.stub(:require)
|
12
|
+
end
|
10
13
|
|
11
|
-
it "
|
14
|
+
it "defaults to :rspec" do
|
12
15
|
config.should_receive(:require).with('rspec/core/mocking/with_rspec')
|
13
|
-
|
14
|
-
config.mock_framework = :rspec
|
16
|
+
config.require_mock_framework_adapter
|
15
17
|
end
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
[:rspec, :mocha, :rr, :flexmock].each do |framework|
|
20
|
+
it "uses #{framework.inspect} framework when set explicitly" do
|
21
|
+
config.should_receive(:require).with("rspec/core/mocking/with_#{framework}")
|
22
|
+
config.mock_framework = framework
|
23
|
+
config.require_mock_framework_adapter
|
24
|
+
end
|
21
25
|
end
|
22
|
-
|
23
|
-
it "
|
24
|
-
|
26
|
+
|
27
|
+
it "uses the null adapter when set to any unknown key" do
|
28
|
+
config.should_receive(:require).with('rspec/core/mocking/with_absolutely_nothing')
|
25
29
|
config.mock_framework = :crazy_new_mocking_framework_ive_not_yet_heard_of
|
30
|
+
config.require_mock_framework_adapter
|
26
31
|
end
|
27
32
|
|
28
|
-
|
29
|
-
|
30
|
-
config.
|
33
|
+
it "supports mock_with for backward compatibility with rspec-1.x" do
|
34
|
+
config.should_receive(:require).with('rspec/core/mocking/with_rspec')
|
35
|
+
config.mock_with :rspec
|
36
|
+
config.require_mock_framework_adapter
|
31
37
|
end
|
32
38
|
|
33
39
|
end
|
@@ -231,6 +237,19 @@ module Rspec::Core
|
|
231
237
|
end
|
232
238
|
end
|
233
239
|
|
240
|
+
|
241
|
+
context "transactional examples" do
|
242
|
+
it "defaults to use transactional examples" do
|
243
|
+
config.use_transactional_examples?.should be_true
|
244
|
+
end
|
245
|
+
describe "#use_transactional_examples=" do
|
246
|
+
it "remembers that I don't want transactional exmaples" do
|
247
|
+
config.use_transactional_examples = false
|
248
|
+
config.use_transactional_examples?.should be_false
|
249
|
+
end
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
234
253
|
end
|
235
254
|
|
236
255
|
end
|
@@ -37,9 +37,13 @@ describe Rspec::Core::Formatters::BaseFormatter do
|
|
37
37
|
end
|
38
38
|
|
39
39
|
describe '#format_backtrace' do
|
40
|
-
|
41
40
|
it "displays the full backtrace when the example is given the :full_backtrace => true option", :full_backtrace => true
|
42
|
-
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "backtrace_line" do
|
44
|
+
it "trims current working directory" do
|
45
|
+
formatter.__send__(:backtrace_line, File.expand_path(__FILE__)).should == "./spec/rspec/core/formatters/base_formatter_spec.rb"
|
46
|
+
end
|
43
47
|
end
|
44
48
|
|
45
49
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'stringio'
|
3
|
+
|
4
|
+
describe Rspec::Core::Formatters::Helpers do
|
5
|
+
let(:helper) { helper = Object.new.extend(Rspec::Core::Formatters::Helpers) }
|
6
|
+
|
7
|
+
describe "format seconds" do
|
8
|
+
pending "uses passed in precision if specified" do
|
9
|
+
# can't get regex right to handle this case where we don't want it to consume all zeroes
|
10
|
+
helper.format_seconds(0.00005, 2).should == "0.00"
|
11
|
+
end
|
12
|
+
|
13
|
+
context "sub second times" do
|
14
|
+
it "returns 5 digits of precision" do
|
15
|
+
helper.format_seconds(0.000005).should == "0.00001"
|
16
|
+
end
|
17
|
+
|
18
|
+
it "strips off trailing zeroes" do
|
19
|
+
helper.format_seconds(0.02000).should == "0.02"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context "second and greater times" do
|
24
|
+
|
25
|
+
it "returns 2 digits of precision" do
|
26
|
+
helper.format_seconds(50.330340).should == "50.33"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "returns human friendly elasped time" do
|
30
|
+
helper.format_seconds(50.1).should == "50.1"
|
31
|
+
helper.format_seconds(5).should == "5"
|
32
|
+
helper.format_seconds(5.0).should == "5"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
end
|
@@ -4,7 +4,7 @@ module Rspec
|
|
4
4
|
module Core
|
5
5
|
describe Metadata do
|
6
6
|
|
7
|
-
describe "
|
7
|
+
describe "process" do
|
8
8
|
Metadata::RESERVED_KEYS.each do |key|
|
9
9
|
it "prohibits :#{key} as a hash key" do
|
10
10
|
m = Metadata.new
|
@@ -15,7 +15,7 @@ module Rspec
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
describe "
|
18
|
+
describe "description" do
|
19
19
|
it "just has the example description" do
|
20
20
|
m = Metadata.new
|
21
21
|
m.process('group')
|
@@ -25,7 +25,7 @@ module Rspec
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
describe "
|
28
|
+
describe "full description" do
|
29
29
|
it "concats the example group name and description" do
|
30
30
|
m = Metadata.new
|
31
31
|
m.process('group')
|
@@ -35,7 +35,7 @@ module Rspec
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
describe "
|
38
|
+
describe "description" do
|
39
39
|
context "with a string" do
|
40
40
|
it "provides the submitted description" do
|
41
41
|
m = Metadata.new
|
@@ -64,7 +64,7 @@ module Rspec
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
describe "
|
67
|
+
describe "full description" do
|
68
68
|
it "concats the nested example group descriptions" do
|
69
69
|
parent = Metadata.new
|
70
70
|
parent.process(Object, 'parent')
|
@@ -76,7 +76,7 @@ module Rspec
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
-
describe "
|
79
|
+
describe "file path" do
|
80
80
|
it "finds the first spec file in the caller array" do
|
81
81
|
m = Metadata.new
|
82
82
|
m.process(:caller => [
|
@@ -87,9 +87,18 @@ module Rspec
|
|
87
87
|
])
|
88
88
|
m[:example_group][:file_path].should == __FILE__
|
89
89
|
end
|
90
|
+
it "is nil if there are no spec files found", :full_backtrace => true do
|
91
|
+
m = Metadata.new
|
92
|
+
m.process(:caller => [
|
93
|
+
"foo",
|
94
|
+
"metadata_example.rb:#{__LINE__}",
|
95
|
+
"baz"
|
96
|
+
])
|
97
|
+
m[:example_group][:file_path].should be_nil
|
98
|
+
end
|
90
99
|
end
|
91
100
|
|
92
|
-
describe "
|
101
|
+
describe "line number" do
|
93
102
|
it "finds the line number with the first spec file " do
|
94
103
|
m = Metadata.new
|
95
104
|
m.process(:caller => [
|
@@ -112,7 +121,7 @@ module Rspec
|
|
112
121
|
end
|
113
122
|
end
|
114
123
|
|
115
|
-
describe "
|
124
|
+
describe "metadata for example" do
|
116
125
|
let(:caller_for_example) { caller(0) }
|
117
126
|
let(:line_number) { __LINE__ - 1 }
|
118
127
|
let(:metadata) { Metadata.new.process("group description") }
|
@@ -151,7 +160,7 @@ module Rspec
|
|
151
160
|
end
|
152
161
|
end
|
153
162
|
|
154
|
-
describe "
|
163
|
+
describe "apply_condition" do
|
155
164
|
let(:group_metadata) { Metadata.new.process('group', :caller => ["foo_spec.rb:#{__LINE__}"]) }
|
156
165
|
let(:group_line_number) { __LINE__ -1 }
|
157
166
|
let(:example_metadata) { group_metadata.for_example('example', :caller => ["foo_spec.rb:#{__LINE__}"]) }
|
@@ -144,10 +144,10 @@ module Rspec::Core
|
|
144
144
|
end
|
145
145
|
|
146
146
|
describe "running shared examples" do
|
147
|
-
module RunningSharedExamplesJustForTesting; end
|
147
|
+
module ::RunningSharedExamplesJustForTesting; end
|
148
148
|
|
149
149
|
share_examples_for("it runs shared examples") do
|
150
|
-
include RunningSharedExamplesJustForTesting
|
150
|
+
include ::RunningSharedExamplesJustForTesting
|
151
151
|
|
152
152
|
class << self
|
153
153
|
def magic
|
data/spec/spec_helper.rb
CHANGED
@@ -9,13 +9,11 @@ require 'rspec/mocks'
|
|
9
9
|
begin
|
10
10
|
require 'autotest'
|
11
11
|
rescue LoadError
|
12
|
-
raise "You must install
|
12
|
+
raise "You must install autotest to use it"
|
13
13
|
end
|
14
14
|
|
15
15
|
require 'autotest/rspec2'
|
16
16
|
|
17
|
-
Rspec::Core::ExampleGroup.send(:include, Rspec::Matchers)
|
18
|
-
|
19
17
|
Dir['./spec/support/**/*.rb'].map {|f| require f}
|
20
18
|
|
21
19
|
module Rspec
|
@@ -45,7 +43,6 @@ def in_editor?
|
|
45
43
|
end
|
46
44
|
|
47
45
|
Rspec.configure do |c|
|
48
|
-
c.mock_framework = :rspec
|
49
46
|
c.color_enabled = !in_editor?
|
50
47
|
c.exclusion_filter = { :ruby => lambda {|version|
|
51
48
|
!(RUBY_VERSION.to_s =~ /^#{version.to_s}/)
|
metadata
CHANGED
@@ -7,8 +7,8 @@ version: !ruby/object:Gem::Version
|
|
7
7
|
- 0
|
8
8
|
- 0
|
9
9
|
- beta
|
10
|
-
-
|
11
|
-
version: 2.0.0.beta.
|
10
|
+
- 5
|
11
|
+
version: 2.0.0.beta.5
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Chad Humphries
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2010-
|
20
|
+
date: 2010-04-04 00:00:00 -03:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
@@ -32,8 +32,8 @@ dependencies:
|
|
32
32
|
- 0
|
33
33
|
- 0
|
34
34
|
- beta
|
35
|
-
-
|
36
|
-
version: 2.0.0.beta.
|
35
|
+
- 5
|
36
|
+
version: 2.0.0.beta.5
|
37
37
|
type: :development
|
38
38
|
version_requirements: *id001
|
39
39
|
- !ruby/object:Gem::Dependency
|
@@ -48,8 +48,8 @@ dependencies:
|
|
48
48
|
- 0
|
49
49
|
- 0
|
50
50
|
- beta
|
51
|
-
-
|
52
|
-
version: 2.0.0.beta.
|
51
|
+
- 5
|
52
|
+
version: 2.0.0.beta.5
|
53
53
|
type: :development
|
54
54
|
version_requirements: *id002
|
55
55
|
- !ruby/object:Gem::Dependency
|
@@ -184,6 +184,7 @@ files:
|
|
184
184
|
- lib/rspec/core/formatters/base_formatter.rb
|
185
185
|
- lib/rspec/core/formatters/base_text_formatter.rb
|
186
186
|
- lib/rspec/core/formatters/documentation_formatter.rb
|
187
|
+
- lib/rspec/core/formatters/helpers.rb
|
187
188
|
- lib/rspec/core/formatters/progress_formatter.rb
|
188
189
|
- lib/rspec/core/hooks.rb
|
189
190
|
- lib/rspec/core/kernel_extensions.rb
|
@@ -212,7 +213,9 @@ files:
|
|
212
213
|
- spec/rspec/core/example_group_subject_spec.rb
|
213
214
|
- spec/rspec/core/example_spec.rb
|
214
215
|
- spec/rspec/core/formatters/base_formatter_spec.rb
|
216
|
+
- spec/rspec/core/formatters/base_text_formatter_spec.rb
|
215
217
|
- spec/rspec/core/formatters/documentation_formatter_spec.rb
|
218
|
+
- spec/rspec/core/formatters/helpers_spec.rb
|
216
219
|
- spec/rspec/core/formatters/progress_formatter_spec.rb
|
217
220
|
- spec/rspec/core/kernel_extensions_spec.rb
|
218
221
|
- spec/rspec/core/metadata_spec.rb
|
@@ -239,7 +242,7 @@ licenses: []
|
|
239
242
|
post_install_message: |
|
240
243
|
**************************************************
|
241
244
|
|
242
|
-
Thank you for installing rspec-core-2.0.0.beta.
|
245
|
+
Thank you for installing rspec-core-2.0.0.beta.5
|
243
246
|
|
244
247
|
This is beta software. If you are looking
|
245
248
|
for a supported production release, please
|
@@ -273,7 +276,7 @@ rubyforge_project: rspec
|
|
273
276
|
rubygems_version: 1.3.6
|
274
277
|
signing_key:
|
275
278
|
specification_version: 3
|
276
|
-
summary: rspec-core-2.0.0.beta.
|
279
|
+
summary: rspec-core-2.0.0.beta.5
|
277
280
|
test_files:
|
278
281
|
- spec/autotest/failed_results_re_spec.rb
|
279
282
|
- spec/autotest/rspec_spec.rb
|
@@ -283,7 +286,9 @@ test_files:
|
|
283
286
|
- spec/rspec/core/example_group_subject_spec.rb
|
284
287
|
- spec/rspec/core/example_spec.rb
|
285
288
|
- spec/rspec/core/formatters/base_formatter_spec.rb
|
289
|
+
- spec/rspec/core/formatters/base_text_formatter_spec.rb
|
286
290
|
- spec/rspec/core/formatters/documentation_formatter_spec.rb
|
291
|
+
- spec/rspec/core/formatters/helpers_spec.rb
|
287
292
|
- spec/rspec/core/formatters/progress_formatter_spec.rb
|
288
293
|
- spec/rspec/core/kernel_extensions_spec.rb
|
289
294
|
- spec/rspec/core/metadata_spec.rb
|