rspec-core 2.0.0.a1
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +7 -0
- data/.treasure_map.rb +23 -0
- data/License.txt +22 -0
- data/README.markdown +9 -0
- data/Rakefile +76 -0
- data/TODO.markdown +16 -0
- data/VERSION +1 -0
- data/VERSION.yml +5 -0
- data/bin/rspec +12 -0
- data/cucumber.yml +2 -0
- data/example_specs/failing/README.txt +7 -0
- data/example_specs/failing/diffing_spec.rb +36 -0
- data/example_specs/failing/failing_implicit_docstrings_example.rb +19 -0
- data/example_specs/failing/failure_in_after.rb +10 -0
- data/example_specs/failing/failure_in_before.rb +10 -0
- data/example_specs/failing/mocking_example.rb +40 -0
- data/example_specs/failing/mocking_with_flexmock.rb +26 -0
- data/example_specs/failing/mocking_with_mocha.rb +25 -0
- data/example_specs/failing/mocking_with_rr.rb +27 -0
- data/example_specs/failing/partial_mock_example.rb +20 -0
- data/example_specs/failing/pending_example.rb +9 -0
- data/example_specs/failing/predicate_example.rb +34 -0
- data/example_specs/failing/raising_example.rb +47 -0
- data/example_specs/failing/spec_helper.rb +3 -0
- data/example_specs/failing/syntax_error_example.rb +7 -0
- data/example_specs/failing/team_spec.rb +44 -0
- data/example_specs/failing/timeout_behaviour.rb +7 -0
- data/example_specs/passing/custom_formatter.rb +12 -0
- data/example_specs/passing/custom_matchers.rb +54 -0
- data/example_specs/passing/dynamic_spec.rb +9 -0
- data/example_specs/passing/file_accessor.rb +19 -0
- data/example_specs/passing/file_accessor_spec.rb +38 -0
- data/example_specs/passing/filtered_formatter.rb +18 -0
- data/example_specs/passing/filtered_formatter_example.rb +31 -0
- data/example_specs/passing/greeter_spec.rb +31 -0
- data/example_specs/passing/helper_method_example.rb +14 -0
- data/example_specs/passing/implicit_docstrings_example.rb +18 -0
- data/example_specs/passing/io_processor.rb +8 -0
- data/example_specs/passing/io_processor_spec.rb +21 -0
- data/example_specs/passing/mocking_example.rb +27 -0
- data/example_specs/passing/multi_threaded_example_group_runner.rb +26 -0
- data/example_specs/passing/nested_classes_example.rb +36 -0
- data/example_specs/passing/options_example.rb +31 -0
- data/example_specs/passing/options_formatter.rb +20 -0
- data/example_specs/passing/partial_mock_example.rb +29 -0
- data/example_specs/passing/pending_example.rb +20 -0
- data/example_specs/passing/predicate_example.rb +27 -0
- data/example_specs/passing/shared_example_group_example.rb +81 -0
- data/example_specs/passing/shared_stack_examples.rb +36 -0
- data/example_specs/passing/simple_matcher_example.rb +31 -0
- data/example_specs/passing/spec_helper.rb +14 -0
- data/example_specs/passing/stack.rb +36 -0
- data/example_specs/passing/stack_spec.rb +64 -0
- data/example_specs/passing/stack_spec_with_nested_example_groups.rb +67 -0
- data/example_specs/passing/stubbing_example.rb +69 -0
- data/example_specs/passing/yielding_example.rb +33 -0
- data/example_specs/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
- data/features-pending/command_line/line_number_option.feature +56 -0
- data/features-pending/command_line/line_number_option_with_example_with_no_name.feature +22 -0
- data/features-pending/example_groups/example_group_with_should_methods.feature +29 -0
- data/features-pending/example_groups/implicit_docstrings.feature +59 -0
- data/features-pending/example_groups/nested_groups.feature +32 -0
- data/features-pending/expectations/expect_change.feature +65 -0
- data/features-pending/expectations/expect_error.feature +44 -0
- data/features-pending/extensions/custom_example_group.feature +19 -0
- data/features-pending/formatters/custom_formatter.feature +30 -0
- data/features-pending/heckle/heckle.feature +56 -0
- data/features-pending/interop/examples_and_tests_together.feature +80 -0
- data/features-pending/interop/rspec_output.feature +25 -0
- data/features-pending/interop/test_but_not_test_unit.feature +26 -0
- data/features-pending/interop/test_case_with_should_methods.feature +46 -0
- data/features-pending/matchers/define_diffable_matcher.feature +26 -0
- data/features-pending/matchers/define_matcher.feature +179 -0
- data/features-pending/matchers/define_matcher_with_fluent_interface.feature +27 -0
- data/features-pending/mocks/mix_stubs_and_mocks.feature +22 -0
- data/features-pending/mocks/stub_implementation.feature +26 -0
- data/features-pending/pending/pending_examples.feature +81 -0
- data/features-pending/runner/specify_line_number.feature +32 -0
- data/features/before_and_after_blocks/before_and_after_blocks.feature +169 -0
- data/features/expectations/customized_message.feature +54 -0
- data/features/matchers/define_matcher_outside_rspec.feature +39 -0
- data/features/mock_framework_integration/use_flexmock.feature +23 -0
- data/features/mock_framework_integration/use_mocha.feature +23 -0
- data/features/mock_framework_integration/use_rr.feature +23 -0
- data/features/mock_framework_integration/use_rspec.feature +23 -0
- data/features/step_definitions/running_rspec_steps.rb +35 -0
- data/features/subject/explicit_subject.feature +31 -0
- data/features/subject/implicit_subject.feature +31 -0
- data/features/support/env.rb +82 -0
- data/features/support/matchers/smart_match.rb +14 -0
- data/lib/rspec/autorun.rb +2 -0
- data/lib/rspec/core.rb +38 -0
- data/lib/rspec/core/backward_compatibility.rb +9 -0
- data/lib/rspec/core/command_line_options.rb +60 -0
- data/lib/rspec/core/configuration.rb +222 -0
- data/lib/rspec/core/deprecation.rb +47 -0
- data/lib/rspec/core/example.rb +113 -0
- data/lib/rspec/core/example_group.rb +239 -0
- data/lib/rspec/core/example_group_subject.rb +77 -0
- data/lib/rspec/core/formatters.rb +16 -0
- data/lib/rspec/core/formatters/base_formatter.rb +123 -0
- data/lib/rspec/core/formatters/base_text_formatter.rb +139 -0
- data/lib/rspec/core/formatters/documentation_formatter.rb +84 -0
- data/lib/rspec/core/formatters/progress_formatter.rb +36 -0
- data/lib/rspec/core/kernel_extensions.rb +15 -0
- data/lib/rspec/core/mocking/with_absolutely_nothing.rb +13 -0
- data/lib/rspec/core/mocking/with_flexmock.rb +25 -0
- data/lib/rspec/core/mocking/with_mocha.rb +22 -0
- data/lib/rspec/core/mocking/with_rr.rb +26 -0
- data/lib/rspec/core/mocking/with_rspec.rb +21 -0
- data/lib/rspec/core/rake_task.rb +88 -0
- data/lib/rspec/core/runner.rb +66 -0
- data/lib/rspec/core/shared_behaviour.rb +41 -0
- data/lib/rspec/core/shared_behaviour_kernel_extensions.rb +31 -0
- data/lib/rspec/core/version.rb +16 -0
- data/lib/rspec/core/world.rb +105 -0
- data/rspec-core.gemspec +204 -0
- data/script/console +8 -0
- data/spec/resources/example_classes.rb +67 -0
- data/spec/rspec/core/command_line_options_spec.rb +63 -0
- data/spec/rspec/core/configuration_spec.rb +171 -0
- data/spec/rspec/core/example_group_spec.rb +351 -0
- data/spec/rspec/core/example_group_subject_spec.rb +67 -0
- data/spec/rspec/core/example_spec.rb +67 -0
- data/spec/rspec/core/formatters/base_formatter_spec.rb +105 -0
- data/spec/rspec/core/formatters/documentation_formatter_spec.rb +5 -0
- data/spec/rspec/core/formatters/progress_formatter_spec.rb +29 -0
- data/spec/rspec/core/kernel_extensions_spec.rb +13 -0
- data/spec/rspec/core/mocha_spec.rb +29 -0
- data/spec/rspec/core/resources/a_bar.rb +0 -0
- data/spec/rspec/core/resources/a_foo.rb +0 -0
- data/spec/rspec/core/resources/a_spec.rb +1 -0
- data/spec/rspec/core/resources/custom_example_group_runner.rb +14 -0
- data/spec/rspec/core/resources/example_classes.rb +67 -0
- data/spec/rspec/core/resources/utf8_encoded.rb +8 -0
- data/spec/rspec/core/runner_spec.rb +34 -0
- data/spec/rspec/core/shared_behaviour_spec.rb +185 -0
- data/spec/rspec/core/world_spec.rb +167 -0
- data/spec/rspec/core_spec.rb +35 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec_helper.rb +72 -0
- metadata +219 -0
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'rspec/core/formatters/base_formatter'
|
2
|
+
require 'rspec/core/formatters/base_text_formatter'
|
3
|
+
require 'rspec/core/formatters/documentation_formatter'
|
4
|
+
require 'rspec/core/formatters/progress_formatter'
|
5
|
+
|
6
|
+
module Rspec
|
7
|
+
|
8
|
+
module Core
|
9
|
+
|
10
|
+
module Formatters
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
module Rspec
|
2
|
+
|
3
|
+
module Core
|
4
|
+
|
5
|
+
module Formatters
|
6
|
+
|
7
|
+
class BaseFormatter
|
8
|
+
attr_accessor :behaviour
|
9
|
+
attr_reader :example_count, :duration, :examples
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@example_count = 0
|
13
|
+
@examples = []
|
14
|
+
@behaviour = nil
|
15
|
+
end
|
16
|
+
|
17
|
+
def configuration
|
18
|
+
Rspec::Core.configuration
|
19
|
+
end
|
20
|
+
|
21
|
+
def output
|
22
|
+
Rspec::Core.configuration.output
|
23
|
+
end
|
24
|
+
|
25
|
+
def profile_examples?
|
26
|
+
Rspec::Core.configuration.profile_examples
|
27
|
+
end
|
28
|
+
|
29
|
+
def color_enabled?
|
30
|
+
configuration.color_enabled?
|
31
|
+
end
|
32
|
+
|
33
|
+
def pending_examples
|
34
|
+
@pending_examples ||= ::Rspec::Core.world.find(examples, :positive, :execution_result => { :status => 'pending' })
|
35
|
+
end
|
36
|
+
|
37
|
+
def failed_examples
|
38
|
+
@failed_examples ||= ::Rspec::Core.world.find(examples, :positive, :execution_result => { :status => 'failed' })
|
39
|
+
end
|
40
|
+
|
41
|
+
# This method is invoked before any examples are run, right after
|
42
|
+
# they have all been collected. This can be useful for special
|
43
|
+
# formatters that need to provide progress on feedback (graphical ones)
|
44
|
+
#
|
45
|
+
# This method will only be invoked once, and the next one to be invoked
|
46
|
+
# is #add_behaviour
|
47
|
+
def start(example_count)
|
48
|
+
@example_count = example_count
|
49
|
+
end
|
50
|
+
|
51
|
+
def example_finished(example)
|
52
|
+
examples << example
|
53
|
+
end
|
54
|
+
|
55
|
+
# This method is invoked at the beginning of the execution of each behaviour.
|
56
|
+
# +behaviour+ is the behaviour.
|
57
|
+
#
|
58
|
+
# The next method to be invoked after this is #example_failed or #example_finished
|
59
|
+
def add_behaviour(behaviour)
|
60
|
+
@behaviour = behaviour
|
61
|
+
end
|
62
|
+
|
63
|
+
# This method is invoked after all of the examples have executed. The next method
|
64
|
+
# to be invoked after this one is #dump_failure (once for each failed example),
|
65
|
+
def start_dump(duration)
|
66
|
+
@duration = duration
|
67
|
+
end
|
68
|
+
|
69
|
+
# Dumps detailed information about each example failure.
|
70
|
+
def dump_failures
|
71
|
+
end
|
72
|
+
|
73
|
+
# This method is invoked after the dumping of examples and failures.
|
74
|
+
def dump_summary
|
75
|
+
end
|
76
|
+
|
77
|
+
# This gets invoked after the summary if option is set to do so.
|
78
|
+
def dump_pending
|
79
|
+
end
|
80
|
+
|
81
|
+
# This method is invoked at the very end. Allows the formatter to clean up, like closing open streams.
|
82
|
+
def close
|
83
|
+
end
|
84
|
+
|
85
|
+
def format_backtrace(backtrace, example)
|
86
|
+
return "" unless backtrace
|
87
|
+
return backtrace if example.metadata[:full_backtrace] == true
|
88
|
+
|
89
|
+
cleansed = backtrace.select { |line| backtrace_line(line) }
|
90
|
+
# Kick the describe stack info off the list, just keep the line the problem happened on from that file
|
91
|
+
# cleansed = [cleansed.detect { |line| line.split(':').first == example.metadata[:caller].split(':').first }] if cleansed.size > 1
|
92
|
+
cleansed.empty? ? backtrace : cleansed
|
93
|
+
end
|
94
|
+
|
95
|
+
protected
|
96
|
+
|
97
|
+
def backtrace_line(line)
|
98
|
+
return nil if configuration.cleaned_from_backtrace?(line)
|
99
|
+
line.sub!(/\A([^:]+:\d+)$/, '\\1')
|
100
|
+
return nil if line == '-e:1'
|
101
|
+
line
|
102
|
+
end
|
103
|
+
|
104
|
+
def read_failed_line(exception, example)
|
105
|
+
original_file = example.file_path.to_s.downcase
|
106
|
+
matching_line = exception.backtrace.detect { |line| line.split(':').first.downcase == original_file.downcase }
|
107
|
+
|
108
|
+
return "Unable to find matching line from backtrace" if matching_line.nil?
|
109
|
+
|
110
|
+
file_path, line_number = matching_line.split(':')
|
111
|
+
if File.exist?(file_path)
|
112
|
+
open(file_path, 'r') { |f| f.readlines[line_number.to_i - 1] }
|
113
|
+
else
|
114
|
+
"Unable to find #{file_path} to read failed line"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
module Rspec
|
2
|
+
|
3
|
+
module Core
|
4
|
+
|
5
|
+
module Formatters
|
6
|
+
|
7
|
+
class BaseTextFormatter < BaseFormatter
|
8
|
+
|
9
|
+
def dump_failures
|
10
|
+
output.puts
|
11
|
+
failed_examples.each_with_index do |failed_example, index|
|
12
|
+
exception = failed_example.execution_result[:exception_encountered]
|
13
|
+
padding = ' '
|
14
|
+
|
15
|
+
output.puts "#{index.next}) #{failed_example}"
|
16
|
+
output.puts "#{padding}Failure/Error: #{read_failed_line(exception, failed_example).strip}"
|
17
|
+
|
18
|
+
exception.message.split("\n").each do |line|
|
19
|
+
output.puts "#{padding}#{colorise(line, exception).strip}"
|
20
|
+
end
|
21
|
+
|
22
|
+
format_backtrace(exception.backtrace, failed_example).each do |backtrace_info|
|
23
|
+
output.puts grey("#{padding}# #{backtrace_info}")
|
24
|
+
end
|
25
|
+
|
26
|
+
output.puts
|
27
|
+
output.flush
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def colorise(s, failure)
|
32
|
+
red(s)
|
33
|
+
end
|
34
|
+
|
35
|
+
def dump_summary
|
36
|
+
failure_count = failed_examples.size
|
37
|
+
pending_count = pending_examples.size
|
38
|
+
|
39
|
+
output.puts "\nFinished in #{duration} seconds\n"
|
40
|
+
|
41
|
+
summary = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failures"
|
42
|
+
summary << ", #{pending_count} pending" if pending_count > 0
|
43
|
+
|
44
|
+
if failure_count == 0
|
45
|
+
if pending_count > 0
|
46
|
+
output.puts yellow(summary)
|
47
|
+
else
|
48
|
+
output.puts green(summary)
|
49
|
+
end
|
50
|
+
else
|
51
|
+
output.puts red(summary)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Don't print out profiled info if there are failures, it just clutters the output
|
55
|
+
if profile_examples? && failure_count == 0
|
56
|
+
sorted_examples = examples.sort_by { |example| example.execution_result[:run_time] }.reverse.first(10)
|
57
|
+
output.puts "\nTop #{sorted_examples.size} slowest examples:\n"
|
58
|
+
sorted_examples.each do |example|
|
59
|
+
output.puts " (#{sprintf("%.7f", example.execution_result[:run_time])} seconds) #{example}"
|
60
|
+
output.puts grey(" # #{format_caller(example.metadata[:caller])}")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
output.flush
|
65
|
+
end
|
66
|
+
|
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
|
+
def format_caller(caller_info)
|
73
|
+
caller_info.to_s.split(':in `block').first
|
74
|
+
end
|
75
|
+
|
76
|
+
def dump_pending
|
77
|
+
unless pending_examples.empty?
|
78
|
+
output.puts
|
79
|
+
output.puts "Pending:"
|
80
|
+
pending_examples.each do |pending_example, message|
|
81
|
+
output.puts " #{pending_example}"
|
82
|
+
output.puts grey(" # #{format_caller(pending_example.metadata[:caller])}")
|
83
|
+
end
|
84
|
+
end
|
85
|
+
output.flush
|
86
|
+
end
|
87
|
+
|
88
|
+
def close
|
89
|
+
if IO === output && output != $stdout
|
90
|
+
output.close
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
protected
|
95
|
+
|
96
|
+
def color(text, color_code)
|
97
|
+
return text unless color_enabled?
|
98
|
+
"#{color_code}#{text}\e[0m"
|
99
|
+
end
|
100
|
+
|
101
|
+
def bold(text)
|
102
|
+
color(text, "\e[1m")
|
103
|
+
end
|
104
|
+
|
105
|
+
def white(text)
|
106
|
+
color(text, "\e[37m")
|
107
|
+
end
|
108
|
+
|
109
|
+
def green(text)
|
110
|
+
color(text, "\e[32m")
|
111
|
+
end
|
112
|
+
|
113
|
+
def red(text)
|
114
|
+
color(text, "\e[31m")
|
115
|
+
end
|
116
|
+
|
117
|
+
def magenta(text)
|
118
|
+
color(text, "\e[35m")
|
119
|
+
end
|
120
|
+
|
121
|
+
def yellow(text)
|
122
|
+
color(text, "\e[33m")
|
123
|
+
end
|
124
|
+
|
125
|
+
def blue(text)
|
126
|
+
color(text, "\e[34m")
|
127
|
+
end
|
128
|
+
|
129
|
+
def grey(text)
|
130
|
+
color(text, "\e[90m")
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
136
|
+
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module Rspec
|
2
|
+
|
3
|
+
module Core
|
4
|
+
|
5
|
+
module Formatters
|
6
|
+
|
7
|
+
class DocumentationFormatter < BaseTextFormatter
|
8
|
+
|
9
|
+
attr_reader :previous_nested_behaviours
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
super
|
13
|
+
@previous_nested_behaviours = []
|
14
|
+
end
|
15
|
+
|
16
|
+
def add_behaviour(behaviour)
|
17
|
+
super
|
18
|
+
|
19
|
+
described_behaviour_chain.each_with_index do |nested_behaviour, i|
|
20
|
+
unless nested_behaviour == previous_nested_behaviours[i]
|
21
|
+
at_root_level = (i == 0)
|
22
|
+
desc_or_name = at_root_level ? nested_behaviour.name : nested_behaviour.description
|
23
|
+
output.puts if at_root_level
|
24
|
+
output.puts "#{' ' * i}#{desc_or_name}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
@previous_nested_behaviours = described_behaviour_chain
|
29
|
+
end
|
30
|
+
|
31
|
+
def output_for(example)
|
32
|
+
case example.execution_result[:status]
|
33
|
+
when 'failed'
|
34
|
+
failure_output(example, example.execution_result[:exception_encountered])
|
35
|
+
when 'pending'
|
36
|
+
pending_output(example, example.execution_result[:pending_message])
|
37
|
+
when 'passed'
|
38
|
+
passed_output(example)
|
39
|
+
else
|
40
|
+
red(example.execution_result[:status])
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def example_finished(example)
|
45
|
+
super
|
46
|
+
output.puts output_for(example)
|
47
|
+
output.flush
|
48
|
+
end
|
49
|
+
|
50
|
+
def failure_output(example, exception)
|
51
|
+
expectation_not_met = exception.is_a?(::Rspec::Expectations::ExpectationNotMetError)
|
52
|
+
|
53
|
+
message = if expectation_not_met
|
54
|
+
"#{current_indentation}#{example.description} (FAILED)"
|
55
|
+
else
|
56
|
+
"#{current_indentation}#{example.description} (ERROR)"
|
57
|
+
end
|
58
|
+
|
59
|
+
expectation_not_met ? red(message) : magenta(message)
|
60
|
+
end
|
61
|
+
|
62
|
+
def passed_output(example)
|
63
|
+
green("#{current_indentation}#{example.description}")
|
64
|
+
end
|
65
|
+
|
66
|
+
def pending_output(example, message)
|
67
|
+
yellow("#{current_indentation}#{example.description} (PENDING: #{message})")
|
68
|
+
end
|
69
|
+
|
70
|
+
def current_indentation
|
71
|
+
' ' * previous_nested_behaviours.size
|
72
|
+
end
|
73
|
+
|
74
|
+
def described_behaviour_chain
|
75
|
+
behaviour.ancestors
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Rspec
|
2
|
+
|
3
|
+
module Core
|
4
|
+
|
5
|
+
module Formatters
|
6
|
+
|
7
|
+
class ProgressFormatter < BaseTextFormatter
|
8
|
+
|
9
|
+
def output_for(example)
|
10
|
+
case example.execution_result[:status]
|
11
|
+
when 'failed' then colorise('F', example.execution_result[:exception_encountered])
|
12
|
+
when 'pending' then yellow('*')
|
13
|
+
when 'passed' then green('.')
|
14
|
+
else
|
15
|
+
red(example.execution_result[:status])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def example_finished(example)
|
20
|
+
super
|
21
|
+
output.print output_for(example)
|
22
|
+
end
|
23
|
+
|
24
|
+
def start_dump(duration)
|
25
|
+
super
|
26
|
+
output.puts
|
27
|
+
output.flush
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Rspec
|
2
|
+
module Core
|
3
|
+
module KernelExtensions
|
4
|
+
|
5
|
+
def describe(*args, &behaviour_block)
|
6
|
+
Rspec::Core::ExampleGroup.describe(*args, &behaviour_block)
|
7
|
+
end
|
8
|
+
|
9
|
+
alias :context :describe
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
include Rspec::Core::KernelExtensions
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Jim Weirich on 2007-04-10.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require 'flexmock/rspec'
|
7
|
+
|
8
|
+
module Rspec
|
9
|
+
module Core
|
10
|
+
module Mocking
|
11
|
+
module WithFlexmock
|
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
|
18
|
+
end
|
19
|
+
def teardown_mocks_for_rspec
|
20
|
+
flexmock_close
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|