ergomentum_rspec 1.3.0 → 2.0.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/Gemfile +1 -0
- data/ergomentum_rspec.gemspec +12 -8
- data/lib/ergomentum_rspec/helpers/env_var_mock_service.rb +37 -0
- data/lib/ergomentum_rspec/helpers/environment.rb +6 -2
- data/lib/ergomentum_rspec/matchers/active_model/be_invalid_for.rb +1 -1
- data/lib/ergomentum_rspec/matchers/array/be_unique.rb +1 -1
- data/lib/ergomentum_rspec/matchers/performance/allocate_objects.rb +9 -9
- data/lib/ergomentum_rspec/version.rb +1 -1
- data/lib/ergomentum_rspec.rb +1 -0
- metadata +44 -68
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f98d89b3ed280df61c307f9f32eeac90167fb9ac1d3a5c37e48dce72aef9669b
|
4
|
+
data.tar.gz: 1d9cde32a984501e0bfcfc256db6900b0271150b6beb17a09be88a727ea683ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20774aa38bc6988f7bb5c572ccb88585fb4ade4579573e3d6a2a26fa9583a5c2eb85638a518b980b4e8d74c0b7a58c8f79a3981bc9caee4ac733ba9f5bbdf47d
|
7
|
+
data.tar.gz: 7998a2496e9c8f2acd1959269697d7cf69189c2c33c781a563a0178041b4b4dd6d1b661ed51d7ba928df3c571d331270804ac2c299da0183450897debb71bf5c
|
data/Gemfile
CHANGED
data/ergomentum_rspec.gemspec
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require_relative "lib/ergomentum_rspec/version"
|
3
4
|
|
4
5
|
Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
|
@@ -17,16 +18,19 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
|
|
17
18
|
spec.require_paths = ["lib"]
|
18
19
|
spec.required_ruby_version = ">= 3.0.1"
|
19
20
|
|
20
|
-
spec.
|
21
|
-
spec.
|
22
|
-
spec.
|
23
|
-
|
24
|
-
spec.add_development_dependency "rubocop-performance", "~> 1.9"
|
25
|
-
spec.add_development_dependency "rubocop-rake"
|
26
|
-
spec.add_development_dependency "simplecov", "~> 0.21.2"
|
27
|
-
spec.add_development_dependency "test-prof", "~> 1.0.2"
|
21
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
22
|
+
spec.metadata["source_code_uri"] = "https://github.com/ergomentum/ergomentum_rspec/"
|
23
|
+
spec.metadata["changelog_uri"] = "https://github.com/ergomentum/ergomentum_rspec/blob/main/CHANGELOG.md"
|
24
|
+
|
28
25
|
spec.add_dependency "activemodel", "~> 6.0"
|
29
26
|
spec.add_dependency "activesupport", "~> 6.0"
|
30
27
|
spec.add_dependency "allocation_stats", "~> 0.1.5"
|
31
28
|
spec.add_dependency "rspec", "~> 3.9"
|
29
|
+
|
30
|
+
spec.add_development_dependency "byebug", "~> 11.1.3"
|
31
|
+
spec.add_development_dependency "ergomentum_rubocop", "~> 0.7.0"
|
32
|
+
spec.add_development_dependency "rake", "~> 13.0.1"
|
33
|
+
spec.add_development_dependency "rspec_junit_formatter", "~> 0.5.1"
|
34
|
+
spec.add_development_dependency "simplecov", "~> 0.21.2"
|
35
|
+
spec.add_development_dependency "test-prof", "~> 1.0.2"
|
32
36
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ErgomentumRspec
|
4
|
+
module Helpers
|
5
|
+
class EnvVarMockService
|
6
|
+
def self.instance
|
7
|
+
@instance ||= new
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@original_env_values = {}
|
12
|
+
end
|
13
|
+
|
14
|
+
def mock_environment_variables(env_hash)
|
15
|
+
env_hash.each do |key, value|
|
16
|
+
remember_original_env_value(key)
|
17
|
+
ENV[key] = value
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def restore_original_env_vars
|
22
|
+
@original_env_values.each do |key, value|
|
23
|
+
ENV[key] = value
|
24
|
+
end
|
25
|
+
@original_env_values = {}
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def remember_original_env_value(key)
|
31
|
+
return if @original_env_values.key?(key)
|
32
|
+
|
33
|
+
@original_env_values[key] = ENV[key]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -3,13 +3,17 @@
|
|
3
3
|
module ErgomentumRspec
|
4
4
|
module Helpers
|
5
5
|
module Environment
|
6
|
-
def mock_environment_variables(
|
7
|
-
stub_const("ENV", ENV.to_h.merge(
|
6
|
+
def mock_environment_variables(env_hash)
|
7
|
+
# Using stub_const("ENV", ENV.to_h.merge(env_hash)) as simple solution does not work when using cuprite
|
8
|
+
# in feature specs. Something seems to rely on the concrete implementation of ENV.
|
9
|
+
# When we stub the const ENV with a Hash in such feature specs the whole ruby environment crashes.
|
10
|
+
EnvVarMockService.instance.mock_environment_variables(env_hash)
|
8
11
|
end
|
9
12
|
end
|
10
13
|
|
11
14
|
RSpec.configure do |config|
|
12
15
|
config.include Environment
|
16
|
+
config.after { EnvVarMockService.instance.restore_original_env_vars }
|
13
17
|
end
|
14
18
|
end
|
15
19
|
end
|
@@ -34,7 +34,7 @@ module ErgomentumRspec
|
|
34
34
|
true
|
35
35
|
else
|
36
36
|
@message = "expecting error message '#{@expected_error_message}' for invalid value '#{@value}' but got "\
|
37
|
-
|
37
|
+
"'#{model.errors.messages[:some_attribute].join(', ')}'"
|
38
38
|
false
|
39
39
|
end
|
40
40
|
end
|
@@ -32,35 +32,35 @@ module ErgomentumRspec
|
|
32
32
|
|
33
33
|
def exactly(expected)
|
34
34
|
@expected = expected
|
35
|
-
@compare =
|
35
|
+
@compare = proc { @trace.new_allocations.size == @expected }
|
36
36
|
@message = ""
|
37
37
|
self
|
38
38
|
end
|
39
39
|
|
40
40
|
def less_than(expected)
|
41
41
|
@expected = expected
|
42
|
-
@compare =
|
42
|
+
@compare = proc { @trace.new_allocations.size < @expected }
|
43
43
|
@message = "less than "
|
44
44
|
self
|
45
45
|
end
|
46
46
|
|
47
47
|
def more_than(expected)
|
48
48
|
@expected = expected
|
49
|
-
@compare =
|
49
|
+
@compare = proc { @trace.new_allocations.size > @expected }
|
50
50
|
@message = "more than "
|
51
51
|
self
|
52
52
|
end
|
53
53
|
|
54
54
|
def max(expected)
|
55
55
|
@expected = expected
|
56
|
-
@compare =
|
56
|
+
@compare = proc { @trace.new_allocations.size <= @expected }
|
57
57
|
@message = "max "
|
58
58
|
self
|
59
59
|
end
|
60
60
|
|
61
61
|
def min(expected)
|
62
62
|
@expected = expected
|
63
|
-
@compare =
|
63
|
+
@compare = proc { @trace.new_allocations.size >= @expected }
|
64
64
|
@message = "min "
|
65
65
|
self
|
66
66
|
end
|
@@ -75,14 +75,14 @@ module ErgomentumRspec
|
|
75
75
|
|
76
76
|
def failure_message
|
77
77
|
"expected #{@message}#{@expected} objects to be allocated; "\
|
78
|
-
|
79
|
-
|
78
|
+
"got #{@trace.new_allocations.size}:\n\n"\
|
79
|
+
"#{@trace.allocations(alias_paths: true).group_by(:sourcefile, :sourceline, :class).to_text}"
|
80
80
|
end
|
81
81
|
|
82
82
|
def failure_message_when_negated
|
83
83
|
"expected not #{@message}#{@expected} objects to be allocated; "\
|
84
|
-
|
85
|
-
|
84
|
+
"got #{@trace.new_allocations.size}:\n\n"\
|
85
|
+
"#{@trace.allocations(alias_paths: true).group_by(:sourcefile, :sourceline, :class).to_text}"
|
86
86
|
end
|
87
87
|
|
88
88
|
def description
|
data/lib/ergomentum_rspec.rb
CHANGED
@@ -6,6 +6,7 @@ require "active_support/inflector"
|
|
6
6
|
require "rspec"
|
7
7
|
require "active_model"
|
8
8
|
require_relative "ergomentum_rspec/version"
|
9
|
+
require_relative "ergomentum_rspec/helpers/env_var_mock_service"
|
9
10
|
require_relative "ergomentum_rspec/helpers/environment"
|
10
11
|
require_relative "ergomentum_rspec/helpers/fixture"
|
11
12
|
require_relative "ergomentum_rspec/matchers/active_model"
|
metadata
CHANGED
@@ -1,183 +1,155 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ergomentum_rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ergomentum
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activemodel
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
type: :
|
19
|
+
version: '6.0'
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '6.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: activesupport
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
type: :
|
33
|
+
version: '6.0'
|
34
|
+
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '6.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: allocation_stats
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
48
|
-
type: :
|
47
|
+
version: 0.1.5
|
48
|
+
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.1.5
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
62
|
-
type: :
|
61
|
+
version: '3.9'
|
62
|
+
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '3.9'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: byebug
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 11.1.3
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rubocop-rake
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
82
|
+
version: 11.1.3
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
84
|
+
name: ergomentum_rubocop
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
87
|
- - "~>"
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
89
|
+
version: 0.7.0
|
104
90
|
type: :development
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
94
|
- - "~>"
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
96
|
+
version: 0.7.0
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
98
|
+
name: rake
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
103
|
+
version: 13.0.1
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
108
|
- - "~>"
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: activemodel
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '6.0'
|
132
|
-
type: :runtime
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '6.0'
|
110
|
+
version: 13.0.1
|
139
111
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
112
|
+
name: rspec_junit_formatter
|
141
113
|
requirement: !ruby/object:Gem::Requirement
|
142
114
|
requirements:
|
143
115
|
- - "~>"
|
144
116
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
146
|
-
type: :
|
117
|
+
version: 0.5.1
|
118
|
+
type: :development
|
147
119
|
prerelease: false
|
148
120
|
version_requirements: !ruby/object:Gem::Requirement
|
149
121
|
requirements:
|
150
122
|
- - "~>"
|
151
123
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
124
|
+
version: 0.5.1
|
153
125
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
126
|
+
name: simplecov
|
155
127
|
requirement: !ruby/object:Gem::Requirement
|
156
128
|
requirements:
|
157
129
|
- - "~>"
|
158
130
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.
|
160
|
-
type: :
|
131
|
+
version: 0.21.2
|
132
|
+
type: :development
|
161
133
|
prerelease: false
|
162
134
|
version_requirements: !ruby/object:Gem::Requirement
|
163
135
|
requirements:
|
164
136
|
- - "~>"
|
165
137
|
- !ruby/object:Gem::Version
|
166
|
-
version: 0.
|
138
|
+
version: 0.21.2
|
167
139
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
140
|
+
name: test-prof
|
169
141
|
requirement: !ruby/object:Gem::Requirement
|
170
142
|
requirements:
|
171
143
|
- - "~>"
|
172
144
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
174
|
-
type: :
|
145
|
+
version: 1.0.2
|
146
|
+
type: :development
|
175
147
|
prerelease: false
|
176
148
|
version_requirements: !ruby/object:Gem::Requirement
|
177
149
|
requirements:
|
178
150
|
- - "~>"
|
179
151
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
152
|
+
version: 1.0.2
|
181
153
|
description: Regular used rspec matchers not found somewhere else.
|
182
154
|
email:
|
183
155
|
- info@ergomentum.de
|
@@ -191,6 +163,7 @@ files:
|
|
191
163
|
- bin/setup
|
192
164
|
- ergomentum_rspec.gemspec
|
193
165
|
- lib/ergomentum_rspec.rb
|
166
|
+
- lib/ergomentum_rspec/helpers/env_var_mock_service.rb
|
194
167
|
- lib/ergomentum_rspec/helpers/environment.rb
|
195
168
|
- lib/ergomentum_rspec/helpers/fixture.rb
|
196
169
|
- lib/ergomentum_rspec/matchers/active_model.rb
|
@@ -210,7 +183,10 @@ files:
|
|
210
183
|
homepage: https://www.ergomentum.de/
|
211
184
|
licenses:
|
212
185
|
- Nonstandard
|
213
|
-
metadata:
|
186
|
+
metadata:
|
187
|
+
homepage_uri: https://www.ergomentum.de/
|
188
|
+
source_code_uri: https://github.com/ergomentum/ergomentum_rspec/
|
189
|
+
changelog_uri: https://github.com/ergomentum/ergomentum_rspec/blob/main/CHANGELOG.md
|
214
190
|
post_install_message:
|
215
191
|
rdoc_options: []
|
216
192
|
require_paths:
|