prolog_minitest_matchers 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|