prolog_minitest_matchers 0.1.0 → 0.2.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/.rubocop.yml +4 -0
- data/Rakefile +38 -1
- data/config.reek +8 -0
- data/lib/prolog_minitest_matchers/matchers/asserters/assert_requires_initialize_parameter.rb +21 -11
- data/lib/prolog_minitest_matchers/matchers/asserters/assert_requires_static_call_param.rb +74 -0
- data/lib/prolog_minitest_matchers/matchers/requires_static_call_param.rb +22 -0
- data/lib/prolog_minitest_matchers/version.rb +2 -1
- data/lib/prolog_minitest_matchers.rb +2 -1
- data/lib/tasks/prolog_flog_task.rb +12 -0
- data/prolog_minitest_matchers.gemspec +6 -0
- metadata +107 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3432250c36aada7c4efaf78622e1c6f538ce804d
|
|
4
|
+
data.tar.gz: d312f4b46721223e8796c7b8a08b714335719fd3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9c5dcf648b266d338d43023504adcf61004828cca72b101deef1a373570cf010f7ebcf8a640c59fa7e3068713a06f5cdc9f86329648a23950df792bc7ff0e2b6
|
|
7
|
+
data.tar.gz: 09a985e617ed970d21f272838491612672ab8f6c59e7b2f700d8f4866ddd1ddb48b02deb54e5ce0bcce34522084ca4981b91d68d9f9e24cb98edb058fd3118e3
|
data/.rubocop.yml
ADDED
data/Rakefile
CHANGED
|
@@ -1,10 +1,47 @@
|
|
|
1
|
+
|
|
1
2
|
require "bundler/gem_tasks"
|
|
2
3
|
require "rake/testtask"
|
|
3
4
|
|
|
5
|
+
require 'rake/tasklib'
|
|
6
|
+
require 'flay'
|
|
7
|
+
require 'flay_task'
|
|
8
|
+
require 'tasks/prolog_flog_task'
|
|
9
|
+
require 'reek/rake/task'
|
|
10
|
+
require 'rubocop/rake_task'
|
|
11
|
+
|
|
4
12
|
Rake::TestTask.new(:test) do |t|
|
|
5
13
|
t.libs << "test"
|
|
6
14
|
t.libs << "lib"
|
|
7
15
|
t.test_files = FileList['test/**/*_test.rb']
|
|
8
16
|
end
|
|
9
17
|
|
|
10
|
-
|
|
18
|
+
RuboCop::RakeTask.new(:rubocop) do |task|
|
|
19
|
+
task.patterns = [
|
|
20
|
+
'lib/**/*.rb',
|
|
21
|
+
'test/**/*.rb'
|
|
22
|
+
]
|
|
23
|
+
task.formatters = ['simple', 'd']
|
|
24
|
+
task.fail_on_error = true
|
|
25
|
+
task.options << '--display-cop-names'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
Reek::Rake::Task.new do |t|
|
|
29
|
+
t.config_file = 'config.reek'
|
|
30
|
+
t.source_files = 'lib/**/*.rb'
|
|
31
|
+
t.reek_opts = '--sort-by smelliness -s'
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
FlayTask.new do |t|
|
|
35
|
+
t.verbose = true
|
|
36
|
+
t.dirs = %w(lib)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
FlogTask.new do |t|
|
|
40
|
+
t.verbose = true
|
|
41
|
+
t.threshold = 200 # default is 200
|
|
42
|
+
t.methods_only = true
|
|
43
|
+
t.dirs = %w(lib)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
task(:default).clear
|
|
47
|
+
task default: [:test, :rubocop, :flay, :flog, :reek]
|
data/config.reek
ADDED
data/lib/prolog_minitest_matchers/matchers/asserters/assert_requires_initialize_parameter.rb
CHANGED
|
@@ -25,34 +25,44 @@ module MiniTest
|
|
|
25
25
|
errors[:expected]&.message == message
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
+
def filtered_params
|
|
29
|
+
full_params.dup.reject { |source_key, _| source_key == param_key }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Running Reek will complain about a :reek:ControlParameter. Protocol is.
|
|
28
33
|
def initial_message_from(message, param_key)
|
|
29
34
|
message || "missing keyword: #{param_key}"
|
|
30
35
|
end
|
|
31
36
|
|
|
32
37
|
def save_and_try_to_init
|
|
33
38
|
verify_param_in_list
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
save_and_delete_param_before { |params| try_to_init params }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def save_and_delete_param_before
|
|
43
|
+
yield filtered_params
|
|
39
44
|
end
|
|
40
45
|
|
|
41
|
-
def try_to_init
|
|
46
|
+
def try_to_init(params)
|
|
42
47
|
expected_error = nil
|
|
43
48
|
begin
|
|
44
|
-
|
|
49
|
+
klass.new params
|
|
45
50
|
rescue ArgumentError => error
|
|
46
51
|
expected_error = error
|
|
47
|
-
rescue StandardError => error
|
|
48
|
-
ap [:matcher_48, 'Unexpected error', error]
|
|
49
52
|
end
|
|
50
53
|
{ expected: expected_error }
|
|
51
54
|
end
|
|
52
55
|
|
|
53
56
|
def verify_param_in_list
|
|
54
|
-
|
|
55
|
-
|
|
57
|
+
raise KeyError, no_param_message unless param_in_full_list?
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def no_param_message
|
|
61
|
+
"No key :#{param_key} in #{full_params}!"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def param_in_full_list?
|
|
65
|
+
full_params.key? param_key
|
|
56
66
|
end
|
|
57
67
|
end # class MiniTest::Assertions::AssertRequiresInitializeParameter
|
|
58
68
|
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module MiniTest
|
|
4
|
+
# Adding custom assertions to make specs easier to read
|
|
5
|
+
module Assertions
|
|
6
|
+
# Actual test logic for `#assert_requires_static_call_paramr`.
|
|
7
|
+
class AssertRequiresStaticCallParam
|
|
8
|
+
def initialize(klass, full_params, param_key, message)
|
|
9
|
+
@klass = klass
|
|
10
|
+
@full_params = full_params
|
|
11
|
+
@param_key = param_key
|
|
12
|
+
@message = initial_message_from(message, param_key)
|
|
13
|
+
self
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def call(assert)
|
|
17
|
+
verify_param_in_list(assert)
|
|
18
|
+
assert.call(errors_as_expected(save_and_try_to_call), message)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
attr_reader :full_params, :klass, :message, :param_key
|
|
24
|
+
|
|
25
|
+
def errors_as_expected(errors)
|
|
26
|
+
errors[:expected]&.message == message
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def filtered_params
|
|
30
|
+
full_params.dup.reject { |source_key, _| source_key == param_key }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Running Reek will complain about a :reek:ControlParameter. Protocol is.
|
|
34
|
+
def initial_message_from(message, param_key)
|
|
35
|
+
message || "missing keyword: #{param_key}"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def key_not_found_message
|
|
39
|
+
"Key :#{param_key} not found in #{full_params}!"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def save_and_try_to_call
|
|
43
|
+
save_and_delete_param_before { |params| try_to_call params }
|
|
44
|
+
# saved_item = full_params[param_key]
|
|
45
|
+
# full_params.delete param_key
|
|
46
|
+
# errors = try_to_call
|
|
47
|
+
# full_params[param_key] = saved_item
|
|
48
|
+
# errors
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def try_to_call(params)
|
|
52
|
+
expected_error = nil
|
|
53
|
+
begin
|
|
54
|
+
klass.call params
|
|
55
|
+
rescue ArgumentError => error
|
|
56
|
+
expected_error = error
|
|
57
|
+
end
|
|
58
|
+
{ expected: expected_error }
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def save_and_delete_param_before
|
|
62
|
+
yield filtered_params
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def verify_param_in_list(assert)
|
|
66
|
+
assert.call(param_in_list?, key_not_found_message)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def param_in_list?
|
|
70
|
+
full_params.key?(param_key)
|
|
71
|
+
end
|
|
72
|
+
end # class MiniTest::Assertions::AssertRequiresStaticCallParam
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'minitest/spec'
|
|
4
|
+
|
|
5
|
+
require_relative './asserters/assert_requires_static_call_param.rb'
|
|
6
|
+
|
|
7
|
+
module MiniTest
|
|
8
|
+
# Adding custom assertions to make specs easier to read
|
|
9
|
+
module Assertions
|
|
10
|
+
def assert_requires_static_call_param(klass, full_params, param_key,
|
|
11
|
+
message = nil)
|
|
12
|
+
AssertRequiresStaticCallParam.new(klass, full_params, param_key, message)
|
|
13
|
+
.call(method(:assert))
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Make it available to MiniTest::Spec
|
|
18
|
+
module Expectations
|
|
19
|
+
infect_an_assertion :assert_requires_static_call_param,
|
|
20
|
+
:must_require_static_call_param, :reverse
|
|
21
|
+
end
|
|
22
|
+
end # module MiniTest
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
require 'prolog_minitest_matchers/version'
|
|
4
4
|
require 'prolog_minitest_matchers/matchers/requires_initialize_parameter'
|
|
5
5
|
|
|
6
|
+
# Module to satisfy Gem requirements; nothing inside but version-spec constant.
|
|
6
7
|
module PrologMinitestMatchers
|
|
7
|
-
# Your code
|
|
8
|
+
# Your code would go here if it wasn't required to go elsewhere...
|
|
8
9
|
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'rake/tasklib'
|
|
4
|
+
require 'flog'
|
|
5
|
+
require 'flog_task'
|
|
6
|
+
|
|
7
|
+
# Redefinition of standard task's Rake invocation. Because we don't like
|
|
8
|
+
# inconsistency in option settings.
|
|
9
|
+
class FlogTask < Rake::TaskLib
|
|
10
|
+
# Reek bitches that this is a :reek:Attribute (writable). That's the *point*.
|
|
11
|
+
attr_accessor :methods_only
|
|
12
|
+
end
|
|
@@ -30,4 +30,10 @@ Gem::Specification.new do |spec|
|
|
|
30
30
|
spec.add_development_dependency "bundler", "~> 1.12", ">= 1.12.5"
|
|
31
31
|
spec.add_development_dependency "rake", "~> 11.2", ">= 11.2.2"
|
|
32
32
|
spec.add_development_dependency "minitest", "~> 5.9", ">= 5.9.0"
|
|
33
|
+
|
|
34
|
+
spec.add_development_dependency "flay", "~> 2.8", ">= 2.8.0"
|
|
35
|
+
spec.add_development_dependency "flog", "~> 4.4", ">= 4.4.0"
|
|
36
|
+
spec.add_development_dependency "reek", "~> 4.2", ">= 4.2.1"
|
|
37
|
+
spec.add_development_dependency "rubocop", "~> 0.42", ">= 0.42.0"
|
|
38
|
+
spec.add_development_dependency "pry-byebug", "~> 3.4", ">= 3.4.0"
|
|
33
39
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: prolog_minitest_matchers
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jeff Dickey
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-07-
|
|
11
|
+
date: 2016-07-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -70,6 +70,106 @@ dependencies:
|
|
|
70
70
|
- - ">="
|
|
71
71
|
- !ruby/object:Gem::Version
|
|
72
72
|
version: 5.9.0
|
|
73
|
+
- !ruby/object:Gem::Dependency
|
|
74
|
+
name: flay
|
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
|
76
|
+
requirements:
|
|
77
|
+
- - "~>"
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: '2.8'
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: 2.8.0
|
|
83
|
+
type: :development
|
|
84
|
+
prerelease: false
|
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '2.8'
|
|
90
|
+
- - ">="
|
|
91
|
+
- !ruby/object:Gem::Version
|
|
92
|
+
version: 2.8.0
|
|
93
|
+
- !ruby/object:Gem::Dependency
|
|
94
|
+
name: flog
|
|
95
|
+
requirement: !ruby/object:Gem::Requirement
|
|
96
|
+
requirements:
|
|
97
|
+
- - "~>"
|
|
98
|
+
- !ruby/object:Gem::Version
|
|
99
|
+
version: '4.4'
|
|
100
|
+
- - ">="
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: 4.4.0
|
|
103
|
+
type: :development
|
|
104
|
+
prerelease: false
|
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
106
|
+
requirements:
|
|
107
|
+
- - "~>"
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '4.4'
|
|
110
|
+
- - ">="
|
|
111
|
+
- !ruby/object:Gem::Version
|
|
112
|
+
version: 4.4.0
|
|
113
|
+
- !ruby/object:Gem::Dependency
|
|
114
|
+
name: reek
|
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
|
116
|
+
requirements:
|
|
117
|
+
- - "~>"
|
|
118
|
+
- !ruby/object:Gem::Version
|
|
119
|
+
version: '4.2'
|
|
120
|
+
- - ">="
|
|
121
|
+
- !ruby/object:Gem::Version
|
|
122
|
+
version: 4.2.1
|
|
123
|
+
type: :development
|
|
124
|
+
prerelease: false
|
|
125
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
126
|
+
requirements:
|
|
127
|
+
- - "~>"
|
|
128
|
+
- !ruby/object:Gem::Version
|
|
129
|
+
version: '4.2'
|
|
130
|
+
- - ">="
|
|
131
|
+
- !ruby/object:Gem::Version
|
|
132
|
+
version: 4.2.1
|
|
133
|
+
- !ruby/object:Gem::Dependency
|
|
134
|
+
name: rubocop
|
|
135
|
+
requirement: !ruby/object:Gem::Requirement
|
|
136
|
+
requirements:
|
|
137
|
+
- - "~>"
|
|
138
|
+
- !ruby/object:Gem::Version
|
|
139
|
+
version: '0.42'
|
|
140
|
+
- - ">="
|
|
141
|
+
- !ruby/object:Gem::Version
|
|
142
|
+
version: 0.42.0
|
|
143
|
+
type: :development
|
|
144
|
+
prerelease: false
|
|
145
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
146
|
+
requirements:
|
|
147
|
+
- - "~>"
|
|
148
|
+
- !ruby/object:Gem::Version
|
|
149
|
+
version: '0.42'
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: 0.42.0
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: pry-byebug
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - "~>"
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '3.4'
|
|
160
|
+
- - ">="
|
|
161
|
+
- !ruby/object:Gem::Version
|
|
162
|
+
version: 3.4.0
|
|
163
|
+
type: :development
|
|
164
|
+
prerelease: false
|
|
165
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
166
|
+
requirements:
|
|
167
|
+
- - "~>"
|
|
168
|
+
- !ruby/object:Gem::Version
|
|
169
|
+
version: '3.4'
|
|
170
|
+
- - ">="
|
|
171
|
+
- !ruby/object:Gem::Version
|
|
172
|
+
version: 3.4.0
|
|
73
173
|
description:
|
|
74
174
|
email:
|
|
75
175
|
- jdickey@seven-sigma.com
|
|
@@ -78,16 +178,21 @@ extensions: []
|
|
|
78
178
|
extra_rdoc_files: []
|
|
79
179
|
files:
|
|
80
180
|
- ".gitignore"
|
|
181
|
+
- ".rubocop.yml"
|
|
81
182
|
- ".travis.yml"
|
|
82
183
|
- CODE_OF_CONDUCT.md
|
|
83
184
|
- Gemfile
|
|
84
185
|
- LICENSE.txt
|
|
85
186
|
- README.md
|
|
86
187
|
- Rakefile
|
|
188
|
+
- config.reek
|
|
87
189
|
- lib/prolog_minitest_matchers.rb
|
|
88
190
|
- lib/prolog_minitest_matchers/matchers/asserters/assert_requires_initialize_parameter.rb
|
|
191
|
+
- lib/prolog_minitest_matchers/matchers/asserters/assert_requires_static_call_param.rb
|
|
89
192
|
- lib/prolog_minitest_matchers/matchers/requires_initialize_parameter.rb
|
|
193
|
+
- lib/prolog_minitest_matchers/matchers/requires_static_call_param.rb
|
|
90
194
|
- lib/prolog_minitest_matchers/version.rb
|
|
195
|
+
- lib/tasks/prolog_flog_task.rb
|
|
91
196
|
- prolog_minitest_matchers.gemspec
|
|
92
197
|
homepage: https://github.com/TheProlog/prolog_minitest_matchers
|
|
93
198
|
licenses:
|