renuo-bin-check 0.2.1 → 1.0.0.beta1
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/CHANGELOG.md +14 -0
- data/README.md +111 -33
- data/bin/check +6 -6
- data/lib/renuo-bin-check.rb +1 -0
- data/lib/renuo_bin_check/bin_check.rb +59 -0
- data/lib/renuo_bin_check/default_scripts/default_rails.rb +6 -6
- data/lib/renuo_bin_check/default_scripts/default_scripts.rb +168 -0
- data/lib/renuo_bin_check/dsl_config.rb +47 -0
- data/lib/renuo_bin_check/master_thread.rb +1 -1
- data/lib/renuo_bin_check/servant_thread.rb +1 -1
- data/lib/renuo_bin_check/version.rb +1 -1
- data/spec/integration/bin_check_spec.rb +213 -0
- data/spec/renuo/bin-check/bin_check_spec.rb +67 -0
- data/spec/renuo/bin-check/default_scripts/default_scripts_spec.rb +191 -0
- data/spec/renuo/bin-check/dsl_config_spec.rb +39 -0
- data/spec/spec-files/test_script_sleep1 +1 -0
- data/spec/spec-files/test_script_sleep2 +2 -1
- metadata +15 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49b29562f89e957c52c206a952c8f84b3856915d
|
4
|
+
data.tar.gz: 0d97bdbf04362dce1aac65134a65b42cecbcb30a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d61ab0b4118331bfa28413ec370a9d4f2d9bb5af2cf17bae2f3cef757613a8ff9d153beeb027ab92c5635ac339486c7fde0bbe351bcb9ca86a3d2fe842c48c09
|
7
|
+
data.tar.gz: d6982dd518a622bd5c55a4e2ac73ce95c63553e21395a4fc7c34982e147a1f316343cfbe0bf9c6a0d62f52be1c052fdea4a29a0462a95632808082b217b0ec80
|
data/CHANGELOG.md
CHANGED
@@ -39,3 +39,17 @@ This was implemented as many Scripts use the Standard-Output for Outputs even if
|
|
39
39
|
|
40
40
|
* fixed typos
|
41
41
|
* refined readme
|
42
|
+
|
43
|
+
## Version 1.0.0.beta1
|
44
|
+
|
45
|
+
This release introduces a new fancy DSL (yeyy) which is easier to use and brings in much more possibilities
|
46
|
+
|
47
|
+
### New Features
|
48
|
+
|
49
|
+
* New DSL is implemented (old one still works for now, but the following features only work with the new one.)
|
50
|
+
|
51
|
+
* Common Configuration for multiple checks
|
52
|
+
|
53
|
+
* Defaults are available and can be used
|
54
|
+
|
55
|
+
* Possibility to exclude specific checks of a default
|
data/README.md
CHANGED
@@ -11,27 +11,55 @@ For faster runtime it makes use of caching and parallel execution.
|
|
11
11
|
Add renuo-bin-check to your Gemfile:
|
12
12
|
|
13
13
|
```rb
|
14
|
-
gem 'renuo-bin-check'
|
14
|
+
gem 'renuo-bin-check', group: :bin_check
|
15
15
|
```
|
16
16
|
|
17
17
|
Create a file at any place you want. Usually it would be called `bin/check though.
|
18
|
-
You can now configure your
|
18
|
+
You can now configure your checks like that:
|
19
19
|
|
20
20
|
```rb
|
21
|
-
require
|
21
|
+
#require renuo_bin_check in your file
|
22
|
+
require 'bundler/setup'
|
23
|
+
Bundler.require(:bin_check)
|
24
|
+
|
25
|
+
# run bin-check with rails-defaults
|
26
|
+
BinCheck.run do
|
27
|
+
#add a new check
|
28
|
+
<name-of-check> do
|
29
|
+
command "<a one line command or a path to a script>"
|
30
|
+
files ['<path-to-file-1>', '<path-to-file-2>']
|
31
|
+
reversed_exit <true or false>
|
32
|
+
success_message '<output to display if script succeeds>'
|
33
|
+
error_message '<output to display if script fails>'
|
34
|
+
end
|
35
|
+
|
36
|
+
#exclude a default check
|
37
|
+
exclude :<name-of-default-check>
|
38
|
+
end
|
22
39
|
|
23
|
-
|
40
|
+
```
|
24
41
|
|
25
|
-
|
26
|
-
bin_check.check do |config|
|
27
|
-
config.command "<a one line command or a path to a script>"
|
28
|
-
config.name "<name-of-script>"
|
29
|
-
config.files ['<path-to-file-1>', '<path-to-file-2>']
|
30
|
-
config.reversed_exit <true or false>
|
31
|
-
end
|
42
|
+
It is also possible to have common configurations and to not run the rails-defaults:
|
32
43
|
|
33
|
-
|
34
|
-
|
44
|
+
```rb
|
45
|
+
#run bin without defaults
|
46
|
+
BinCheck.run :no_defaults do
|
47
|
+
# define common settings for all checks in the block
|
48
|
+
<name of your common configuration> do
|
49
|
+
reversed_exit <true or false>
|
50
|
+
success_message '<output to display if script succeeds>'
|
51
|
+
error_message '<output to display if script fails>'
|
52
|
+
|
53
|
+
# add check
|
54
|
+
<name-of-check> do
|
55
|
+
# add specific settings for this check
|
56
|
+
command "<a one line command or a path to a script>"
|
57
|
+
files ['<path-to-file-1>', '<path-to-file-2>']
|
58
|
+
# override common settings
|
59
|
+
reversed_exit <true or false>
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
35
63
|
```
|
36
64
|
|
37
65
|
## Setup
|
@@ -55,16 +83,6 @@ The following script will run *rspec*, *rubocop*, *reek*, scanner for debugging
|
|
55
83
|
This option is required. It is either a one-liner such as `ls -al` or a path to a script, that will be runned.
|
56
84
|
If command is not configured, the program will raise a RuntimeError.
|
57
85
|
|
58
|
-
#### name
|
59
|
-
|
60
|
-
This option is optional. It makes it possible to configure the name of the script.
|
61
|
-
It will be used as folder name in the cache.
|
62
|
-
|
63
|
-
If it is not set, the hashed command will be used as folder name in the cache.
|
64
|
-
|
65
|
-
Attention: If you set the same name twice, it won't raise an error,
|
66
|
-
but it can cause unexpected behaviour, hence it is not recommanded to do so.
|
67
|
-
|
68
86
|
#### files
|
69
87
|
|
70
88
|
This option is optional. If configured the script output will be cached. You need to list all files in array form,
|
@@ -99,23 +117,83 @@ If set to truthy, the output of the configured script will be reversed. Which me
|
|
99
117
|
An example where this option is used, is the command that searches for TODOs.
|
100
118
|
The script should fail though if something is found and not if nothing is found.
|
101
119
|
|
120
|
+
### Defaults
|
121
|
+
|
122
|
+
For using renuo-bin-check for checking rails applications we have defaults the following defaults:
|
123
|
+
|
124
|
+
Usage of defaults:
|
125
|
+
|
126
|
+
```
|
127
|
+
# use defaults, or don't use any by using :no-defaults
|
128
|
+
BinCheck.run :<name-of-default> {}
|
129
|
+
```
|
130
|
+
|
131
|
+
Excluding specific checks from defaults example:
|
132
|
+
|
133
|
+
```
|
134
|
+
BinCheck.run :rails_coffee_script_defaults do
|
135
|
+
exclude :todo
|
136
|
+
exclude :reek
|
137
|
+
end
|
138
|
+
```
|
139
|
+
|
140
|
+
#### rails_defaults (will be used if no default is given)
|
141
|
+
|
142
|
+
It includes following checks:
|
143
|
+
* todo (searches for todos in the code)
|
144
|
+
* console_log (searches for console_log in the code)
|
145
|
+
* puts_with_brackets (searches for puts( in the code)
|
146
|
+
* puts_without_brackets (searches for puts in the code)
|
147
|
+
* pp_and_p (searches for p and pp in the code)
|
148
|
+
* p_with_brackets (searches for p( in the code)
|
149
|
+
* rubocop_autocorrect (runs rubocop with autocorrection)
|
150
|
+
* slim_lint (runs slim_lint)
|
151
|
+
* scss_lint (runs scss_lint ATTENTION: THIS DOESN'T WORK YET)
|
152
|
+
* tslint (runs tslint)
|
153
|
+
* brakeman (runs brakeman)
|
154
|
+
* reek (runs reek ATTENTION: THIS DOESN'T WORK YET)
|
155
|
+
* rspec (runs rspec)
|
156
|
+
|
157
|
+
#### rails_coffee_script_defaults
|
158
|
+
|
159
|
+
It includes following checks:
|
160
|
+
* todo (searches for todos in the code)
|
161
|
+
* console_log (searches for console_log in the code)
|
162
|
+
* puts_with_brackets (searches for puts( in the code)
|
163
|
+
* puts_without_brackets (searches for puts in the code)
|
164
|
+
* pp_and_p (searches for p and pp in the code)
|
165
|
+
* p_with_brackets (searches for p( in the code)
|
166
|
+
* rubocop_autocorrect (runs rubocop with autocorrection)
|
167
|
+
* slim_lint (runs slim_lint)
|
168
|
+
* scss_lint (runs scss_lint ATTENTION: THIS DOESN'T WORK YET)
|
169
|
+
* coffeelint (runs coffeelint ATTENTION: THIS ISN'T TESTED YET)
|
170
|
+
* brakeman (runs brakeman)
|
171
|
+
* reek (runs reek ATTENTION: THIS DOESN'T WORK YET)
|
172
|
+
* rspec (runs rspec)
|
173
|
+
|
102
174
|
### Example
|
103
175
|
|
104
176
|
The following example configures a script that looks for TODOs in a project.
|
105
177
|
The configuration options can be called in any order.
|
106
178
|
|
107
179
|
```rb
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
180
|
+
BinCheck do
|
181
|
+
todo-grepper do
|
182
|
+
command "grep --exclude-dir='app/assets/typings/**' -i -r 'TODO'"\
|
183
|
+
"app spec config db Rakefile README.md Gemfile"
|
184
|
+
files ['app/**/*', 'spec/**/*', 'config/**/*', 'db/**/*', 'Rakefile', 'README.md', 'Gemfile']
|
185
|
+
success_message "No TODO was found :)"
|
186
|
+
error_message "+TODO found! Please get rid of them"
|
187
|
+
reversed_exit true
|
188
|
+
end
|
116
189
|
end
|
117
190
|
```
|
118
191
|
|
192
|
+
## Known Bugs
|
193
|
+
|
194
|
+
* scss-lint doesnt work yet with renuo-bin-check
|
195
|
+
* reek doesnt work yet with renuo-bin-check
|
196
|
+
|
119
197
|
## Contribute
|
120
198
|
|
121
199
|
If you would like to contribute, you're very welcome to.
|
@@ -127,7 +205,7 @@ Please follow these instructions:
|
|
127
205
|
|
128
206
|
## License
|
129
207
|
|
130
|
-
Copyright (c) 2016 [Renuo
|
208
|
+
Copyright (c) 2016 [Renuo AG]
|
131
209
|
|
132
210
|
[MIT License][6]
|
133
211
|
|
@@ -140,4 +218,4 @@ Copyright (c) 2016 [Renuo GmbH]
|
|
140
218
|
[5]: https://github.com/renuo/renuo-bin-check/blob/develop/CODE_OF_CONDUCT.md
|
141
219
|
[6]: https://github.com/renuo/renuo-bin-check/blob/develop/LICENSE
|
142
220
|
|
143
|
-
[Renuo
|
221
|
+
[Renuo AG]: https://www.renuo.ch
|
data/bin/check
CHANGED
@@ -9,37 +9,37 @@ if [ $? -eq 0 ]; then
|
|
9
9
|
exit 1
|
10
10
|
fi
|
11
11
|
|
12
|
-
grep --exclude-dir="lib/renuo_bin_check/default_scripts" -i -r 'TODO' lib spec Gemfile
|
12
|
+
grep --exclude-dir={"lib/renuo_bin_check/default_scripts","spec/renuo/bin-check/default_scripts"} -i -r 'TODO' lib spec Gemfile
|
13
13
|
if [ $? -eq 0 ]; then
|
14
14
|
echo 'TODOs found. Please fix them and try again, commit aborted'
|
15
15
|
exit 1
|
16
16
|
fi
|
17
17
|
|
18
|
-
grep --exclude-dir="lib/renuo_bin_check/default_scripts" -i -r 'console.log' lib spec
|
18
|
+
grep --exclude-dir={"lib/renuo_bin_check/default_scripts","spec/renuo/bin-check/default_scripts"} -i -r 'console.log' lib spec
|
19
19
|
if [ $? -eq 0 ]; then
|
20
20
|
echo 'console.log found. Please fix them and try again, commit aborted'
|
21
21
|
exit 1
|
22
22
|
fi
|
23
23
|
|
24
|
-
grep --exclude-dir="lib/renuo_bin_check/default_scripts" -i -r ' puts ' lib spec
|
24
|
+
grep --exclude-dir={"lib/renuo_bin_check/default_scripts","spec/renuo/bin-check/default_scripts"} -i -r ' puts ' lib spec
|
25
25
|
if [ $? -eq 0 ]; then
|
26
26
|
echo 'puts found. Please fix them and try again, commit aborted'
|
27
27
|
exit 1
|
28
28
|
fi
|
29
29
|
|
30
|
-
grep --exclude-dir="lib/renuo_bin_check/default_scripts" -i -r ' puts(' lib spec
|
30
|
+
grep --exclude-dir={"lib/renuo_bin_check/default_scripts","spec/renuo/bin-check/default_scripts"} -i -r ' puts(' lib spec
|
31
31
|
if [ $? -eq 0 ]; then
|
32
32
|
echo 'puts found. Please fix them and try again, commit aborted'
|
33
33
|
exit 1
|
34
34
|
fi
|
35
35
|
|
36
|
-
grep --exclude-dir="lib/renuo_bin_check/default_scripts" -i -r ' p ' lib spec
|
36
|
+
grep --exclude-dir={"lib/renuo_bin_check/default_scripts","spec/renuo/bin-check/default_scripts"} -i -r ' p ' lib spec
|
37
37
|
if [ $? -eq 0 ]; then
|
38
38
|
echo 'p found. Please fix them and try again, commit aborted'
|
39
39
|
exit 1
|
40
40
|
fi
|
41
41
|
|
42
|
-
grep --exclude-dir="lib/renuo_bin_check/default_scripts" -i -r ' p(' lib spec
|
42
|
+
grep --exclude-dir={"lib/renuo_bin_check/default_scripts","spec/renuo/bin-check/default_scripts"} -i -r ' p(' lib spec
|
43
43
|
if [ $? -eq 0 ]; then
|
44
44
|
echo 'p found. Please fix them and try again, commit aborted'
|
45
45
|
exit 1
|
data/lib/renuo-bin-check.rb
CHANGED
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'renuo_bin_check/dsl_config'
|
2
|
+
require 'renuo_bin_check/default_scripts/default_scripts'
|
3
|
+
|
4
|
+
class BinCheck
|
5
|
+
def self.method_missing(name, *_params, &configs)
|
6
|
+
if block_given?
|
7
|
+
@configs << DSLConfig.new(name.to_s, &configs)
|
8
|
+
else
|
9
|
+
super
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def respond_to_missing?
|
14
|
+
#:nocov:
|
15
|
+
true
|
16
|
+
#:nocov:
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.run(default = :rails_defaults, &check)
|
20
|
+
@configs = DefaultScripts.new.send(default)
|
21
|
+
instance_eval(&check)
|
22
|
+
initialize_checks
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.initialize_checks
|
26
|
+
@initializer = RenuoBinCheck::Initializer.new
|
27
|
+
@configs.each do |config|
|
28
|
+
if config.children?
|
29
|
+
add_children(config)
|
30
|
+
else
|
31
|
+
add_check(config.configs)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
@initializer.run
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.add_children(config)
|
38
|
+
config.children.each do |child|
|
39
|
+
add_check(child.parent.configs.merge(child.configs))
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# :reek:NestedIterators initializer.check is not an iterator
|
44
|
+
def self.add_check(configs)
|
45
|
+
@initializer.check do |config|
|
46
|
+
configs.each do |key, value|
|
47
|
+
config.send key, value
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.exclude(check_name)
|
53
|
+
@configs.delete_if { |config| config.configs[:name] == check_name.to_s }
|
54
|
+
end
|
55
|
+
|
56
|
+
class << self
|
57
|
+
attr_reader :configs
|
58
|
+
end
|
59
|
+
end
|
@@ -10,8 +10,8 @@ module RenuoBinCheck
|
|
10
10
|
mini_profiler(bin_check)
|
11
11
|
todo(bin_check)
|
12
12
|
console_log(bin_check)
|
13
|
-
|
14
|
-
|
13
|
+
puts_without_brackets(bin_check)
|
14
|
+
puts_with_brackets(bin_check)
|
15
15
|
pp_and_p(bin_check)
|
16
16
|
p_with_brackets(bin_check)
|
17
17
|
rubocop_autocorrect(bin_check)
|
@@ -52,7 +52,7 @@ module RenuoBinCheck
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
def
|
55
|
+
def puts_without_brackets(bin_check)
|
56
56
|
bin_check.check do |config|
|
57
57
|
config.command "grep -i -r ' puts ' app spec"
|
58
58
|
config.reversed_exit true
|
@@ -60,7 +60,7 @@ module RenuoBinCheck
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
def
|
63
|
+
def puts_with_brackets(bin_check)
|
64
64
|
bin_check.check do |config|
|
65
65
|
config.command "grep -i -r ' puts(' app spec"
|
66
66
|
config.reversed_exit true
|
@@ -143,8 +143,8 @@ module RenuoBinCheck
|
|
143
143
|
module_function :mini_profiler
|
144
144
|
module_function :todo
|
145
145
|
module_function :console_log
|
146
|
-
module_function :
|
147
|
-
module_function :
|
146
|
+
module_function :puts_without_brackets
|
147
|
+
module_function :puts_with_brackets
|
148
148
|
module_function :pp_and_p
|
149
149
|
module_function :p_with_brackets
|
150
150
|
module_function :rubocop_autocorrect
|
@@ -0,0 +1,168 @@
|
|
1
|
+
require 'renuo_bin_check/dsl_config'
|
2
|
+
|
3
|
+
# rubocop:disable Metrics/ClassLength
|
4
|
+
# :reek:TooManyMethods
|
5
|
+
class DefaultScripts
|
6
|
+
def initialize
|
7
|
+
@default_scripts = []
|
8
|
+
end
|
9
|
+
|
10
|
+
def no_defaults
|
11
|
+
[]
|
12
|
+
end
|
13
|
+
|
14
|
+
# rubocop:disable Metrics/MethodLength
|
15
|
+
# :reek:TooManyStatements
|
16
|
+
def rails_defaults
|
17
|
+
todo
|
18
|
+
console_log
|
19
|
+
puts_with_brackets
|
20
|
+
puts_without_brackets
|
21
|
+
pp_and_p
|
22
|
+
p_with_brackets
|
23
|
+
rubocop_autocorrect
|
24
|
+
slim_lint
|
25
|
+
scss_lint
|
26
|
+
tslint
|
27
|
+
brakeman
|
28
|
+
reek
|
29
|
+
rspec
|
30
|
+
@default_scripts
|
31
|
+
end
|
32
|
+
|
33
|
+
# :reek:TooManyStatements
|
34
|
+
def rails_coffee_script_defaults
|
35
|
+
todo
|
36
|
+
console_log
|
37
|
+
puts_with_brackets
|
38
|
+
puts_without_brackets
|
39
|
+
pp_and_p
|
40
|
+
p_with_brackets
|
41
|
+
rubocop_autocorrect
|
42
|
+
slim_lint
|
43
|
+
scss_lint
|
44
|
+
coffeelint
|
45
|
+
brakeman
|
46
|
+
reek
|
47
|
+
rspec
|
48
|
+
@default_scripts
|
49
|
+
end
|
50
|
+
# rubocop:enable Metrics/MethodLength
|
51
|
+
|
52
|
+
def todo
|
53
|
+
@default_scripts << DSLConfig.new('todo') do
|
54
|
+
command "grep --exclude-dir='app/assets/typings/**' -i -r 'TODO' app spec config db Rakefile README.md Gemfile"
|
55
|
+
reversed_exit true
|
56
|
+
files ['app/**/*', 'spec/**/*', 'config/**/*', 'db/**/*', 'Rakefile', 'README.md', 'Gemfile']
|
57
|
+
success_message '+TODOs found. Please fix them and try again, commit aborted'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def console_log
|
62
|
+
@default_scripts << DSLConfig.new('console_log') do
|
63
|
+
command "grep -i -r 'console.log' app spec"
|
64
|
+
reversed_exit true
|
65
|
+
files ['app/**/*', 'spec/**/*']
|
66
|
+
success_message '+console.log found. Please fix them and try again, commit aborted'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def puts_without_brackets
|
71
|
+
@default_scripts << DSLConfig.new('puts_without_brackets') do
|
72
|
+
command "grep -i -r ' puts ' app spec"
|
73
|
+
reversed_exit true
|
74
|
+
files ['app/**/*', 'spec/**/*']
|
75
|
+
success_message '+puts found. Please fix them and try again, commit aborted'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def puts_with_brackets
|
80
|
+
@default_scripts << DSLConfig.new('puts_with_brackets') do
|
81
|
+
command "grep -i -r ' puts(' app spec"
|
82
|
+
reversed_exit true
|
83
|
+
files ['app/**/*', 'spec/**/*']
|
84
|
+
success_message '+puts( found. Please fix them and try again, commit aborted'
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def pp_and_p
|
89
|
+
@default_scripts << DSLConfig.new('pp_and_p') do
|
90
|
+
command "grep -i -r '( pp? [^=])|(= pp? )' app spec"
|
91
|
+
reversed_exit true
|
92
|
+
files ['app/**/*', 'spec/**/*']
|
93
|
+
success_message '+p or pp found. Please fix them and try again, commit aborted'
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def p_with_brackets
|
98
|
+
@default_scripts << DSLConfig.new('p_with_brackets') do
|
99
|
+
command "grep -i -r ' p(' app spec"
|
100
|
+
reversed_exit true
|
101
|
+
files ['app/**/*', 'spec/**/*']
|
102
|
+
success_message '+p( found. Please fix them and try again, commit aborted'
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def rubocop_autocorrect
|
107
|
+
@default_scripts << DSLConfig.new('rubocop_autocorrect') do
|
108
|
+
command 'bundle exec rubocop -a -D -c .rubocop.yml'
|
109
|
+
files ['app/**/*.rb', 'spec/**/*.rb']
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def slim_lint
|
114
|
+
@default_scripts << DSLConfig.new('slim_lint') do
|
115
|
+
command 'bundle exec slim-lint app/views/ -c .slim-lint.yml'
|
116
|
+
files ['app/views/**/*.slim']
|
117
|
+
error_message '+slim-lint detected issues, commit aborted'
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
def scss_lint
|
122
|
+
@default_scripts << DSLConfig.new('scss_lint') do
|
123
|
+
command 'scss-lint app/assets/stylesheets/**/*.scss'
|
124
|
+
files ['app/assets/stylesheets/**/*.scss']
|
125
|
+
error_message '+scss-lint detected issues, commit aborted'
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def tslint
|
130
|
+
@default_scripts << DSLConfig.new('tslint') do
|
131
|
+
command 'tslint -c tslint.json app/assets/javascripts/**/*.ts'
|
132
|
+
files ['app/assets/javascripts/**/*.ts']
|
133
|
+
error_message '+tslint detected issues, commit aborted'
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def coffeelint
|
138
|
+
@default_scripts << DSLConfig.new('coffeelint') do
|
139
|
+
command 'coffeelint -f .coffeelint.json app/assets/javascripts/**/*.coffee'
|
140
|
+
files ['app/assets/javascripts/**/*.coffee']
|
141
|
+
error_message '+coffeelint detected issues, commit aborted'
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
def brakeman
|
146
|
+
@default_scripts << DSLConfig.new('brakeman') do
|
147
|
+
command 'bundle exec brakeman -q -z --summary > /dev/null'
|
148
|
+
error_message '+Brakeman has detected one or more security vulnerabilities, please review them and re-commit ' \
|
149
|
+
'your changes, commit aborted'
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def reek
|
154
|
+
@default_scripts << DSLConfig.new('reek') do
|
155
|
+
command 'bundle exec reek'
|
156
|
+
files ['app/**/*.rb']
|
157
|
+
error_message '+reek detected code smells, commit aborted'
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
def rspec
|
162
|
+
@default_scripts << DSLConfig.new('rspec') do
|
163
|
+
command 'bundle exec rspec'
|
164
|
+
files ['app/**/*.rb', 'spec/**/*.rb']
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
# rubocop:enable Metrics/ClassLength
|
@@ -0,0 +1,47 @@
|
|
1
|
+
class DSLConfig
|
2
|
+
attr_reader :configs, :children, :parent
|
3
|
+
def initialize(name, parent = nil, &configs)
|
4
|
+
@parent = parent
|
5
|
+
@children = []
|
6
|
+
@configs = { name: name }
|
7
|
+
instance_eval(&configs)
|
8
|
+
end
|
9
|
+
|
10
|
+
def method_missing(name, *_params, &configs)
|
11
|
+
if block_given?
|
12
|
+
@children << DSLConfig.new(name.to_s, self, &configs)
|
13
|
+
else
|
14
|
+
super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def respond_to_missing?(_method_name, _include_private)
|
19
|
+
#:nocov:
|
20
|
+
true
|
21
|
+
#:nocov:
|
22
|
+
end
|
23
|
+
|
24
|
+
def files(files)
|
25
|
+
@configs[:files] = files
|
26
|
+
end
|
27
|
+
|
28
|
+
def command(command)
|
29
|
+
@configs[:command] = command
|
30
|
+
end
|
31
|
+
|
32
|
+
def reversed_exit(reversed_exit)
|
33
|
+
@configs[:reversed_exit] = reversed_exit
|
34
|
+
end
|
35
|
+
|
36
|
+
def error_message(error_message)
|
37
|
+
@configs[:error_message] = error_message
|
38
|
+
end
|
39
|
+
|
40
|
+
def success_message(success_message)
|
41
|
+
@configs[:success_message] = success_message
|
42
|
+
end
|
43
|
+
|
44
|
+
def children?
|
45
|
+
!@children.empty?
|
46
|
+
end
|
47
|
+
end
|
@@ -37,7 +37,7 @@ module RenuoBinCheck
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def reverse_result
|
40
|
-
Result.new(@result.error_output, @result.standard_output, @result.exit_code
|
40
|
+
Result.new(@result.error_output, @result.standard_output, @result.exit_code.zero? ? 1 : 0)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
@@ -0,0 +1,213 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require './lib/renuo_bin_check/bin_check'
|
3
|
+
|
4
|
+
RSpec.describe BinCheck do
|
5
|
+
context 'without caching' do
|
6
|
+
it 'returns exit-code 0 and expected output' do
|
7
|
+
expect do
|
8
|
+
begin
|
9
|
+
BinCheck.run :no_defaults do
|
10
|
+
exit0_script do
|
11
|
+
command './spec/spec-files/test_script_exit0'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
rescue SystemExit => se
|
15
|
+
expect(se.status).to eq(0)
|
16
|
+
end
|
17
|
+
end.to output("I passed\nThis is the second line\n").to_stdout
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'returns exit-code 0 and expected output' do
|
21
|
+
expect do
|
22
|
+
begin
|
23
|
+
BinCheck.run :no_defaults do
|
24
|
+
hello_script do
|
25
|
+
command 'echo hello'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
rescue SystemExit => se
|
29
|
+
expect(se.status).to eq(0)
|
30
|
+
end
|
31
|
+
end.to output("hello\n").to_stdout
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'returns exit-code 0 and expected overridden output' do
|
35
|
+
expect do
|
36
|
+
begin
|
37
|
+
BinCheck.run :no_defaults do
|
38
|
+
hello_script do
|
39
|
+
command 'echo hello'
|
40
|
+
success_message 'I passed :)'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
rescue SystemExit => se
|
44
|
+
expect(se.status).to eq(0)
|
45
|
+
end
|
46
|
+
end.to output("I passed :)\n").to_stdout
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'returns exit-code 0 and expected appended output' do
|
50
|
+
expect do
|
51
|
+
begin
|
52
|
+
BinCheck.run :no_defaults do
|
53
|
+
hello_script do
|
54
|
+
command 'echo hello'
|
55
|
+
success_message '+I passed :)'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
rescue SystemExit => se
|
59
|
+
expect(se.status).to eq(0)
|
60
|
+
end
|
61
|
+
end.to output("hello\nI passed :)\n").to_stdout
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'returns exit-code 1 and expected error-output' do
|
65
|
+
expect do
|
66
|
+
begin
|
67
|
+
BinCheck.run :no_defaults do
|
68
|
+
exit1_script do
|
69
|
+
command './spec/spec-files/test_script_exit1'
|
70
|
+
end
|
71
|
+
end
|
72
|
+
rescue SystemExit => se
|
73
|
+
expect(se.status).to eq(1)
|
74
|
+
end
|
75
|
+
end.to output("I failed\nThis is the second line\n").to_stderr
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'returns exit-code 1 and expected non-error-output' do
|
79
|
+
expect do
|
80
|
+
begin
|
81
|
+
BinCheck.run :no_defaults do
|
82
|
+
exit1_script do
|
83
|
+
command './spec/spec-files/test_script_exit1_no_error_output'
|
84
|
+
end
|
85
|
+
end
|
86
|
+
rescue SystemExit => se
|
87
|
+
expect(se.status).to eq(1)
|
88
|
+
end
|
89
|
+
end.to output("I failed\nThis is the second line\n").to_stderr
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'returns exit-code 1 and expected overridden error-output' do
|
93
|
+
expect do
|
94
|
+
begin
|
95
|
+
BinCheck.run :no_defaults do
|
96
|
+
exit1_script do
|
97
|
+
command './spec/spec-files/test_script_exit1'
|
98
|
+
error_message 'it failed...'
|
99
|
+
end
|
100
|
+
end
|
101
|
+
rescue SystemExit => se
|
102
|
+
expect(se.status).to eq(1)
|
103
|
+
end
|
104
|
+
end.to output("it failed...\n").to_stderr
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'returns exit-code 1 and expected appended error-output' do
|
108
|
+
expect do
|
109
|
+
begin
|
110
|
+
BinCheck.run :no_defaults do
|
111
|
+
exit1_script do
|
112
|
+
command './spec/spec-files/test_script_exit1'
|
113
|
+
error_message '+it failed...'
|
114
|
+
end
|
115
|
+
end
|
116
|
+
rescue SystemExit => se
|
117
|
+
expect(se.status).to eq(1)
|
118
|
+
end
|
119
|
+
end.to output("I failed\nThis is the second line\nit failed...\n").to_stderr
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'uses the common configuration right' do
|
123
|
+
expect do
|
124
|
+
begin
|
125
|
+
BinCheck.run :no_defaults do
|
126
|
+
cute_scripts do
|
127
|
+
success_message '+common configuration'
|
128
|
+
hello_script do
|
129
|
+
command 'echo hello'
|
130
|
+
end
|
131
|
+
bye_script do
|
132
|
+
command 'sleep 1 && echo bye'
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
rescue SystemExit => se
|
137
|
+
expect(se.status).to eq(0)
|
138
|
+
end
|
139
|
+
end.to output("hello\ncommon configuration\nbye\ncommon configuration\n").to_stdout
|
140
|
+
end
|
141
|
+
|
142
|
+
it 'runns scripts parallel' do
|
143
|
+
start_time = Time.now
|
144
|
+
begin
|
145
|
+
BinCheck.run :no_defaults do
|
146
|
+
sleep1 do
|
147
|
+
command './spec/spec-files/test_script_sleep1'
|
148
|
+
end
|
149
|
+
sleep2 do
|
150
|
+
command './spec/spec-files/test_script_sleep2'
|
151
|
+
end
|
152
|
+
end
|
153
|
+
rescue SystemExit => se
|
154
|
+
expect(se.status).to eq(0)
|
155
|
+
end
|
156
|
+
end_time = Time.now
|
157
|
+
expect(end_time - start_time).to be_within(0.4).of(2)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
context 'cached script' do
|
162
|
+
before(:each) do
|
163
|
+
FileUtils.mkdir_p 'tmp/bin-check/exit0/df57ab93c06ded11a01f2de950307019'
|
164
|
+
File.write 'tmp/bin-check/exit0/df57ab93c06ded11a01f2de950307019/standard_output',
|
165
|
+
"I'm cached\npassed\n"
|
166
|
+
File.write 'tmp/bin-check/exit0/df57ab93c06ded11a01f2de950307019/error_output',
|
167
|
+
"I'm cached\npassed\n"
|
168
|
+
File.write 'tmp/bin-check/exit0/df57ab93c06ded11a01f2de950307019/exit_code', 0
|
169
|
+
end
|
170
|
+
|
171
|
+
after(:each) { FileUtils.remove_dir('./tmp/bin-check') }
|
172
|
+
|
173
|
+
it 'returns cached output and exit-code' do
|
174
|
+
expect do
|
175
|
+
begin
|
176
|
+
BinCheck.run :no_defaults do
|
177
|
+
exit0 do
|
178
|
+
command './spec/spec-files/test_script_exit0'
|
179
|
+
files %w(./spec/spec-files/file1 ./spec/spec-files/file2)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
rescue SystemExit => se
|
183
|
+
expect(se.status).to eq(0)
|
184
|
+
end
|
185
|
+
end.to output("I'm cached\npassed\n").to_stdout
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
context 'saving to exit0 folder' do
|
190
|
+
after(:each) { FileUtils.remove_dir('./tmp/bin-check') }
|
191
|
+
|
192
|
+
it 'saves output and exit-code to files in folder named by given name' do
|
193
|
+
expect do
|
194
|
+
begin
|
195
|
+
BinCheck.run :no_defaults do
|
196
|
+
exit0 do
|
197
|
+
command './spec/spec-files/test_script_exit0'
|
198
|
+
files %w(./spec/spec-files/file1 ./spec/spec-files/file2)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
rescue SystemExit => se
|
202
|
+
expect(se.status).to eq(0)
|
203
|
+
end
|
204
|
+
end.to output("I passed\nThis is the second line\n").to_stdout
|
205
|
+
|
206
|
+
expect(File.read('./tmp/bin-check/exit0/df57ab93c06ded11a01f2de950307019/error_output'))
|
207
|
+
.to eq("I failed\nThis is the second line\n")
|
208
|
+
expect(File.read('./tmp/bin-check/exit0/df57ab93c06ded11a01f2de950307019/standard_output'))
|
209
|
+
.to eq("I passed\nThis is the second line\n")
|
210
|
+
expect(File.read('./tmp/bin-check/exit0/df57ab93c06ded11a01f2de950307019/exit_code').to_i).to eq(0)
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require './lib/renuo_bin_check/bin_check'
|
3
|
+
|
4
|
+
RSpec.describe BinCheck do
|
5
|
+
it 'gets the right infos out of a new check' do
|
6
|
+
expect(BinCheck).to receive(:initialize_checks).and_return(true)
|
7
|
+
expect_any_instance_of(DefaultScripts).to receive(:rails_defaults).and_return([])
|
8
|
+
|
9
|
+
BinCheck.run do
|
10
|
+
rubocop do
|
11
|
+
files 'lib/**/*.rb'
|
12
|
+
command 'rubocop'
|
13
|
+
reversed_exit false
|
14
|
+
end
|
15
|
+
|
16
|
+
t0d0_finder do
|
17
|
+
files 'lib/**/*.*'
|
18
|
+
command 'blubb-blubb'
|
19
|
+
reversed_exit true
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
expect(BinCheck.configs.first.configs)
|
24
|
+
.to eq(name: 'rubocop', files: 'lib/**/*.rb', command: 'rubocop', reversed_exit: false)
|
25
|
+
expect(BinCheck.configs[1].configs)
|
26
|
+
.to eq(name: 't0d0_finder', files: 'lib/**/*.*', command: 'blubb-blubb', reversed_exit: true)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'understands common configs' do
|
30
|
+
expect(BinCheck).to receive(:initialize_checks).and_return(true)
|
31
|
+
expect_any_instance_of(DefaultScripts).to receive(:rails_defaults).and_return([])
|
32
|
+
|
33
|
+
BinCheck.run do
|
34
|
+
ruby_files do
|
35
|
+
files 'lib/**/*.rb'
|
36
|
+
rubocop do
|
37
|
+
command 'rubocop'
|
38
|
+
reversed_exit false
|
39
|
+
end
|
40
|
+
p_finder do
|
41
|
+
command 'blubb-blubb'
|
42
|
+
reversed_exit true
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
expect(BinCheck.configs.first.configs.merge(BinCheck.configs.first.children.first.configs))
|
47
|
+
.to eq(name: 'rubocop', files: 'lib/**/*.rb', command: 'rubocop', reversed_exit: false)
|
48
|
+
expect(BinCheck.configs.first.configs.merge(BinCheck.configs.first.children[1].configs))
|
49
|
+
.to eq(name: 'p_finder', files: 'lib/**/*.rb', command: 'blubb-blubb', reversed_exit: true)
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'excluds unwanted default checks' do
|
53
|
+
expect(BinCheck).to receive(:initialize_checks).and_return(true)
|
54
|
+
|
55
|
+
BinCheck.run do
|
56
|
+
exclude :config_log
|
57
|
+
end
|
58
|
+
|
59
|
+
BinCheck.configs.each do |config|
|
60
|
+
expect(config.configs).not_to include(name: 'config_log')
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'calls super if no block is given' do
|
65
|
+
expect { BinCheck.blubb }.to raise_error(NoMethodError)
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,191 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require './lib/renuo_bin_check/default_scripts/default_scripts'
|
3
|
+
|
4
|
+
RSpec.describe DefaultScripts do
|
5
|
+
let(:default_scripts) { DefaultScripts.new }
|
6
|
+
|
7
|
+
it 'uses all scripts needed for rails default' do
|
8
|
+
expect(default_scripts).to receive(:todo)
|
9
|
+
expect(default_scripts).to receive(:console_log)
|
10
|
+
expect(default_scripts).to receive(:puts_with_brackets)
|
11
|
+
expect(default_scripts).to receive(:puts_without_brackets)
|
12
|
+
expect(default_scripts).to receive(:pp_and_p)
|
13
|
+
expect(default_scripts).to receive(:p_with_brackets)
|
14
|
+
expect(default_scripts).to receive(:rubocop_autocorrect)
|
15
|
+
expect(default_scripts).to receive(:slim_lint)
|
16
|
+
expect(default_scripts).to receive(:scss_lint)
|
17
|
+
expect(default_scripts).to receive(:tslint)
|
18
|
+
expect(default_scripts).to receive(:brakeman)
|
19
|
+
expect(default_scripts).to receive(:reek)
|
20
|
+
expect(default_scripts).to receive(:rspec)
|
21
|
+
|
22
|
+
default_scripts.rails_defaults
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'uses all scripts needed for rails default if coffee is used' do
|
26
|
+
expect(default_scripts).to receive(:todo)
|
27
|
+
expect(default_scripts).to receive(:console_log)
|
28
|
+
expect(default_scripts).to receive(:puts_with_brackets)
|
29
|
+
expect(default_scripts).to receive(:puts_without_brackets)
|
30
|
+
expect(default_scripts).to receive(:pp_and_p)
|
31
|
+
expect(default_scripts).to receive(:p_with_brackets)
|
32
|
+
expect(default_scripts).to receive(:rubocop_autocorrect)
|
33
|
+
expect(default_scripts).to receive(:slim_lint)
|
34
|
+
expect(default_scripts).to receive(:scss_lint)
|
35
|
+
expect(default_scripts).to receive(:coffeelint)
|
36
|
+
expect(default_scripts).to receive(:brakeman)
|
37
|
+
expect(default_scripts).to receive(:reek)
|
38
|
+
expect(default_scripts).to receive(:rspec)
|
39
|
+
|
40
|
+
default_scripts.rails_coffee_script_defaults
|
41
|
+
end
|
42
|
+
|
43
|
+
it '#no_default' do
|
44
|
+
expect(default_scripts.no_defaults).to eq([])
|
45
|
+
end
|
46
|
+
|
47
|
+
it '#todo' do
|
48
|
+
expect(default_scripts.todo.last.configs)
|
49
|
+
.to eq(
|
50
|
+
name: 'todo',
|
51
|
+
command: "grep --exclude-dir='app/assets/typings/**' -i -r 'TODO' app spec config db Rakefile README.md" \
|
52
|
+
' Gemfile',
|
53
|
+
reversed_exit: true,
|
54
|
+
files: ['app/**/*', 'spec/**/*', 'config/**/*', 'db/**/*', 'Rakefile', 'README.md', 'Gemfile'],
|
55
|
+
success_message: '+TODOs found. Please fix them and try again, commit aborted'
|
56
|
+
)
|
57
|
+
end
|
58
|
+
|
59
|
+
it '#console_log' do
|
60
|
+
expect(default_scripts.console_log.last.configs)
|
61
|
+
.to eq(
|
62
|
+
name: 'console_log',
|
63
|
+
command: "grep -i -r 'console.log' app spec",
|
64
|
+
reversed_exit: true,
|
65
|
+
files: ['app/**/*', 'spec/**/*'],
|
66
|
+
success_message: '+console.log found. Please fix them and try again, commit aborted'
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
it '#puts_without_brackets' do
|
71
|
+
expect(default_scripts.puts_without_brackets.last.configs)
|
72
|
+
.to eq(
|
73
|
+
name: 'puts_without_brackets',
|
74
|
+
command: "grep -i -r ' puts ' app spec",
|
75
|
+
reversed_exit: true,
|
76
|
+
files: ['app/**/*', 'spec/**/*'],
|
77
|
+
success_message: '+puts found. Please fix them and try again, commit aborted'
|
78
|
+
)
|
79
|
+
end
|
80
|
+
|
81
|
+
it '#puts_with_brackets' do
|
82
|
+
expect(default_scripts.puts_with_brackets.last.configs)
|
83
|
+
.to eq(
|
84
|
+
name: 'puts_with_brackets',
|
85
|
+
command: "grep -i -r ' puts(' app spec",
|
86
|
+
reversed_exit: true,
|
87
|
+
files: ['app/**/*', 'spec/**/*'],
|
88
|
+
success_message: '+puts( found. Please fix them and try again, commit aborted'
|
89
|
+
)
|
90
|
+
end
|
91
|
+
|
92
|
+
it '#pp_and_p' do
|
93
|
+
expect(default_scripts.pp_and_p.last.configs)
|
94
|
+
.to eq(
|
95
|
+
name: 'pp_and_p',
|
96
|
+
command: "grep -i -r '( pp? [^=])|(= pp? )' app spec",
|
97
|
+
reversed_exit: true,
|
98
|
+
files: ['app/**/*', 'spec/**/*'],
|
99
|
+
success_message: '+p or pp found. Please fix them and try again, commit aborted'
|
100
|
+
)
|
101
|
+
end
|
102
|
+
|
103
|
+
it '#p_with_brackets' do
|
104
|
+
expect(default_scripts.p_with_brackets.last.configs)
|
105
|
+
.to eq(
|
106
|
+
name: 'p_with_brackets',
|
107
|
+
command: "grep -i -r ' p(' app spec",
|
108
|
+
reversed_exit: true,
|
109
|
+
files: ['app/**/*', 'spec/**/*'],
|
110
|
+
success_message: '+p( found. Please fix them and try again, commit aborted'
|
111
|
+
)
|
112
|
+
end
|
113
|
+
|
114
|
+
it '#rubocop_autocorrect' do
|
115
|
+
expect(default_scripts.rubocop_autocorrect.last.configs)
|
116
|
+
.to eq(
|
117
|
+
name: 'rubocop_autocorrect',
|
118
|
+
command: 'bundle exec rubocop -a -D -c .rubocop.yml',
|
119
|
+
files: ['app/**/*.rb', 'spec/**/*.rb']
|
120
|
+
)
|
121
|
+
end
|
122
|
+
|
123
|
+
it '#slim_lint' do
|
124
|
+
expect(default_scripts.slim_lint.last.configs)
|
125
|
+
.to eq(
|
126
|
+
name: 'slim_lint',
|
127
|
+
command: 'bundle exec slim-lint app/views/ -c .slim-lint.yml',
|
128
|
+
files: ['app/views/**/*.slim'],
|
129
|
+
error_message: '+slim-lint detected issues, commit aborted'
|
130
|
+
)
|
131
|
+
end
|
132
|
+
|
133
|
+
it '#scss_lint' do
|
134
|
+
expect(default_scripts.scss_lint.last.configs)
|
135
|
+
.to eq(
|
136
|
+
name: 'scss_lint',
|
137
|
+
command: 'scss-lint app/assets/stylesheets/**/*.scss',
|
138
|
+
files: ['app/assets/stylesheets/**/*.scss'],
|
139
|
+
error_message: '+scss-lint detected issues, commit aborted'
|
140
|
+
)
|
141
|
+
end
|
142
|
+
|
143
|
+
it '#tslint' do
|
144
|
+
expect(default_scripts.tslint.last.configs)
|
145
|
+
.to eq(
|
146
|
+
name: 'tslint',
|
147
|
+
command: 'tslint -c tslint.json app/assets/javascripts/**/*.ts',
|
148
|
+
files: ['app/assets/javascripts/**/*.ts'],
|
149
|
+
error_message: '+tslint detected issues, commit aborted'
|
150
|
+
)
|
151
|
+
end
|
152
|
+
|
153
|
+
it '#coffeelint' do
|
154
|
+
expect(default_scripts.coffeelint.last.configs)
|
155
|
+
.to eq(
|
156
|
+
name: 'coffeelint',
|
157
|
+
command: 'coffeelint -f .coffeelint.json app/assets/javascripts/**/*.coffee',
|
158
|
+
files: ['app/assets/javascripts/**/*.coffee'],
|
159
|
+
error_message: '+coffeelint detected issues, commit aborted'
|
160
|
+
)
|
161
|
+
end
|
162
|
+
|
163
|
+
it '#brakeman' do
|
164
|
+
expect(default_scripts.brakeman.last.configs)
|
165
|
+
.to eq(
|
166
|
+
name: 'brakeman',
|
167
|
+
command: 'bundle exec brakeman -q -z --summary > /dev/null',
|
168
|
+
error_message: '+Brakeman has detected one or more security vulnerabilities, please review them and re-commit' \
|
169
|
+
' your changes, commit aborted'
|
170
|
+
)
|
171
|
+
end
|
172
|
+
|
173
|
+
it '#reek' do
|
174
|
+
expect(default_scripts.reek.last.configs)
|
175
|
+
.to eq(
|
176
|
+
name: 'reek',
|
177
|
+
command: 'bundle exec reek',
|
178
|
+
files: ['app/**/*.rb'],
|
179
|
+
error_message: '+reek detected code smells, commit aborted'
|
180
|
+
)
|
181
|
+
end
|
182
|
+
|
183
|
+
it '#rspec' do
|
184
|
+
expect(default_scripts.rspec.last.configs)
|
185
|
+
.to eq(
|
186
|
+
name: 'rspec',
|
187
|
+
command: 'bundle exec rspec',
|
188
|
+
files: ['app/**/*.rb', 'spec/**/*.rb']
|
189
|
+
)
|
190
|
+
end
|
191
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require './lib/renuo_bin_check/dsl_config'
|
3
|
+
|
4
|
+
RSpec.describe DSLConfig do
|
5
|
+
it 'gets the right infos out of a new check' do
|
6
|
+
dsl_config = DSLConfig.new('rspec') do
|
7
|
+
files 'lib/**/*.rb'
|
8
|
+
command 'rubocop'
|
9
|
+
reversed_exit false
|
10
|
+
end
|
11
|
+
|
12
|
+
expect(dsl_config.configs).to eq(name: 'rspec', files: 'lib/**/*.rb', command: 'rubocop', reversed_exit: false)
|
13
|
+
expect(dsl_config.children?).to eq(false)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'creates new children if there are nested checks' do
|
17
|
+
dsl_config = DSLConfig.new('ruby_files') do
|
18
|
+
files 'lib/**/*.rb'
|
19
|
+
rubocop do
|
20
|
+
command 'rubocop'
|
21
|
+
reversed_exit false
|
22
|
+
end
|
23
|
+
error_message 'an error occured'
|
24
|
+
p_finder do
|
25
|
+
command 'find p'
|
26
|
+
reversed_exit true
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
expect(dsl_config.configs).to eq(name: 'ruby_files', files: 'lib/**/*.rb', error_message: 'an error occured')
|
31
|
+
expect(dsl_config.children.first.configs).to eq(name: 'rubocop', command: 'rubocop', reversed_exit: false)
|
32
|
+
expect(dsl_config.children[1].configs).to eq(name: 'p_finder', command: 'find p', reversed_exit: true)
|
33
|
+
expect(dsl_config.children?).to eq(true)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'method_missing calls super if no block is given' do
|
37
|
+
expect { DSLConfig.new('ruby_files') { blubb } }.to raise_error(NameError)
|
38
|
+
end
|
39
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: renuo-bin-check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zora Fuchs
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|
@@ -205,8 +205,11 @@ files:
|
|
205
205
|
- bin/check
|
206
206
|
- bin/setup
|
207
207
|
- lib/renuo-bin-check.rb
|
208
|
+
- lib/renuo_bin_check/bin_check.rb
|
208
209
|
- lib/renuo_bin_check/cacher.rb
|
209
210
|
- lib/renuo_bin_check/default_scripts/default_rails.rb
|
211
|
+
- lib/renuo_bin_check/default_scripts/default_scripts.rb
|
212
|
+
- lib/renuo_bin_check/dsl_config.rb
|
210
213
|
- lib/renuo_bin_check/initializer.rb
|
211
214
|
- lib/renuo_bin_check/master_thread.rb
|
212
215
|
- lib/renuo_bin_check/printer.rb
|
@@ -220,8 +223,12 @@ files:
|
|
220
223
|
- spec/factories/cacher.rb
|
221
224
|
- spec/factories/result.rb
|
222
225
|
- spec/factories/script_config.rb
|
226
|
+
- spec/integration/bin_check_spec.rb
|
223
227
|
- spec/integration/initializer_spec.rb
|
228
|
+
- spec/renuo/bin-check/bin_check_spec.rb
|
224
229
|
- spec/renuo/bin-check/cacher_spec.rb
|
230
|
+
- spec/renuo/bin-check/default_scripts/default_scripts_spec.rb
|
231
|
+
- spec/renuo/bin-check/dsl_config_spec.rb
|
225
232
|
- spec/renuo/bin-check/initializer_spec.rb
|
226
233
|
- spec/renuo/bin-check/master_thread_spec.rb
|
227
234
|
- spec/renuo/bin-check/printer_spec.rb
|
@@ -252,9 +259,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
252
259
|
version: '0'
|
253
260
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
254
261
|
requirements:
|
255
|
-
- - "
|
262
|
+
- - ">"
|
256
263
|
- !ruby/object:Gem::Version
|
257
|
-
version:
|
264
|
+
version: 1.3.1
|
258
265
|
requirements: []
|
259
266
|
rubyforge_project:
|
260
267
|
rubygems_version: 2.5.1
|
@@ -268,8 +275,12 @@ test_files:
|
|
268
275
|
- spec/factories/cacher.rb
|
269
276
|
- spec/factories/result.rb
|
270
277
|
- spec/factories/script_config.rb
|
278
|
+
- spec/integration/bin_check_spec.rb
|
271
279
|
- spec/integration/initializer_spec.rb
|
280
|
+
- spec/renuo/bin-check/bin_check_spec.rb
|
272
281
|
- spec/renuo/bin-check/cacher_spec.rb
|
282
|
+
- spec/renuo/bin-check/default_scripts/default_scripts_spec.rb
|
283
|
+
- spec/renuo/bin-check/dsl_config_spec.rb
|
273
284
|
- spec/renuo/bin-check/initializer_spec.rb
|
274
285
|
- spec/renuo/bin-check/master_thread_spec.rb
|
275
286
|
- spec/renuo/bin-check/printer_spec.rb
|
@@ -285,4 +296,3 @@ test_files:
|
|
285
296
|
- spec/spec-files/test_script_sleep1
|
286
297
|
- spec/spec-files/test_script_sleep2
|
287
298
|
- spec/spec_helper.rb
|
288
|
-
has_rdoc:
|