rspec-support 3.3.0 → 3.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Changelog.md +16 -0
- data/{LICENSE.txt → LICENSE.md} +3 -2
- data/README.md +19 -5
- data/lib/rspec/support.rb +30 -2
- data/lib/rspec/support/comparable_version.rb +46 -0
- data/lib/rspec/support/method_signature_verifier.rb +17 -0
- data/lib/rspec/support/mutex.rb +73 -0
- data/lib/rspec/support/object_formatter.rb +16 -1
- data/lib/rspec/support/reentrant_mutex.rb +53 -0
- data/lib/rspec/support/ruby_features.rb +30 -1
- data/lib/rspec/support/spec/in_sub_process.rb +1 -1
- data/lib/rspec/support/spec/library_wide_checks.rb +30 -23
- data/lib/rspec/support/version.rb +1 -1
- data/lib/rspec/support/warnings.rb +1 -1
- metadata +21 -4
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59977f88a4871761b348df8e276629645ef92d91
|
4
|
+
data.tar.gz: e274c7de73d8807baffe176641fa6c6d4fa19f10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bca64f883edddd2aa11aafb66eef09f26ccc291d33f9a72b2a263e38bde47ed3957b70107677903981087a1407675e0d50156cb68df3650f5b37e3eefd07f313
|
7
|
+
data.tar.gz: 6d53d754611ab738d697c25c0249c4b90069c951ef2fb717f6578401109eed57b22af5c7071da60c2500ad8293e7035a4ee7e4ad6d540a8d794882c15cf269dc
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/Changelog.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
### 3.4.0 / 2015-11-11
|
2
|
+
[Full Changelog](http://github.com/rspec/rspec-support/compare/v3.3.0...v3.4.0)
|
3
|
+
|
4
|
+
Enhancements:
|
5
|
+
|
6
|
+
* Improve formatting of `Delegator` based objects (e.g. `SimpleDelgator`) in
|
7
|
+
failure messages and diffs. (Andrew Horner, #215)
|
8
|
+
* Add `ComparableVersion`. (Yuji Nakayama, #245)
|
9
|
+
* Add `Ripper` support detection. (Yuji Nakayama, #245)
|
10
|
+
|
11
|
+
Bug Fixes:
|
12
|
+
|
13
|
+
* Work around bug in JRuby that reports that `attr_writer` methods
|
14
|
+
have no parameters, causing RSpec's verifying doubles to wrongly
|
15
|
+
fail when mocking or stubbing a writer method on JRuby. (Myron Marston, #225)
|
16
|
+
|
1
17
|
### 3.3.0 / 2015-06-12
|
2
18
|
[Full Changelog](http://github.com/rspec/rspec-support/compare/v3.2.2...v3.3.0)
|
3
19
|
|
data/{LICENSE.txt → LICENSE.md}
RENAMED
@@ -1,6 +1,7 @@
|
|
1
|
-
|
1
|
+
The MIT License (MIT)
|
2
|
+
====================
|
2
3
|
|
3
|
-
|
4
|
+
* Copyright © 2013 David Chelimsky, Myron Marston, Jon Rowe, Sam Phippen, Xavier Shay, Bradley Schaefer
|
4
5
|
|
5
6
|
Permission is hereby granted, free of charge, to any person obtaining
|
6
7
|
a copy of this software and associated documentation files (the
|
data/README.md
CHANGED
@@ -19,8 +19,22 @@ end
|
|
19
19
|
|
20
20
|
## Contributing
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
22
|
+
Once you've set up the environment, you'll need to cd into the working
|
23
|
+
directory of whichever repo you want to work in. From there you can run the
|
24
|
+
specs and cucumber features, and make patches.
|
25
|
+
|
26
|
+
NOTE: You do not need to use rspec-dev to work on a specific RSpec repo. You
|
27
|
+
can treat each RSpec repo as an independent project.
|
28
|
+
|
29
|
+
- [Build details](BUILD_DETAIL.md)
|
30
|
+
- [Code of Conduct](CODE_OF_CONDUCT.md)
|
31
|
+
- [Detailed contributing guide](CONTRIBUTING.md)
|
32
|
+
- [Development setup guide](DEVELOPMENT.md)
|
33
|
+
|
34
|
+
## Patches
|
35
|
+
|
36
|
+
Please submit a pull request or a github issue to one of the issue trackers
|
37
|
+
listed below. If you submit an issue, please include a link to either of:
|
38
|
+
|
39
|
+
* a gist (or equivalent) of the patch
|
40
|
+
* a branch or commit in your github fork of the repo
|
data/lib/rspec/support.rb
CHANGED
@@ -51,7 +51,7 @@ module RSpec
|
|
51
51
|
handle = object.method(method_name)
|
52
52
|
raise original unless handle.is_a? Method
|
53
53
|
handle
|
54
|
-
rescue
|
54
|
+
rescue Support::AllExceptionsExceptOnesWeMustNotRescue
|
55
55
|
raise original
|
56
56
|
end
|
57
57
|
end
|
@@ -67,7 +67,7 @@ module RSpec
|
|
67
67
|
handle = object.method(method_name)
|
68
68
|
raise original unless handle.is_a? Method
|
69
69
|
handle
|
70
|
-
rescue
|
70
|
+
rescue Support::AllExceptionsExceptOnesWeMustNotRescue
|
71
71
|
raise original
|
72
72
|
end
|
73
73
|
end
|
@@ -78,6 +78,7 @@ module RSpec
|
|
78
78
|
Thread.current[:__rspec] ||= {}
|
79
79
|
end
|
80
80
|
|
81
|
+
# @api private
|
81
82
|
def self.failure_notifier=(callable)
|
82
83
|
thread_local_data[:failure_notifier] = callable
|
83
84
|
end
|
@@ -85,14 +86,17 @@ module RSpec
|
|
85
86
|
# @private
|
86
87
|
DEFAULT_FAILURE_NOTIFIER = lambda { |failure, _opts| raise failure }
|
87
88
|
|
89
|
+
# @api private
|
88
90
|
def self.failure_notifier
|
89
91
|
thread_local_data[:failure_notifier] || DEFAULT_FAILURE_NOTIFIER
|
90
92
|
end
|
91
93
|
|
94
|
+
# @api private
|
92
95
|
def self.notify_failure(failure, options={})
|
93
96
|
failure_notifier.call(failure, options)
|
94
97
|
end
|
95
98
|
|
99
|
+
# @api private
|
96
100
|
def self.with_failure_notifier(callable)
|
97
101
|
orig_notifier = failure_notifier
|
98
102
|
self.failure_notifier = callable
|
@@ -101,6 +105,30 @@ module RSpec
|
|
101
105
|
self.failure_notifier = orig_notifier
|
102
106
|
end
|
103
107
|
|
108
|
+
class << self
|
109
|
+
# @api private
|
110
|
+
attr_writer :warning_notifier
|
111
|
+
end
|
112
|
+
|
113
|
+
# @private
|
114
|
+
DEFAULT_WARNING_NOTIFIER = lambda { |warning| ::Kernel.warn warning }
|
115
|
+
|
116
|
+
# @api private
|
117
|
+
def self.warning_notifier
|
118
|
+
@warning_notifier ||= DEFAULT_WARNING_NOTIFIER
|
119
|
+
end
|
120
|
+
|
121
|
+
# @private
|
122
|
+
module AllExceptionsExceptOnesWeMustNotRescue
|
123
|
+
# These exceptions are dangerous to rescue as rescuing them
|
124
|
+
# would interfere with things we should not interfere with.
|
125
|
+
AVOID_RESCUING = [NoMemoryError, SignalException, Interrupt, SystemExit]
|
126
|
+
|
127
|
+
def self.===(exception)
|
128
|
+
AVOID_RESCUING.none? { |ar| ar === exception }
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
104
132
|
# The Differ is only needed when a a spec fails with a diffable failure.
|
105
133
|
# In the more common case of all specs passing or the only failures being
|
106
134
|
# non-diffable, we can avoid the extra cost of loading the differ, diff-lcs,
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module RSpec
|
2
|
+
module Support
|
3
|
+
# @private
|
4
|
+
class ComparableVersion
|
5
|
+
include Comparable
|
6
|
+
|
7
|
+
attr_reader :string
|
8
|
+
|
9
|
+
def initialize(string)
|
10
|
+
@string = string
|
11
|
+
end
|
12
|
+
|
13
|
+
def <=>(other)
|
14
|
+
other = self.class.new(other) unless other.is_a?(self.class)
|
15
|
+
|
16
|
+
return 0 if string == other.string
|
17
|
+
|
18
|
+
longer_segment_count = [self, other].map { |version| version.segments.count }.max
|
19
|
+
|
20
|
+
longer_segment_count.times do |index|
|
21
|
+
self_segment = segments[index] || 0
|
22
|
+
other_segment = other.segments[index] || 0
|
23
|
+
|
24
|
+
if self_segment.class == other_segment.class
|
25
|
+
result = self_segment <=> other_segment
|
26
|
+
return result unless result == 0
|
27
|
+
else
|
28
|
+
return self_segment.is_a?(String) ? -1 : 1
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
0
|
33
|
+
end
|
34
|
+
|
35
|
+
def segments
|
36
|
+
@segments ||= string.scan(/[a-z]+|\d+/i).map do |segment|
|
37
|
+
if segment =~ /\A\d+\z/
|
38
|
+
segment.to_i
|
39
|
+
else
|
40
|
+
segment
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -136,6 +136,23 @@ module RSpec
|
|
136
136
|
INFINITY = 1 / 0.0
|
137
137
|
end
|
138
138
|
|
139
|
+
# Some versions of JRuby have a nasty bug we have to work around :(.
|
140
|
+
# https://github.com/jruby/jruby/issues/2816
|
141
|
+
if RSpec::Support::Ruby.jruby? &&
|
142
|
+
RubyFeatures.optional_and_splat_args_supported? &&
|
143
|
+
Class.new { attr_writer :foo }.instance_method(:foo=).parameters == []
|
144
|
+
|
145
|
+
class MethodSignature < remove_const(:MethodSignature)
|
146
|
+
private
|
147
|
+
|
148
|
+
def classify_parameters
|
149
|
+
super
|
150
|
+
return unless @method.parameters == [] && @method.arity == 1
|
151
|
+
@max_non_kw_args = @min_non_kw_args = 1
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
139
156
|
# Deals with the slightly different semantics of block arguments.
|
140
157
|
# For methods, arguments are required unless a default value is provided.
|
141
158
|
# For blocks, arguments are optional, even if no default value is provided.
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module RSpec
|
2
|
+
module Support
|
3
|
+
# On 1.8.7, it's in the stdlib.
|
4
|
+
# We don't want to load the stdlib, b/c this is a test tool, and can affect
|
5
|
+
# the test environment, causing tests to pass where they should fail.
|
6
|
+
#
|
7
|
+
# So we're transcribing/modifying it from
|
8
|
+
# https://github.com/ruby/ruby/blob/v1_8_7_374/lib/thread.rb#L56
|
9
|
+
# Some methods we don't need are deleted. Anything I don't
|
10
|
+
# understand (there's quite a bit, actually) is left in.
|
11
|
+
#
|
12
|
+
# Some formating changes are made to appease the robot overlord:
|
13
|
+
# https://travis-ci.org/rspec/rspec-core/jobs/54410874
|
14
|
+
# @private
|
15
|
+
class Mutex
|
16
|
+
def initialize
|
17
|
+
@waiting = []
|
18
|
+
@locked = false
|
19
|
+
@waiting.taint
|
20
|
+
taint
|
21
|
+
end
|
22
|
+
|
23
|
+
# @private
|
24
|
+
def lock
|
25
|
+
while Thread.critical = true && @locked
|
26
|
+
@waiting.push Thread.current
|
27
|
+
Thread.stop
|
28
|
+
end
|
29
|
+
@locked = true
|
30
|
+
Thread.critical = false
|
31
|
+
self
|
32
|
+
end
|
33
|
+
|
34
|
+
# @private
|
35
|
+
def unlock
|
36
|
+
return unless @locked
|
37
|
+
Thread.critical = true
|
38
|
+
@locked = false
|
39
|
+
wakeup_and_run_waiting_thread
|
40
|
+
self
|
41
|
+
end
|
42
|
+
|
43
|
+
# @private
|
44
|
+
def synchronize
|
45
|
+
lock
|
46
|
+
begin
|
47
|
+
yield
|
48
|
+
ensure
|
49
|
+
unlock
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def wakeup_and_run_waiting_thread
|
56
|
+
begin
|
57
|
+
t = @waiting.shift
|
58
|
+
t.wakeup if t
|
59
|
+
rescue ThreadError
|
60
|
+
retry
|
61
|
+
end
|
62
|
+
Thread.critical = false
|
63
|
+
begin
|
64
|
+
t.run if t
|
65
|
+
rescue ThreadError
|
66
|
+
:noop
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# Avoid warnings for library wide checks spec
|
71
|
+
end unless defined?(::RSpec::Support::Mutex) || defined?(::Mutex)
|
72
|
+
end
|
73
|
+
end
|
@@ -36,7 +36,7 @@ module RSpec
|
|
36
36
|
elsif RSpec::Support.is_a_matcher?(object) && object.respond_to?(:description)
|
37
37
|
inspection = object.description
|
38
38
|
else
|
39
|
-
return object
|
39
|
+
return DelegatingInspector.new(object)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
@@ -88,6 +88,21 @@ module RSpec
|
|
88
88
|
pp.text inspection
|
89
89
|
end
|
90
90
|
end
|
91
|
+
|
92
|
+
# @private
|
93
|
+
DelegatingInspector = Struct.new(:object) do
|
94
|
+
def inspect
|
95
|
+
if defined?(::Delegator) && ::Delegator === object
|
96
|
+
"#<#{object.class}(#{ObjectFormatter.format(object.__getobj__)})>"
|
97
|
+
else
|
98
|
+
object.inspect
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def pretty_print(pp)
|
103
|
+
pp.text inspect
|
104
|
+
end
|
105
|
+
end
|
91
106
|
end
|
92
107
|
end
|
93
108
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module RSpec
|
2
|
+
module Support
|
3
|
+
# Allows a thread to lock out other threads from a critical section of code,
|
4
|
+
# while allowing the thread with the lock to reenter that section.
|
5
|
+
#
|
6
|
+
# Based on Monitor as of 2.2 -
|
7
|
+
# https://github.com/ruby/ruby/blob/eb7ddaa3a47bf48045d26c72eb0f263a53524ebc/lib/monitor.rb#L9
|
8
|
+
#
|
9
|
+
# Depends on Mutex, but Mutex is only available as part of core since 1.9.1:
|
10
|
+
# exists - http://ruby-doc.org/core-1.9.1/Mutex.html
|
11
|
+
# dne - http://ruby-doc.org/core-1.9.0/Mutex.html
|
12
|
+
#
|
13
|
+
# @private
|
14
|
+
class ReentrantMutex
|
15
|
+
def initialize
|
16
|
+
@owner = nil
|
17
|
+
@count = 0
|
18
|
+
@mutex = Mutex.new
|
19
|
+
end
|
20
|
+
|
21
|
+
def synchronize
|
22
|
+
enter
|
23
|
+
yield
|
24
|
+
ensure
|
25
|
+
exit
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def enter
|
31
|
+
@mutex.lock if @owner != Thread.current
|
32
|
+
@owner = Thread.current
|
33
|
+
@count += 1
|
34
|
+
end
|
35
|
+
|
36
|
+
def exit
|
37
|
+
@count -= 1
|
38
|
+
return unless @count == 0
|
39
|
+
@owner = nil
|
40
|
+
@mutex.unlock
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
if defined? ::Mutex
|
45
|
+
# On 1.9 and up, this is in core, so we just use the real one
|
46
|
+
Mutex = ::Mutex
|
47
|
+
else # For 1.8.7
|
48
|
+
# :nocov:
|
49
|
+
RSpec::Support.require_rspec_support "mutex"
|
50
|
+
# :nocov:
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'rbconfig'
|
2
|
+
RSpec::Support.require_rspec_support "comparable_version"
|
2
3
|
|
3
4
|
module RSpec
|
4
5
|
module Support
|
@@ -9,7 +10,7 @@ module RSpec
|
|
9
10
|
module_function
|
10
11
|
|
11
12
|
def windows?
|
12
|
-
RbConfig::CONFIG['host_os'] =~ /cygwin|mswin|mingw|bccwin|wince|emx/
|
13
|
+
!!(RbConfig::CONFIG['host_os'] =~ /cygwin|mswin|mingw|bccwin|wince|emx/)
|
13
14
|
end
|
14
15
|
|
15
16
|
def windows_file_path?
|
@@ -55,6 +56,34 @@ module RSpec
|
|
55
56
|
respond_to?(:caller_locations, true)
|
56
57
|
end
|
57
58
|
|
59
|
+
if Exception.method_defined?(:cause)
|
60
|
+
def supports_exception_cause?
|
61
|
+
true
|
62
|
+
end
|
63
|
+
else
|
64
|
+
def supports_exception_cause?
|
65
|
+
false
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
ripper_requirements = [ComparableVersion.new(RUBY_VERSION) >= '1.9.2']
|
70
|
+
|
71
|
+
if Ruby.jruby?
|
72
|
+
ripper_requirements.push(ComparableVersion.new(JRUBY_VERSION) >= '1.7.5')
|
73
|
+
# Ripper on JRuby 9.0.0.0.rc1 or later reports wrong line number.
|
74
|
+
ripper_requirements.push(ComparableVersion.new(JRUBY_VERSION) < '9.0.0.0.rc1')
|
75
|
+
end
|
76
|
+
|
77
|
+
if ripper_requirements.all?
|
78
|
+
def ripper_supported?
|
79
|
+
true
|
80
|
+
end
|
81
|
+
else
|
82
|
+
def ripper_supported?
|
83
|
+
false
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
58
87
|
if Ruby.mri?
|
59
88
|
def kw_args_supported?
|
60
89
|
RUBY_VERSION >= '2.0.0'
|
@@ -1,5 +1,34 @@
|
|
1
1
|
require 'rspec/support/spec/shell_out'
|
2
2
|
|
3
|
+
module RSpec
|
4
|
+
module Support
|
5
|
+
module WhitespaceChecks
|
6
|
+
# This malformed whitespace detection logic has been borrowed from bundler:
|
7
|
+
# https://github.com/bundler/bundler/blob/v1.8.0/spec/quality_spec.rb
|
8
|
+
def check_for_tab_characters(filename)
|
9
|
+
failing_lines = []
|
10
|
+
File.readlines(filename).each_with_index do |line, number|
|
11
|
+
failing_lines << number + 1 if line =~ /\t/
|
12
|
+
end
|
13
|
+
|
14
|
+
return if failing_lines.empty?
|
15
|
+
"#{filename} has tab characters on lines #{failing_lines.join(', ')}"
|
16
|
+
end
|
17
|
+
|
18
|
+
def check_for_extra_spaces(filename)
|
19
|
+
failing_lines = []
|
20
|
+
File.readlines(filename).each_with_index do |line, number|
|
21
|
+
next if line =~ /^\s+#.*\s+\n$/
|
22
|
+
failing_lines << number + 1 if line =~ /\s+\n$/
|
23
|
+
end
|
24
|
+
|
25
|
+
return if failing_lines.empty?
|
26
|
+
"#{filename} has spaces on the EOL on lines #{failing_lines.join(', ')}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
3
32
|
RSpec.shared_examples_for "library wide checks" do |lib, options|
|
4
33
|
consider_a_test_env_file = options.fetch(:consider_a_test_env_file, /MATCHES NOTHING/)
|
5
34
|
allowed_loaded_feature_regexps = options.fetch(:allowed_loaded_feature_regexps, [])
|
@@ -8,6 +37,7 @@ RSpec.shared_examples_for "library wide checks" do |lib, options|
|
|
8
37
|
skip_spec_files = options.fetch(:skip_spec_files, /MATCHES NOTHING/)
|
9
38
|
|
10
39
|
include RSpec::Support::ShellOut
|
40
|
+
include RSpec::Support::WhitespaceChecks
|
11
41
|
|
12
42
|
define_method :files_to_require_for do |sub_dir|
|
13
43
|
slash = File::SEPARATOR
|
@@ -101,29 +131,6 @@ RSpec.shared_examples_for "library wide checks" do |lib, options|
|
|
101
131
|
expect(loaded_features).to eq([])
|
102
132
|
end
|
103
133
|
|
104
|
-
# This malformed whitespace detection logic has been borrowed from bundler:
|
105
|
-
# https://github.com/bundler/bundler/blob/v1.8.0/spec/quality_spec.rb
|
106
|
-
def check_for_tab_characters(filename)
|
107
|
-
failing_lines = []
|
108
|
-
File.readlines(filename).each_with_index do |line, number|
|
109
|
-
failing_lines << number + 1 if line =~ /\t/
|
110
|
-
end
|
111
|
-
|
112
|
-
return if failing_lines.empty?
|
113
|
-
"#{filename} has tab characters on lines #{failing_lines.join(', ')}"
|
114
|
-
end
|
115
|
-
|
116
|
-
def check_for_extra_spaces(filename)
|
117
|
-
failing_lines = []
|
118
|
-
File.readlines(filename).each_with_index do |line, number|
|
119
|
-
next if line =~ /^\s+#.*\s+\n$/
|
120
|
-
failing_lines << number + 1 if line =~ /\s+\n$/
|
121
|
-
end
|
122
|
-
|
123
|
-
return if failing_lines.empty?
|
124
|
-
"#{filename} has spaces on the EOL on lines #{failing_lines.join(', ')}"
|
125
|
-
end
|
126
|
-
|
127
134
|
RSpec::Matchers.define :be_well_formed do
|
128
135
|
match do |actual|
|
129
136
|
actual.empty?
|
@@ -30,7 +30,7 @@ module RSpec
|
|
30
30
|
call_site = options.fetch(:call_site) { CallerFilter.first_non_rspec_line }
|
31
31
|
message << " Use #{options[:replacement]} instead." if options[:replacement]
|
32
32
|
message << " Called from #{call_site}." if call_site
|
33
|
-
|
33
|
+
Support.warning_notifier.call message
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Chelimsky
|
@@ -48,7 +48,7 @@ cert_chain:
|
|
48
48
|
ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
|
49
49
|
F3MdtaDehhjC
|
50
50
|
-----END CERTIFICATE-----
|
51
|
-
date: 2015-
|
51
|
+
date: 2015-11-12 00:00:00.000000000 Z
|
52
52
|
dependencies:
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: bundler
|
@@ -78,6 +78,20 @@ dependencies:
|
|
78
78
|
- - "~>"
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: 10.0.0
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: thread_order
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - "~>"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 1.1.0
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - "~>"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: 1.1.0
|
81
95
|
description: Support utilities for RSpec gems
|
82
96
|
email: rspec-users@rubyforge.org
|
83
97
|
executables: []
|
@@ -85,10 +99,11 @@ extensions: []
|
|
85
99
|
extra_rdoc_files: []
|
86
100
|
files:
|
87
101
|
- Changelog.md
|
88
|
-
- LICENSE.
|
102
|
+
- LICENSE.md
|
89
103
|
- README.md
|
90
104
|
- lib/rspec/support.rb
|
91
105
|
- lib/rspec/support/caller_filter.rb
|
106
|
+
- lib/rspec/support/comparable_version.rb
|
92
107
|
- lib/rspec/support/differ.rb
|
93
108
|
- lib/rspec/support/directory_maker.rb
|
94
109
|
- lib/rspec/support/encoded_string.rb
|
@@ -96,8 +111,10 @@ files:
|
|
96
111
|
- lib/rspec/support/hunk_generator.rb
|
97
112
|
- lib/rspec/support/matcher_definition.rb
|
98
113
|
- lib/rspec/support/method_signature_verifier.rb
|
114
|
+
- lib/rspec/support/mutex.rb
|
99
115
|
- lib/rspec/support/object_formatter.rb
|
100
116
|
- lib/rspec/support/recursive_const_methods.rb
|
117
|
+
- lib/rspec/support/reentrant_mutex.rb
|
101
118
|
- lib/rspec/support/ruby_features.rb
|
102
119
|
- lib/rspec/support/spec.rb
|
103
120
|
- lib/rspec/support/spec/deprecation_helpers.rb
|
@@ -136,5 +153,5 @@ rubyforge_project:
|
|
136
153
|
rubygems_version: 2.2.2
|
137
154
|
signing_key:
|
138
155
|
specification_version: 4
|
139
|
-
summary: rspec-support-3.
|
156
|
+
summary: rspec-support-3.4.0
|
140
157
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|