rspec-sleeping_king_studios 2.5.1 → 2.7.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 +4 -4
- data/CHANGELOG.md +20 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/DEVELOPMENT.md +7 -18
- data/README.md +282 -50
- data/lib/rspec/sleeping_king_studios/all.rb +1 -0
- data/lib/rspec/sleeping_king_studios/concerns/include_contract.rb +260 -0
- data/lib/rspec/sleeping_king_studios/contract.rb +165 -0
- data/lib/rspec/sleeping_king_studios/matchers/built_in/include_matcher.rb +6 -1
- data/lib/rspec/sleeping_king_studios/matchers/built_in/respond_to_matcher.rb +10 -10
- data/lib/rspec/sleeping_king_studios/matchers/core/alias_method.rb +8 -2
- data/lib/rspec/sleeping_king_studios/matchers/core/alias_method_matcher.rb +12 -97
- data/lib/rspec/sleeping_king_studios/matchers/core/delegate_method_matcher.rb +29 -9
- data/lib/rspec/sleeping_king_studios/matchers/core/have_aliased_method.rb +12 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_aliased_method_matcher.rb +114 -0
- data/lib/rspec/sleeping_king_studios/version.rb +31 -17
- metadata +37 -18
@@ -0,0 +1,114 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rspec/sleeping_king_studios/matchers/base_matcher'
|
4
|
+
require 'rspec/sleeping_king_studios/matchers/core'
|
5
|
+
|
6
|
+
module RSpec::SleepingKingStudios::Matchers::Core
|
7
|
+
# Matcher for testing whether an object aliases a specified method using the
|
8
|
+
# specified other method name.
|
9
|
+
#
|
10
|
+
# @since 2.2.0
|
11
|
+
#
|
12
|
+
# @note Prior to 2.7.0, this was named AliasMethodMatcher.
|
13
|
+
class HaveAliasedMethodMatcher < RSpec::SleepingKingStudios::Matchers::BaseMatcher
|
14
|
+
# @param [String, Symbol] original_name The name of the method that is
|
15
|
+
# expected to have an alias.
|
16
|
+
def initialize(original_name)
|
17
|
+
@original_name = original_name.intern
|
18
|
+
end
|
19
|
+
|
20
|
+
# Specifies the name of the new method.
|
21
|
+
#
|
22
|
+
# @param [String, Symbol] aliased_name The method name.
|
23
|
+
#
|
24
|
+
# @return [AliasMethodMatcher] self
|
25
|
+
def as(aliased_name)
|
26
|
+
@aliased_name = aliased_name
|
27
|
+
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
# (see BaseMatcher#description)
|
32
|
+
def description
|
33
|
+
str = "alias :#{original_name}"
|
34
|
+
|
35
|
+
str += " as #{aliased_name.inspect}" if aliased_name
|
36
|
+
|
37
|
+
str
|
38
|
+
end
|
39
|
+
|
40
|
+
# (see BaseMatcher#failure_message)
|
41
|
+
def failure_message
|
42
|
+
message = "expected #{@actual.inspect} to alias :#{original_name}"
|
43
|
+
|
44
|
+
message += " as #{aliased_name.inspect}" if aliased_name
|
45
|
+
|
46
|
+
if @errors[:does_not_respond_to_old_method]
|
47
|
+
message += ", but did not respond to :#{original_name}"
|
48
|
+
|
49
|
+
return message
|
50
|
+
end
|
51
|
+
|
52
|
+
if @errors[:does_not_respond_to_new_method]
|
53
|
+
message += ", but did not respond to :#{aliased_name}"
|
54
|
+
|
55
|
+
return message
|
56
|
+
end
|
57
|
+
|
58
|
+
if @errors[:does_not_alias_method]
|
59
|
+
message +=
|
60
|
+
", but :#{original_name} and :#{aliased_name} are different "\
|
61
|
+
"methods"
|
62
|
+
|
63
|
+
return message
|
64
|
+
end
|
65
|
+
|
66
|
+
message
|
67
|
+
end
|
68
|
+
|
69
|
+
# (see BaseMatcher#matches?)
|
70
|
+
def matches?(actual)
|
71
|
+
super
|
72
|
+
|
73
|
+
@errors = {}
|
74
|
+
|
75
|
+
if aliased_name.nil?
|
76
|
+
raise ArgumentError.new('must specify a new method name')
|
77
|
+
end
|
78
|
+
|
79
|
+
responds_to_methods? && aliases_method?
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
attr_reader :aliased_name
|
85
|
+
|
86
|
+
attr_reader :original_name
|
87
|
+
|
88
|
+
def aliases_method?
|
89
|
+
unless @actual.method(original_name) == @actual.method(aliased_name)
|
90
|
+
@errors[:does_not_alias_method] = true
|
91
|
+
|
92
|
+
return false
|
93
|
+
end
|
94
|
+
|
95
|
+
true
|
96
|
+
end
|
97
|
+
|
98
|
+
def responds_to_methods?
|
99
|
+
unless @actual.respond_to?(original_name)
|
100
|
+
@errors[:does_not_respond_to_old_method] = true
|
101
|
+
|
102
|
+
return false
|
103
|
+
end
|
104
|
+
|
105
|
+
unless @actual.respond_to?(aliased_name)
|
106
|
+
@errors[:does_not_respond_to_new_method] = true
|
107
|
+
|
108
|
+
return false
|
109
|
+
end
|
110
|
+
|
111
|
+
true
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module RSpec
|
4
4
|
module SleepingKingStudios
|
@@ -11,31 +11,45 @@ module RSpec
|
|
11
11
|
# Major version.
|
12
12
|
MAJOR = 2
|
13
13
|
# Minor version.
|
14
|
-
MINOR =
|
14
|
+
MINOR = 7
|
15
15
|
# Patch version.
|
16
|
-
PATCH =
|
16
|
+
PATCH = 0
|
17
17
|
# Prerelease version.
|
18
18
|
PRERELEASE = nil
|
19
19
|
# Build metadata.
|
20
20
|
BUILD = nil
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
22
|
+
class << self
|
23
|
+
# Generates the gem version string from the Version constants.
|
24
|
+
#
|
25
|
+
# Inlined here because dependencies may not be loaded when processing a
|
26
|
+
# gemspec, which results in the user being unable to install the gem for
|
27
|
+
# the first time.
|
28
|
+
#
|
29
|
+
# @see SleepingKingStudios::Tools::SemanticVersion#to_gem_version
|
30
|
+
def to_gem_version
|
31
|
+
str = "#{MAJOR}.#{MINOR}.#{PATCH}"
|
31
32
|
|
32
|
-
|
33
|
-
|
33
|
+
prerelease = value_of(:PRERELEASE)
|
34
|
+
str = "#{str}.#{prerelease}" if prerelease
|
34
35
|
|
35
|
-
|
36
|
-
|
36
|
+
build = value_of(:BUILD)
|
37
|
+
str = "#{str}.#{build}" if build
|
37
38
|
|
38
|
-
|
39
|
+
str
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def value_of(constant)
|
45
|
+
return nil unless const_defined?(constant)
|
46
|
+
|
47
|
+
value = const_get(constant)
|
48
|
+
|
49
|
+
return nil if value.respond_to?(:empty?) && value.empty?
|
50
|
+
|
51
|
+
value
|
52
|
+
end
|
39
53
|
end
|
40
54
|
end
|
41
55
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-sleeping_king_studios
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rob "Merlin" Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hashdiff
|
@@ -42,16 +42,22 @@ dependencies:
|
|
42
42
|
name: sleeping_king_studios-tools
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.8.0
|
48
|
+
- - "<"
|
46
49
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
50
|
+
version: '2'
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
|
-
- - "
|
55
|
+
- - ">="
|
53
56
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
57
|
+
version: 0.8.0
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '2'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: appraisal
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -98,36 +104,42 @@ dependencies:
|
|
98
104
|
name: thor
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
100
106
|
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 0.19.4
|
104
107
|
- - "~>"
|
105
108
|
- !ruby/object:Gem::Version
|
106
109
|
version: '0.20'
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 0.19.4
|
107
113
|
type: :development
|
108
114
|
prerelease: false
|
109
115
|
version_requirements: !ruby/object:Gem::Requirement
|
110
116
|
requirements:
|
111
|
-
- - ">="
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
version: 0.19.4
|
114
117
|
- - "~>"
|
115
118
|
- !ruby/object:Gem::Version
|
116
119
|
version: '0.20'
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 0.19.4
|
117
123
|
- !ruby/object:Gem::Dependency
|
118
124
|
name: sleeping_king_studios-tasks
|
119
125
|
requirement: !ruby/object:Gem::Requirement
|
120
126
|
requirements:
|
121
127
|
- - "~>"
|
122
128
|
- !ruby/object:Gem::Version
|
123
|
-
version: '0.
|
129
|
+
version: '0.4'
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 0.4.1
|
124
133
|
type: :development
|
125
134
|
prerelease: false
|
126
135
|
version_requirements: !ruby/object:Gem::Requirement
|
127
136
|
requirements:
|
128
137
|
- - "~>"
|
129
138
|
- !ruby/object:Gem::Version
|
130
|
-
version: '0.
|
139
|
+
version: '0.4'
|
140
|
+
- - ">="
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 0.4.1
|
131
143
|
- !ruby/object:Gem::Dependency
|
132
144
|
name: aruba
|
133
145
|
requirement: !ruby/object:Gem::Requirement
|
@@ -165,7 +177,7 @@ dependencies:
|
|
165
177
|
version: '3.0'
|
166
178
|
- - "<"
|
167
179
|
- !ruby/object:Gem::Version
|
168
|
-
version: '
|
180
|
+
version: '7.0'
|
169
181
|
type: :development
|
170
182
|
prerelease: false
|
171
183
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -175,7 +187,7 @@ dependencies:
|
|
175
187
|
version: '3.0'
|
176
188
|
- - "<"
|
177
189
|
- !ruby/object:Gem::Version
|
178
|
-
version: '
|
190
|
+
version: '7.0'
|
179
191
|
description: |2
|
180
192
|
A collection of RSpec patches and custom matchers. The features can be
|
181
193
|
included individually or by category. For more information, check out the
|
@@ -187,6 +199,7 @@ extensions: []
|
|
187
199
|
extra_rdoc_files: []
|
188
200
|
files:
|
189
201
|
- CHANGELOG.md
|
202
|
+
- CODE_OF_CONDUCT.md
|
190
203
|
- DEVELOPMENT.md
|
191
204
|
- LICENSE
|
192
205
|
- README.md
|
@@ -196,11 +209,13 @@ files:
|
|
196
209
|
- lib/rspec/sleeping_king_studios/concerns/all.rb
|
197
210
|
- lib/rspec/sleeping_king_studios/concerns/example_constants.rb
|
198
211
|
- lib/rspec/sleeping_king_studios/concerns/focus_examples.rb
|
212
|
+
- lib/rspec/sleeping_king_studios/concerns/include_contract.rb
|
199
213
|
- lib/rspec/sleeping_king_studios/concerns/shared_example_group.rb
|
200
214
|
- lib/rspec/sleeping_king_studios/concerns/toolbelt.rb
|
201
215
|
- lib/rspec/sleeping_king_studios/concerns/wrap_env.rb
|
202
216
|
- lib/rspec/sleeping_king_studios/concerns/wrap_examples.rb
|
203
217
|
- lib/rspec/sleeping_king_studios/configuration.rb
|
218
|
+
- lib/rspec/sleeping_king_studios/contract.rb
|
204
219
|
- lib/rspec/sleeping_king_studios/examples.rb
|
205
220
|
- lib/rspec/sleeping_king_studios/examples/all.rb
|
206
221
|
- lib/rspec/sleeping_king_studios/examples/property_examples.rb
|
@@ -241,6 +256,8 @@ files:
|
|
241
256
|
- lib/rspec/sleeping_king_studios/matchers/core/deep_matcher.rb
|
242
257
|
- lib/rspec/sleeping_king_studios/matchers/core/delegate_method.rb
|
243
258
|
- lib/rspec/sleeping_king_studios/matchers/core/delegate_method_matcher.rb
|
259
|
+
- lib/rspec/sleeping_king_studios/matchers/core/have_aliased_method.rb
|
260
|
+
- lib/rspec/sleeping_king_studios/matchers/core/have_aliased_method_matcher.rb
|
244
261
|
- lib/rspec/sleeping_king_studios/matchers/core/have_changed.rb
|
245
262
|
- lib/rspec/sleeping_king_studios/matchers/core/have_changed_matcher.rb
|
246
263
|
- lib/rspec/sleeping_king_studios/matchers/core/have_constant.rb
|
@@ -265,7 +282,9 @@ files:
|
|
265
282
|
homepage: http://sleepingkingstudios.com
|
266
283
|
licenses:
|
267
284
|
- MIT
|
268
|
-
metadata:
|
285
|
+
metadata:
|
286
|
+
bug_tracker_uri: https://github.com/sleepingkingstudios/rspec-sleeping_king_studios/issues
|
287
|
+
source_code_uri: https://github.com/sleepingkingstudios/rspec-sleeping_king_studios
|
269
288
|
post_install_message:
|
270
289
|
rdoc_options: []
|
271
290
|
require_paths:
|
@@ -281,7 +300,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
281
300
|
- !ruby/object:Gem::Version
|
282
301
|
version: '0'
|
283
302
|
requirements: []
|
284
|
-
rubygems_version: 3.
|
303
|
+
rubygems_version: 3.1.2
|
285
304
|
signing_key:
|
286
305
|
specification_version: 4
|
287
306
|
summary: A collection of RSpec patches and custom matchers.
|