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.
@@ -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
- # frozen_string_literals: true
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 = 5
14
+ MINOR = 7
15
15
  # Patch version.
16
- PATCH = 1
16
+ PATCH = 0
17
17
  # Prerelease version.
18
18
  PRERELEASE = nil
19
19
  # Build metadata.
20
20
  BUILD = nil
21
21
 
22
- # Generates the gem version string from the Version constants.
23
- #
24
- # Inlined here because dependencies may not be loaded when processing a
25
- # gemspec, which results in the user being unable to install the gem for
26
- # the first time.
27
- #
28
- # @see SleepingKingStudios::Tools::SemanticVersion#to_gem_version
29
- def self.to_gem_version
30
- str = "#{MAJOR}.#{MINOR}.#{PATCH}"
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
- prerelease = self.const_defined?(:PRERELEASE) ? PRERELEASE : nil
33
- str << ".#{prerelease}" unless prerelease.nil? || (prerelease.respond_to?(:empty?) && prerelease.empty?)
33
+ prerelease = value_of(:PRERELEASE)
34
+ str = "#{str}.#{prerelease}" if prerelease
34
35
 
35
- build = self.const_defined?(:BUILD) ? BUILD : nil
36
- str << ".#{build}" unless build.nil? || (build.respond_to?(:empty?) && build.empty?)
36
+ build = value_of(:BUILD)
37
+ str = "#{str}.#{build}" if build
37
38
 
38
- str
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.5.1
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: 2019-05-16 00:00:00.000000000 Z
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: '0.7'
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: '0.7'
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.1'
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.1'
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: '6.0'
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: '6.0'
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.0.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.