rspec-support 3.0.0.beta1 → 3.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
Binary file
@@ -1,5 +1,11 @@
1
+ ### 3.0.0.beta2 / 2014-02-17
2
+ [full changelog](http://github.com/rspec/rspec-support/compare/v3.0.0.beta1...v3.0.0.beta2)
3
+
4
+ Bug Fixes:
5
+
6
+ * Issue message when :replacement is passed to `RSpec.warn_with`. (Jon Rowe)
7
+
1
8
  ### 3.0.0.beta1 / 2013-11-07
2
9
  [full changelog](https://github.com/rspec/rspec-support/compare/0dc12d1bdbbacc757a9989f8c09cd08ef3a4837e...v3.0.0.beta1)
3
10
 
4
11
  Initial release.
5
-
File without changes
@@ -2,5 +2,30 @@ require "rspec/support/version"
2
2
 
3
3
  module RSpec
4
4
  module Support
5
+ # @api private
6
+ KERNEL_METHOD_METHOD = ::Kernel.instance_method(:method)
7
+
8
+ # @api private
9
+ #
10
+ # Used internally to get a method handle for a particular object
11
+ # and method name.
12
+ #
13
+ # Includes handling for a few special cases:
14
+ #
15
+ # - Objects that redefine #method (e.g. an HTTPRequest struct)
16
+ # - BasicObject subclasses that mixin a Kernel dup (e.g. SimpleDelegator)
17
+ if RUBY_VERSION.to_i >= 2 && RUBY_ENGINE != 'rbx'
18
+ def self.method_handle_for(object, method_name)
19
+ KERNEL_METHOD_METHOD.bind(object).call(method_name)
20
+ end
21
+ else
22
+ def self.method_handle_for(object, method_name)
23
+ if ::Kernel === object
24
+ KERNEL_METHOD_METHOD.bind(object).call(method_name)
25
+ else
26
+ object.method(method_name)
27
+ end
28
+ end
29
+ end
5
30
  end
6
31
  end
@@ -0,0 +1,47 @@
1
+ module RSpec
2
+ module Support
3
+ # Provides a means to fuzzy-match between two arbitrary objects.
4
+ # Understands array/hash nesting. Uses `===` or `==` to
5
+ # perform the matching.
6
+ module FuzzyMatcher
7
+ # @api private
8
+ def self.values_match?(expected, actual)
9
+ if Array === expected && Enumerable === actual
10
+ return arrays_match?(expected, actual.to_a)
11
+ elsif Hash === expected && Hash === actual
12
+ return hashes_match?(expected, actual)
13
+ end
14
+
15
+ begin
16
+ actual == expected || expected === actual
17
+ rescue ArgumentError
18
+ # Some objects, like 0-arg lambdas on 1.9+, raise
19
+ # ArgumentError for `expected === actual`.
20
+ false
21
+ end
22
+ end
23
+
24
+ # @private
25
+ def self.arrays_match?(expected_list, actual_list)
26
+ return false if expected_list.size != actual_list.size
27
+
28
+ expected_list.zip(actual_list).all? do |expected, actual|
29
+ values_match?(expected, actual)
30
+ end
31
+ end
32
+
33
+ # @private
34
+ def self.hashes_match?(expected_hash, actual_hash)
35
+ return false if expected_hash.size != actual_hash.size
36
+
37
+ expected_hash.all? do |expected_key, expected_value|
38
+ actual_value = actual_hash.fetch(expected_key) { return false }
39
+ values_match?(expected_value, actual_value)
40
+ end
41
+ end
42
+
43
+ private_class_method :arrays_match?, :hashes_match?
44
+ end
45
+ end
46
+ end
47
+
@@ -1,14 +1,57 @@
1
1
  require 'rspec/support/spec/deprecation_helpers'
2
+ require 'rspec/support/spec/with_isolated_stderr'
2
3
  require 'rspec/support/spec/stderr_splitter'
3
4
 
4
5
  warning_preventer = $stderr = RSpec::Support::StdErrSplitter.new($stderr)
5
6
 
6
7
  RSpec.configure do |c|
7
8
  c.include RSpecHelpers
9
+ c.include RSpec::Support::WithIsolatedStdErr
10
+
8
11
  c.before do
9
12
  warning_preventer.reset!
10
13
  end
14
+
11
15
  c.after do |example|
12
16
  warning_preventer.verify_example!(example)
13
17
  end
18
+
19
+ if c.files_to_run.one?
20
+ c.full_backtrace = true
21
+ c.formatter = 'doc' if c.formatters.none?
22
+ end
23
+
24
+ c.filter_run :focus
25
+ c.run_all_when_everything_filtered = true
26
+ end
27
+
28
+ module RSpec::Support::Spec
29
+ def self.setup_simplecov(&block)
30
+ # Simplecov emits some ruby warnings when loaded, so silence them.
31
+ old_verbose, $VERBOSE = $VERBOSE, false
32
+
33
+ return if ENV['NO_COVERAGE'] || RUBY_VERSION < '1.9.3' || RUBY_ENGINE != 'ruby'
34
+
35
+ # Don't load it when we're running a single isolated
36
+ # test file rather than the whole suite.
37
+ return if RSpec.configuration.files_to_run.one?
38
+
39
+ require 'simplecov'
40
+
41
+ SimpleCov.start do
42
+ add_filter "./bundle/"
43
+ add_filter "./tmp/"
44
+ add_filter do |source_file|
45
+ # Filter out `spec` directory except when it is under `lib`
46
+ # (as is the case in rspec-support)
47
+ source_file.filename.include?('/spec/') && !source_file.filename.include?('/lib/')
48
+ end
49
+
50
+ instance_eval(&block) if block
51
+ end
52
+ rescue LoadError
53
+ ensure
54
+ $VERBOSE = old_verbose
55
+ end
14
56
  end
57
+
@@ -1,7 +1,21 @@
1
1
  module RSpecHelpers
2
- def expect_deprecation_with_call_site(file, line)
2
+
3
+ def expect_no_deprecation
4
+ expect(RSpec.configuration.reporter).not_to receive(:deprecation)
5
+ end
6
+
7
+ def expect_deprecation_with_call_site(file, line, snippet=//)
3
8
  expect(RSpec.configuration.reporter).to receive(:deprecation) do |options|
4
9
  expect(options[:call_site]).to include([file, line].join(':'))
10
+ expect(options[:deprecated]).to match(snippet)
11
+ end
12
+ end
13
+
14
+ def expect_warn_deprecation_with_call_site(file, line, snippet=//)
15
+ expect(RSpec.configuration.reporter).to receive(:deprecation) do |options|
16
+ message = options[:message]
17
+ expect(message).to match(snippet)
18
+ expect(message).to include([file, line].join(':'))
5
19
  end
6
20
  end
7
21
 
@@ -9,6 +23,10 @@ module RSpecHelpers
9
23
  allow(RSpec.configuration.reporter).to receive(:deprecation)
10
24
  end
11
25
 
26
+ def expect_no_deprecations
27
+ expect(RSpec.configuration.reporter).not_to receive(:deprecation)
28
+ end
29
+
12
30
  def expect_warning_without_call_site(expected = //)
13
31
  expect(::Kernel).to receive(:warn) do |message|
14
32
  expect(message).to match expected
@@ -31,8 +31,8 @@ module RSpec
31
31
  end
32
32
  else
33
33
  def in_sub_process
34
- pending "This spec requires forking to work properly, " +
35
- "and your platform does not support forking"
34
+ skip "This spec requires forking to work properly, " +
35
+ "and your platform does not support forking"
36
36
  end
37
37
  end
38
38
  end
@@ -0,0 +1,14 @@
1
+ module RSpec
2
+ module Support
3
+ module WithIsolatedStdErr
4
+
5
+ def with_isolated_stderr
6
+ original = $stderr
7
+ $stderr = StringIO.new
8
+ yield
9
+ $stderr = original
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -1,7 +1,7 @@
1
1
  module RSpec
2
2
  module Support
3
3
  module Version
4
- STRING = '3.0.0.beta1'
4
+ STRING = '3.0.0.beta2'
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,53 @@
1
+ module RSpec
2
+ module Support
3
+ LibraryVersionTooLowError = Class.new(StandardError)
4
+
5
+ # @private
6
+ class VersionChecker
7
+ def initialize(library_name, library_version, min_patch_level)
8
+ @library_name, @library_version = library_name, library_version
9
+ @min_patch_level = min_patch_level
10
+
11
+ @major, @minor, @patch = parse_version(library_version)
12
+ @min_major, @min_minor, @min_patch = parse_version(min_patch_level)
13
+
14
+ @comparison_result = compare_version
15
+ end
16
+
17
+ def check_version!
18
+ raise_too_low_error if too_low?
19
+ end
20
+
21
+ private
22
+
23
+ def too_low?
24
+ @comparison_result == :too_low
25
+ end
26
+
27
+ def raise_too_low_error
28
+ raise LibraryVersionTooLowError,
29
+ "You are using #{@library_name} #{@library_version}. " +
30
+ "RSpec requires version #{version_requirement}."
31
+ end
32
+
33
+ def compare_version
34
+ case
35
+ when @major < @min_major then :too_low
36
+ when @major > @min_major then :ok
37
+ when @minor < @min_minor then :too_low
38
+ when @minor > @min_minor then :ok
39
+ when @patch < @min_patch then :too_low
40
+ else :ok
41
+ end
42
+ end
43
+
44
+ def version_requirement
45
+ ">= #{@min_patch_level}"
46
+ end
47
+
48
+ def parse_version(version)
49
+ version.split('.').map { |v| v.to_i }
50
+ end
51
+ end
52
+ end
53
+ end
@@ -34,6 +34,7 @@ module RSpec
34
34
  # Used internally to print longer warnings
35
35
  def self.warn_with(message, options = {})
36
36
  call_site = options.fetch(:call_site) { CallerFilter.first_non_rspec_line }
37
+ message << " Use #{options[:replacement]} instead." if options[:replacement]
37
38
  message << " Called from #{call_site}." if call_site
38
39
  ::Kernel.warn message
39
40
  end
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-support
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta1
4
+ version: 3.0.0.beta2
5
+ prerelease: 6
5
6
  platform: ruby
6
7
  authors:
7
8
  - David Chelimsky
@@ -13,41 +14,57 @@ authors:
13
14
  autorequire:
14
15
  bindir: bin
15
16
  cert_chain:
16
- - !binary |-
17
- LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURqakNDQW5hZ0F3SUJB
18
- Z0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREJHTVJJd0VBWURWUVFEREFseWMz
19
- QmwKWXkxa1pYWXhHekFaQmdvSmtpYUprL0lzWkFFWkZndG5iMjluYkdWbmIz
20
- VndjekVUTUJFR0NnbVNKb21UOGl4awpBUmtXQTJOdmJUQWVGdzB4TXpFeE1E
21
- Y3hPVFF5TlRsYUZ3MHhOREV4TURjeE9UUXlOVGxhTUVZeEVqQVFCZ05WCkJB
22
- TU1DWEp6Y0dWakxXUmxkakViTUJrR0NnbVNKb21UOGl4a0FSa1dDMmR2YjJk
23
- c1pXZHZkWEJ6TVJNd0VRWUsKQ1pJbWlaUHlMR1FCR1JZRFkyOXRNSUlCSWpB
24
- TkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQQpuaENlWm91
25
- RExYV081NW5vK0VkWk5DdGpYamZKUTFYOVRiUGN2QkREMjlPeXBJVWNlMmgv
26
- VmRLWEIyZ0k3WkhzCkY1TmtQZ2dzbFRFckdGbVdBdElpdXI3dTk0M1JWcUhP
27
- c3lvSXN5MDY1RjlmQ3RyeWtrQSsyMmVsdlREaGE0SXoKUlVDdnVoUTNrbGF0
28
- WWs0akYrY0d0MWpOT05OVmRMT2l5MGJNeW52Y003aG9WUTJBb213R3MrY0VP
29
- V1EvNGRrRApKY05WM3FmekY1UUJjVEQyMzcyWE5NNTNiMjVuWVZRU1gyS0g1
30
- RkY3QmhsS3lvdjMzYk9tMmdBOU0rbVdJdWpXCnFna3l4VmxmcmxFK1pCZ1Yz
31
- d1huMUNvamcxTHBUcTM1eU9Bcmd3aW95cnd3bFpaSlI5am9OOXMvbkRrbGZy
32
- NUEKK2R5RVRqRmM2Y21FUFdacnQyY0pCUUlEQVFBQm80R0dNSUdETUFrR0Ex
33
- VWRFd1FDTUFBd0N3WURWUjBQQkFRRApBZ1N3TUIwR0ExVWREZ1FXQkJTVytX
34
- RDdobjFzd0oxQTdpOHRidUZldU5DSkNqQWtCZ05WSFJFRUhUQWJnUmx5CmMz
35
- QmxZeTFrWlhaQVoyOXZaMnhsWjI5MWNITXVZMjl0TUNRR0ExVWRFZ1FkTUJ1
36
- QkdYSnpjR1ZqTFdSbGRrQm4KYjI5bmJHVm5iM1Z3Y3k1amIyMHdEUVlKS29a
37
- SWh2Y05BUUVGQlFBRGdnRUJBSDI3akFaOHNEN3ZuWHVwajZZKwpCYUJkZkh0
38
- Q2tGYXNsTEowYUt1TURJVlh3WXVLZnFvVzE1Y1pQRExtU0lFQnVRRk0zbHc2
39
- ZC9oRUVMNFVvMmpaCkZ2dG1INU94aWZQRHpGeVV0Q0w0eXA2cWdOZS9YZjZz
40
- RHNSZzZGbUtjcGdxQ3dOT21zVmlhZjBMUFNVSC9HWVEKM1Rlb3o4UUNhRGJE
41
- N0FLc2ZmVDdlRHJuYkhuS3dlTzFYZGVtUkpDOTh1L3lZeG5Hek1TV0tFc24w
42
- OWV0QmxaOQo3SDY3azVaM3VmNmNmTFpnVG9XTDZ6U2h6WlkzTnVuNXI3M1lz
43
- TmYyL1FaT2U0VVplNHZmR3ZuNmJhdzUzeXM5CjF5SEMxQWNTWXB2aTJkQWJP
44
- aUhUNWlRRitrcm00d3NlOEtjdFhnVE5uak1zSEVvR0t1bEpTMi9zWmw5MGpj
45
- Q3oKbXVBPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
46
- date: 2013-11-08 00:00:00.000000000 Z
17
+ - ! '-----BEGIN CERTIFICATE-----
18
+
19
+ MIIDjjCCAnagAwIBAgIBATANBgkqhkiG9w0BAQUFADBGMRIwEAYDVQQDDAlyc3Bl
20
+
21
+ Yy1kZXYxGzAZBgoJkiaJk/IsZAEZFgtnb29nbGVnb3VwczETMBEGCgmSJomT8ixk
22
+
23
+ ARkWA2NvbTAeFw0xMzExMDcxOTQyNTlaFw0xNDExMDcxOTQyNTlaMEYxEjAQBgNV
24
+
25
+ BAMMCXJzcGVjLWRldjEbMBkGCgmSJomT8ixkARkWC2dvb2dsZWdvdXBzMRMwEQYK
26
+
27
+ CZImiZPyLGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
28
+
29
+ nhCeZouDLXWO55no+EdZNCtjXjfJQ1X9TbPcvBDD29OypIUce2h/VdKXB2gI7ZHs
30
+
31
+ F5NkPggslTErGFmWAtIiur7u943RVqHOsyoIsy065F9fCtrykkA+22elvTDha4Iz
32
+
33
+ RUCvuhQ3klatYk4jF+cGt1jNONNVdLOiy0bMynvcM7hoVQ2AomwGs+cEOWQ/4dkD
34
+
35
+ JcNV3qfzF5QBcTD2372XNM53b25nYVQSX2KH5FF7BhlKyov33bOm2gA9M+mWIujW
36
+
37
+ qgkyxVlfrlE+ZBgV3wXn1Cojg1LpTq35yOArgwioyrwwlZZJR9joN9s/nDklfr5A
38
+
39
+ +dyETjFc6cmEPWZrt2cJBQIDAQABo4GGMIGDMAkGA1UdEwQCMAAwCwYDVR0PBAQD
40
+
41
+ AgSwMB0GA1UdDgQWBBSW+WD7hn1swJ1A7i8tbuFeuNCJCjAkBgNVHREEHTAbgRly
42
+
43
+ c3BlYy1kZXZAZ29vZ2xlZ291cHMuY29tMCQGA1UdEgQdMBuBGXJzcGVjLWRldkBn
44
+
45
+ b29nbGVnb3Vwcy5jb20wDQYJKoZIhvcNAQEFBQADggEBAH27jAZ8sD7vnXupj6Y+
46
+
47
+ BaBdfHtCkFaslLJ0aKuMDIVXwYuKfqoW15cZPDLmSIEBuQFM3lw6d/hEEL4Uo2jZ
48
+
49
+ FvtmH5OxifPDzFyUtCL4yp6qgNe/Xf6sDsRg6FmKcpgqCwNOmsViaf0LPSUH/GYQ
50
+
51
+ 3Teoz8QCaDbD7AKsffT7eDrnbHnKweO1XdemRJC98u/yYxnGzMSWKEsn09etBlZ9
52
+
53
+ 7H67k5Z3uf6cfLZgToWL6zShzZY3Nun5r73YsNf2/QZOe4UZe4vfGvn6baw53ys9
54
+
55
+ 1yHC1AcSYpvi2dAbOiHT5iQF+krm4wse8KctXgTNnjMsHEoGKulJS2/sZl90jcCz
56
+
57
+ muA=
58
+
59
+ -----END CERTIFICATE-----
60
+
61
+ '
62
+ date: 2014-02-18 00:00:00.000000000 Z
47
63
  dependencies:
48
64
  - !ruby/object:Gem::Dependency
49
65
  name: bundler
50
66
  requirement: !ruby/object:Gem::Requirement
67
+ none: false
51
68
  requirements:
52
69
  - - ~>
53
70
  - !ruby/object:Gem::Version
@@ -55,6 +72,7 @@ dependencies:
55
72
  type: :development
56
73
  prerelease: false
57
74
  version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
58
76
  requirements:
59
77
  - - ~>
60
78
  - !ruby/object:Gem::Version
@@ -62,6 +80,7 @@ dependencies:
62
80
  - !ruby/object:Gem::Dependency
63
81
  name: rake
64
82
  requirement: !ruby/object:Gem::Requirement
83
+ none: false
65
84
  requirements:
66
85
  - - ~>
67
86
  - !ruby/object:Gem::Version
@@ -69,6 +88,7 @@ dependencies:
69
88
  type: :development
70
89
  prerelease: false
71
90
  version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
72
92
  requirements:
73
93
  - - ~>
74
94
  - !ruby/object:Gem::Version
@@ -76,6 +96,7 @@ dependencies:
76
96
  - !ruby/object:Gem::Dependency
77
97
  name: rspec
78
98
  requirement: !ruby/object:Gem::Requirement
99
+ none: false
79
100
  requirements:
80
101
  - - ! '>='
81
102
  - !ruby/object:Gem::Version
@@ -83,6 +104,7 @@ dependencies:
83
104
  type: :development
84
105
  prerelease: false
85
106
  version_requirements: !ruby/object:Gem::Requirement
107
+ none: false
86
108
  requirements:
87
109
  - - ! '>='
88
110
  - !ruby/object:Gem::Version
@@ -95,38 +117,42 @@ extra_rdoc_files: []
95
117
  files:
96
118
  - lib/rspec/support.rb
97
119
  - lib/rspec/support/caller_filter.rb
120
+ - lib/rspec/support/fuzzy_matcher.rb
98
121
  - lib/rspec/support/spec.rb
99
122
  - lib/rspec/support/spec/deprecation_helpers.rb
100
123
  - lib/rspec/support/spec/in_sub_process.rb
101
124
  - lib/rspec/support/spec/stderr_splitter.rb
125
+ - lib/rspec/support/spec/with_isolated_stderr.rb
102
126
  - lib/rspec/support/version.rb
127
+ - lib/rspec/support/version_checker.rb
103
128
  - lib/rspec/support/warnings.rb
104
129
  - README.md
105
- - License.txt
130
+ - LICENSE.txt
106
131
  - Changelog.md
107
132
  homepage: https://github.com/rspec/rspec-support
108
133
  licenses:
109
134
  - MIT
110
- metadata: {}
111
135
  post_install_message:
112
136
  rdoc_options:
113
137
  - --charset=UTF-8
114
138
  require_paths:
115
139
  - lib
116
140
  required_ruby_version: !ruby/object:Gem::Requirement
141
+ none: false
117
142
  requirements:
118
143
  - - ! '>='
119
144
  - !ruby/object:Gem::Version
120
145
  version: 1.8.7
121
146
  required_rubygems_version: !ruby/object:Gem::Requirement
147
+ none: false
122
148
  requirements:
123
149
  - - ! '>'
124
150
  - !ruby/object:Gem::Version
125
151
  version: 1.3.1
126
152
  requirements: []
127
153
  rubyforge_project: rspec
128
- rubygems_version: 2.0.7
154
+ rubygems_version: 1.8.23
129
155
  signing_key:
130
- specification_version: 4
131
- summary: rspec-support-3.0.0.beta1
156
+ specification_version: 3
157
+ summary: rspec-support-3.0.0.beta2
132
158
  test_files: []
metadata.gz.sig CHANGED
Binary file
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NTY1ODMyNjMwYTQ5NmNiYTE2ZDE0Yzg4NmNjYjM3MTg1Y2M1OGMwOA==
5
- data.tar.gz: !binary |-
6
- ZDUyM2RhMTFkYjYwZGMwZTQwNzhjYzM4ZDE4Y2Y3OTMwMjQxYzE0Zg==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- N2M3ZjE0Y2VhMGY4NWQ0YmM2ODk4NmNkNDQ3ZjI5M2M1MzQ5ZjZiMjE0NzA2
10
- MGE5MzMxOWI1MTRjZDAwNzhiNDE1ZDBmYjMyZGY3NmNjMjZjZTBlZGY4ZWM2
11
- OWVjMjM5NDQ0Y2EyMjM1YTZhNDA2NTAxYWUwZjk5NWU0ZDE4MmU=
12
- data.tar.gz: !binary |-
13
- ZTI5ZTRiNjFjYTQyNjY2ZTY4YzU5NDJiYzAwMDlkMWE1ZjYyN2E3NzMzYzVm
14
- NzcwY2YxMTc3YTZlMDZhNzMxOGExMTg2Y2ViOWFmODg1ODBhMTk5ZGVkYTFk
15
- OTRiMWUzMmUzNjJhMjU1M2E3Yzg3YjdhYzY0OGFjZWMzYzg2ZWQ=
Binary file