rspec-sleeping_king_studios 2.6.0 → 2.7.0.rc.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
@@ -11,31 +11,45 @@ module RSpec
11
11
  # Major version.
12
12
  MAJOR = 2
13
13
  # Minor version.
14
- MINOR = 6
14
+ MINOR = 7
15
15
  # Patch version.
16
16
  PATCH = 0
17
17
  # Prerelease version.
18
- PRERELEASE = nil
18
+ PRERELEASE = :rc
19
19
  # Build metadata.
20
- BUILD = nil
20
+ BUILD = 0
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.6.0
4
+ version: 2.7.0.rc.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: 2021-03-13 00:00:00.000000000 Z
11
+ date: 2021-12-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashdiff
@@ -199,6 +199,7 @@ extensions: []
199
199
  extra_rdoc_files: []
200
200
  files:
201
201
  - CHANGELOG.md
202
+ - CODE_OF_CONDUCT.md
202
203
  - DEVELOPMENT.md
203
204
  - LICENSE
204
205
  - README.md
@@ -208,11 +209,13 @@ files:
208
209
  - lib/rspec/sleeping_king_studios/concerns/all.rb
209
210
  - lib/rspec/sleeping_king_studios/concerns/example_constants.rb
210
211
  - lib/rspec/sleeping_king_studios/concerns/focus_examples.rb
212
+ - lib/rspec/sleeping_king_studios/concerns/include_contract.rb
211
213
  - lib/rspec/sleeping_king_studios/concerns/shared_example_group.rb
212
214
  - lib/rspec/sleeping_king_studios/concerns/toolbelt.rb
213
215
  - lib/rspec/sleeping_king_studios/concerns/wrap_env.rb
214
216
  - lib/rspec/sleeping_king_studios/concerns/wrap_examples.rb
215
217
  - lib/rspec/sleeping_king_studios/configuration.rb
218
+ - lib/rspec/sleeping_king_studios/contract.rb
216
219
  - lib/rspec/sleeping_king_studios/examples.rb
217
220
  - lib/rspec/sleeping_king_studios/examples/all.rb
218
221
  - lib/rspec/sleeping_king_studios/examples/property_examples.rb
@@ -253,6 +256,8 @@ files:
253
256
  - lib/rspec/sleeping_king_studios/matchers/core/deep_matcher.rb
254
257
  - lib/rspec/sleeping_king_studios/matchers/core/delegate_method.rb
255
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
256
261
  - lib/rspec/sleeping_king_studios/matchers/core/have_changed.rb
257
262
  - lib/rspec/sleeping_king_studios/matchers/core/have_changed_matcher.rb
258
263
  - lib/rspec/sleeping_king_studios/matchers/core/have_constant.rb
@@ -291,9 +296,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
291
296
  version: '0'
292
297
  required_rubygems_version: !ruby/object:Gem::Requirement
293
298
  requirements:
294
- - - ">="
299
+ - - ">"
295
300
  - !ruby/object:Gem::Version
296
- version: '0'
301
+ version: 1.3.1
297
302
  requirements: []
298
303
  rubygems_version: 3.1.2
299
304
  signing_key: