rspec-core 2.99.0 → 3.0.0
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.
- checksums.yaml +8 -8
- checksums.yaml.gz.sig +0 -0
- data/.yardopts +1 -0
- data/Changelog.md +339 -1
- data/License.txt +1 -0
- data/README.md +19 -37
- data/exe/rspec +2 -23
- data/lib/rspec/core/backport_random.rb +336 -0
- data/lib/rspec/core/backtrace_formatter.rb +70 -0
- data/lib/rspec/core/configuration.rb +479 -577
- data/lib/rspec/core/configuration_options.rb +71 -54
- data/lib/rspec/core/drb.rb +111 -0
- data/lib/rspec/core/dsl.rb +86 -18
- data/lib/rspec/core/example.rb +267 -119
- data/lib/rspec/core/example_group.rb +381 -393
- data/lib/rspec/core/filter_manager.rb +133 -114
- data/lib/rspec/core/flat_map.rb +18 -0
- data/lib/rspec/core/formatters/base_formatter.rb +51 -125
- data/lib/rspec/core/formatters/base_text_formatter.rb +34 -286
- data/lib/rspec/core/formatters/console_codes.rb +24 -1
- data/lib/rspec/core/formatters/deprecation_formatter.rb +25 -26
- data/lib/rspec/core/formatters/documentation_formatter.rb +27 -25
- data/lib/rspec/core/formatters/helpers.rb +14 -36
- data/lib/rspec/core/formatters/html_formatter.rb +58 -65
- data/lib/rspec/core/formatters/html_printer.rb +12 -18
- data/lib/rspec/core/formatters/json_formatter.rb +54 -31
- data/lib/rspec/core/formatters/profile_formatter.rb +67 -0
- data/lib/rspec/core/formatters/progress_formatter.rb +11 -15
- data/lib/rspec/core/formatters/snippet_extractor.rb +22 -11
- data/lib/rspec/core/formatters.rb +90 -43
- data/lib/rspec/core/hooks.rb +325 -270
- data/lib/rspec/core/memoized_helpers.rb +45 -156
- data/lib/rspec/core/metadata.rb +284 -236
- data/lib/rspec/core/metadata_filter.rb +86 -0
- data/lib/rspec/core/mocking_adapters/flexmock.rb +29 -0
- data/lib/rspec/core/{mocking/with_mocha.rb → mocking_adapters/mocha.rb} +19 -16
- data/lib/rspec/core/mocking_adapters/null.rb +12 -0
- data/lib/rspec/core/mocking_adapters/rr.rb +29 -0
- data/lib/rspec/core/mocking_adapters/rspec.rb +30 -0
- data/lib/rspec/core/notifications.rb +511 -0
- data/lib/rspec/core/option_parser.rb +49 -74
- data/lib/rspec/core/ordering.rb +156 -0
- data/lib/rspec/core/pending.rb +94 -96
- data/lib/rspec/core/project_initializer/.rspec +3 -0
- data/lib/rspec/core/project_initializer/spec/spec_helper.rb +78 -0
- data/lib/rspec/core/project_initializer.rb +24 -64
- data/lib/rspec/core/rake_task.rb +44 -130
- data/lib/rspec/core/reporter.rb +76 -59
- data/lib/rspec/core/ruby_project.rb +2 -1
- data/lib/rspec/core/runner.rb +117 -52
- data/lib/rspec/core/shared_context.rb +10 -10
- data/lib/rspec/core/shared_example_group.rb +108 -121
- data/lib/rspec/core/version.rb +3 -1
- data/lib/rspec/core/warnings.rb +40 -0
- data/lib/rspec/core/world.rb +66 -10
- data/lib/rspec/core.rb +64 -104
- data.tar.gz.sig +3 -0
- metadata +75 -322
- metadata.gz.sig +1 -0
- data/exe/autospec +0 -13
- data/features/Autotest.md +0 -38
- data/features/README.md +0 -17
- data/features/Upgrade.md +0 -364
- data/features/command_line/README.md +0 -28
- data/features/command_line/example_name_option.feature +0 -97
- data/features/command_line/exit_status.feature +0 -82
- data/features/command_line/format_option.feature +0 -75
- data/features/command_line/init.feature +0 -18
- data/features/command_line/line_number_appended_to_path.feature +0 -140
- data/features/command_line/line_number_option.feature +0 -53
- data/features/command_line/order.feature +0 -26
- data/features/command_line/pattern_option.feature +0 -49
- data/features/command_line/rake_task.feature +0 -122
- data/features/command_line/require_option.feature +0 -43
- data/features/command_line/ruby.feature +0 -22
- data/features/command_line/tag.feature +0 -98
- data/features/command_line/warnings_option.feature +0 -29
- data/features/configuration/alias_example_to.feature +0 -48
- data/features/configuration/backtrace_clean_patterns.feature +0 -102
- data/features/configuration/custom_settings.feature +0 -84
- data/features/configuration/default_path.feature +0 -38
- data/features/configuration/deprecation_stream.feature +0 -58
- data/features/configuration/fail_fast.feature +0 -77
- data/features/configuration/failure_exit_code.feature +0 -36
- data/features/configuration/order_and_seed.feature +0 -3
- data/features/configuration/output_stream.feature +0 -24
- data/features/configuration/pattern.feature +0 -38
- data/features/configuration/profile.feature +0 -220
- data/features/configuration/read_options_from_file.feature +0 -90
- data/features/configuration/run_all_when_everything_filtered.feature +0 -76
- data/features/configuration/show_failures_in_pending_blocks.feature +0 -61
- data/features/configuration/treat_symbols_as_metadata_keys_with_true_values.feature +0 -52
- data/features/example_groups/basic_structure.feature +0 -55
- data/features/example_groups/shared_context.feature +0 -74
- data/features/example_groups/shared_examples.feature +0 -294
- data/features/expectation_framework_integration/configure_expectation_framework.feature +0 -197
- data/features/filtering/exclusion_filters.feature +0 -138
- data/features/filtering/if_and_unless.feature +0 -168
- data/features/filtering/inclusion_filters.feature +0 -105
- data/features/formatters/configurable_colors.feature +0 -31
- data/features/formatters/custom_formatter.feature +0 -36
- data/features/formatters/json_formatter.feature +0 -30
- data/features/formatters/text_formatter.feature +0 -46
- data/features/helper_methods/arbitrary_methods.feature +0 -40
- data/features/helper_methods/let.feature +0 -50
- data/features/helper_methods/modules.feature +0 -149
- data/features/hooks/around_hooks.feature +0 -343
- data/features/hooks/before_and_after_hooks.feature +0 -427
- data/features/hooks/filtering.feature +0 -234
- data/features/metadata/current_example.feature +0 -56
- data/features/metadata/described_class.feature +0 -17
- data/features/metadata/user_defined.feature +0 -113
- data/features/mock_framework_integration/use_any_framework.feature +0 -106
- data/features/mock_framework_integration/use_flexmock.feature +0 -96
- data/features/mock_framework_integration/use_mocha.feature +0 -97
- data/features/mock_framework_integration/use_rr.feature +0 -98
- data/features/mock_framework_integration/use_rspec.feature +0 -97
- data/features/pending/pending_examples.feature +0 -229
- data/features/spec_files/arbitrary_file_suffix.feature +0 -13
- data/features/step_definitions/additional_cli_steps.rb +0 -49
- data/features/subject/attribute_of_subject.feature +0 -124
- data/features/subject/explicit_subject.feature +0 -101
- data/features/subject/implicit_subject.feature +0 -63
- data/features/subject/one_liner_syntax.feature +0 -71
- data/features/support/env.rb +0 -14
- data/features/support/rubinius.rb +0 -6
- data/lib/autotest/discover.rb +0 -10
- data/lib/autotest/rspec2.rb +0 -77
- data/lib/rspec/core/backtrace_cleaner.rb +0 -46
- data/lib/rspec/core/backward_compatibility.rb +0 -55
- data/lib/rspec/core/caller_filter.rb +0 -60
- data/lib/rspec/core/command_line.rb +0 -47
- data/lib/rspec/core/deprecated_mutable_array_proxy.rb +0 -32
- data/lib/rspec/core/deprecation.rb +0 -26
- data/lib/rspec/core/drb_command_line.rb +0 -26
- data/lib/rspec/core/drb_options.rb +0 -87
- data/lib/rspec/core/extensions/instance_eval_with_args.rb +0 -44
- data/lib/rspec/core/extensions/kernel.rb +0 -9
- data/lib/rspec/core/extensions/module_eval_with_args.rb +0 -38
- data/lib/rspec/core/extensions/ordered.rb +0 -27
- data/lib/rspec/core/formatters/text_mate_formatter.rb +0 -34
- data/lib/rspec/core/metadata_hash_builder.rb +0 -97
- data/lib/rspec/core/mocking/with_absolutely_nothing.rb +0 -11
- data/lib/rspec/core/mocking/with_flexmock.rb +0 -27
- data/lib/rspec/core/mocking/with_rr.rb +0 -27
- data/lib/rspec/core/mocking/with_rspec.rb +0 -27
- data/lib/rspec/core/shared_example_group/collection.rb +0 -45
- data/spec/autotest/discover_spec.rb +0 -49
- data/spec/autotest/failed_results_re_spec.rb +0 -45
- data/spec/autotest/rspec_spec.rb +0 -133
- data/spec/command_line/order_spec.rb +0 -204
- data/spec/rspec/core/backtrace_cleaner_spec.rb +0 -68
- data/spec/rspec/core/caller_filter_spec.rb +0 -58
- data/spec/rspec/core/command_line_spec.rb +0 -127
- data/spec/rspec/core/command_line_spec_output.txt +0 -0
- data/spec/rspec/core/configuration_options_spec.rb +0 -417
- data/spec/rspec/core/configuration_spec.rb +0 -2072
- data/spec/rspec/core/deprecation_spec.rb +0 -27
- data/spec/rspec/core/deprecations_spec.rb +0 -59
- data/spec/rspec/core/drb_command_line_spec.rb +0 -102
- data/spec/rspec/core/drb_options_spec.rb +0 -193
- data/spec/rspec/core/dsl_spec.rb +0 -25
- data/spec/rspec/core/example_group_spec.rb +0 -1337
- data/spec/rspec/core/example_spec.rb +0 -502
- data/spec/rspec/core/filter_manager_spec.rb +0 -246
- data/spec/rspec/core/formatters/base_formatter_spec.rb +0 -108
- data/spec/rspec/core/formatters/base_text_formatter_spec.rb +0 -524
- data/spec/rspec/core/formatters/console_codes_spec.rb +0 -50
- data/spec/rspec/core/formatters/deprecation_formatter_spec.rb +0 -263
- data/spec/rspec/core/formatters/documentation_formatter_spec.rb +0 -89
- data/spec/rspec/core/formatters/helpers_spec.rb +0 -104
- data/spec/rspec/core/formatters/html_formatted.html +0 -397
- data/spec/rspec/core/formatters/html_formatter_spec.rb +0 -131
- data/spec/rspec/core/formatters/json_formatter_spec.rb +0 -115
- data/spec/rspec/core/formatters/progress_formatter_spec.rb +0 -30
- data/spec/rspec/core/formatters/snippet_extractor_spec.rb +0 -26
- data/spec/rspec/core/formatters/text_mate_formatted.html +0 -397
- data/spec/rspec/core/formatters/text_mate_formatter_spec.rb +0 -107
- data/spec/rspec/core/hooks_filtering_spec.rb +0 -227
- data/spec/rspec/core/hooks_spec.rb +0 -269
- data/spec/rspec/core/kernel_extensions_spec.rb +0 -9
- data/spec/rspec/core/memoized_helpers_spec.rb +0 -776
- data/spec/rspec/core/metadata_spec.rb +0 -514
- data/spec/rspec/core/option_parser_spec.rb +0 -297
- data/spec/rspec/core/pending_example_spec.rb +0 -260
- data/spec/rspec/core/pending_spec.rb +0 -27
- data/spec/rspec/core/project_initializer_spec.rb +0 -130
- data/spec/rspec/core/rake_task_spec.rb +0 -202
- data/spec/rspec/core/reporter_spec.rb +0 -167
- 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 +0 -1
- data/spec/rspec/core/resources/custom_example_group_runner.rb +0 -14
- data/spec/rspec/core/resources/formatter_specs.rb +0 -60
- data/spec/rspec/core/resources/utf8_encoded.rb +0 -8
- data/spec/rspec/core/rspec_matchers_spec.rb +0 -45
- data/spec/rspec/core/ruby_project_spec.rb +0 -26
- data/spec/rspec/core/runner_spec.rb +0 -82
- data/spec/rspec/core/shared_context_spec.rb +0 -114
- data/spec/rspec/core/shared_example_group/collection_spec.rb +0 -70
- data/spec/rspec/core/shared_example_group_spec.rb +0 -138
- data/spec/rspec/core/world_spec.rb +0 -142
- data/spec/rspec/core_spec.rb +0 -108
- data/spec/spec_helper.rb +0 -135
- data/spec/support/config_options_helper.rb +0 -15
- data/spec/support/helper_methods.rb +0 -55
- data/spec/support/in_sub_process.rb +0 -37
- data/spec/support/isolate_load_path_mutation.rb +0 -6
- data/spec/support/isolated_directory.rb +0 -10
- data/spec/support/isolated_home_directory.rb +0 -16
- data/spec/support/matchers.rb +0 -65
- data/spec/support/mathn_integration_support.rb +0 -12
- data/spec/support/sandboxed_mock_space.rb +0 -116
- data/spec/support/shared_example_groups.rb +0 -42
- data/spec/support/silence_dsl_deprecations.rb +0 -32
- data/spec/support/spec_files.rb +0 -44
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Core
|
|
3
|
+
# Contains metadata filtering logic. This has been extracted from
|
|
4
|
+
# the metadata classes because it operates ON a metadata hash but
|
|
5
|
+
# does not manage any of the state in the hash. We're moving towards
|
|
6
|
+
# having metadata be a raw hash (not a custom subclass), so externalizing
|
|
7
|
+
# this filtering logic helps us move in that direction.
|
|
8
|
+
module MetadataFilter
|
|
9
|
+
extend self
|
|
10
|
+
|
|
11
|
+
# @private
|
|
12
|
+
def any_apply?(filters, metadata)
|
|
13
|
+
filters.any? { |k, v| filter_applies?(k, v, metadata) }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @private
|
|
17
|
+
def all_apply?(filters, metadata)
|
|
18
|
+
filters.all? { |k, v| filter_applies?(k, v, metadata) }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @private
|
|
22
|
+
def filter_applies?(key, value, metadata)
|
|
23
|
+
return filter_applies_to_any_value?(key, value, metadata) if Array === metadata[key] && !(Proc === value)
|
|
24
|
+
return location_filter_applies?(value, metadata) if key == :locations
|
|
25
|
+
return filters_apply?(key, value, metadata) if Hash === value
|
|
26
|
+
|
|
27
|
+
return false unless metadata.has_key?(key)
|
|
28
|
+
|
|
29
|
+
case value
|
|
30
|
+
when Regexp
|
|
31
|
+
metadata[key] =~ value
|
|
32
|
+
when Proc
|
|
33
|
+
case value.arity
|
|
34
|
+
when 0 then value.call
|
|
35
|
+
when 2 then value.call(metadata[key], metadata)
|
|
36
|
+
else value.call(metadata[key])
|
|
37
|
+
end
|
|
38
|
+
else
|
|
39
|
+
metadata[key].to_s == value.to_s
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def filter_applies_to_any_value?(key, value, metadata)
|
|
46
|
+
metadata[key].any? {|v| filter_applies?(key, v, {key => value})}
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def location_filter_applies?(locations, metadata)
|
|
50
|
+
# it ignores location filters for other files
|
|
51
|
+
line_number = example_group_declaration_line(locations, metadata)
|
|
52
|
+
line_number ? line_number_filter_applies?(line_number, metadata) : true
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def line_number_filter_applies?(line_numbers, metadata)
|
|
56
|
+
preceding_declaration_lines = line_numbers.map {|n| RSpec.world.preceding_declaration_line(n)}
|
|
57
|
+
!(relevant_line_numbers(metadata) & preceding_declaration_lines).empty?
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def relevant_line_numbers(metadata)
|
|
61
|
+
return [] unless metadata
|
|
62
|
+
[metadata[:line_number]].compact + (relevant_line_numbers(parent_of metadata))
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def example_group_declaration_line(locations, metadata)
|
|
66
|
+
parent = parent_of(metadata)
|
|
67
|
+
return nil unless parent
|
|
68
|
+
locations[File.expand_path(parent[:file_path])]
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def filters_apply?(key, value, metadata)
|
|
72
|
+
subhash = metadata[key]
|
|
73
|
+
return false unless Hash === subhash || HashImitatable === subhash
|
|
74
|
+
value.all? { |k, v| filter_applies?(k, v, subhash) }
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def parent_of(metadata)
|
|
78
|
+
if metadata.key?(:example_group)
|
|
79
|
+
metadata[:example_group]
|
|
80
|
+
else
|
|
81
|
+
metadata[:parent_example_group]
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Created by Jim Weirich on 2007-04-10.
|
|
2
|
+
# Copyright (c) 2007. All rights reserved.
|
|
3
|
+
|
|
4
|
+
require 'flexmock/rspec'
|
|
5
|
+
|
|
6
|
+
module RSpec
|
|
7
|
+
module Core
|
|
8
|
+
module MockingAdapters
|
|
9
|
+
# @private
|
|
10
|
+
module Flexmock
|
|
11
|
+
include ::FlexMock::MockContainer
|
|
12
|
+
|
|
13
|
+
def self.framework_name; :flexmock end
|
|
14
|
+
|
|
15
|
+
def setup_mocks_for_rspec
|
|
16
|
+
# No setup required
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def verify_mocks_for_rspec
|
|
20
|
+
flexmock_verify
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def teardown_mocks_for_rspec
|
|
24
|
+
flexmock_close
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -26,26 +26,29 @@ end
|
|
|
26
26
|
|
|
27
27
|
module RSpec
|
|
28
28
|
module Core
|
|
29
|
-
module
|
|
30
|
-
|
|
29
|
+
module MockingAdapters
|
|
30
|
+
# @private
|
|
31
|
+
module Mocha
|
|
32
|
+
def self.framework_name; :mocha end
|
|
31
33
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
# Mocha::Standalone was deprecated as of Mocha 0.9.7.
|
|
35
|
+
begin
|
|
36
|
+
include ::Mocha::API
|
|
37
|
+
rescue NameError
|
|
38
|
+
include ::Mocha::Standalone
|
|
39
|
+
end
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
def setup_mocks_for_rspec
|
|
42
|
+
mocha_setup
|
|
43
|
+
end
|
|
42
44
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
def verify_mocks_for_rspec
|
|
46
|
+
mocha_verify
|
|
47
|
+
end
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
def teardown_mocks_for_rspec
|
|
50
|
+
mocha_teardown
|
|
51
|
+
end
|
|
49
52
|
end
|
|
50
53
|
end
|
|
51
54
|
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'rr'
|
|
2
|
+
|
|
3
|
+
RSpec.configuration.backtrace_exclusion_patterns.push(RR::Errors::BACKTRACE_IDENTIFIER)
|
|
4
|
+
|
|
5
|
+
module RSpec
|
|
6
|
+
module Core
|
|
7
|
+
# @private
|
|
8
|
+
module MockingAdapters
|
|
9
|
+
# @private
|
|
10
|
+
module RR
|
|
11
|
+
def self.framework_name; :rr end
|
|
12
|
+
|
|
13
|
+
include ::RR::Extensions::InstanceMethods
|
|
14
|
+
|
|
15
|
+
def setup_mocks_for_rspec
|
|
16
|
+
::RR::Space.instance.reset
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def verify_mocks_for_rspec
|
|
20
|
+
::RR::Space.instance.verify_doubles
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def teardown_mocks_for_rspec
|
|
24
|
+
::RR::Space.instance.reset
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'rspec/mocks'
|
|
2
|
+
|
|
3
|
+
module RSpec
|
|
4
|
+
module Core
|
|
5
|
+
module MockingAdapters
|
|
6
|
+
# @private
|
|
7
|
+
module RSpec
|
|
8
|
+
include ::RSpec::Mocks::ExampleMethods
|
|
9
|
+
|
|
10
|
+
def self.framework_name; :rspec end
|
|
11
|
+
|
|
12
|
+
def self.configuration
|
|
13
|
+
::RSpec::Mocks.configuration
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def setup_mocks_for_rspec
|
|
17
|
+
::RSpec::Mocks.setup
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def verify_mocks_for_rspec
|
|
21
|
+
::RSpec::Mocks.verify
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def teardown_mocks_for_rspec
|
|
25
|
+
::RSpec::Mocks.teardown
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|