warder 0.1.4 → 0.1.5
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/features/checks_for_rails_best_practices.feature +2 -2
- data/features/checks_for_sandi_metz_rules.feature +25 -0
- data/features/step_definitions/checks_for_sandi_metz_rules_step.rb +7 -0
- data/features/step_definitions/run_steps.rb +1 -1
- data/lib/warder.rb +1 -0
- data/lib/warder/runner.rb +4 -2
- data/lib/warder/sandi_rules_runner.rb +18 -0
- data/lib/warder/version.rb +1 -1
- data/spec/fixtures/invalid_rails_app/app/controllers/application_controller.rb +7 -1
- data/spec/fixtures/invalid_rails_app/app/models/user.rb +5 -0
- data/warder.gemspec +1 -1
- metadata +23 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8fc3f7ef42e9897e30fe070ae20376ec610ef3e4
|
4
|
+
data.tar.gz: f8d04d91d316a1bd1b6b6318cb9d04231a00b8f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b00b71994d9e5af8d39cf5634bb91c80c26ae7a9554f93c96c807b3839ba9104e41571081abde3cee0cdef33c1662feae0bff756829bb9455aa13522595a5efc
|
7
|
+
data.tar.gz: d8105384af5092c059ae96aa48f207f07355704061da94af94a94b3ee8f46e04e76b0298a46bdc732322ab6f2cec803ba6827224a0b01861c7bbacf45adc7d17
|
@@ -0,0 +1,25 @@
|
|
1
|
+
Feature: checks for Sandi Metz rules violations
|
2
|
+
In order to find Sandi Metz rules violations
|
3
|
+
As a ruby developer
|
4
|
+
I want to run warder with --sandi-rules option
|
5
|
+
|
6
|
+
Scenario: run warder with enabled sandi rules option
|
7
|
+
Given I have valid_rails_app project in directory
|
8
|
+
And I am on project directory
|
9
|
+
When I run `warder --sandi-rules`
|
10
|
+
Then warder detects sandi rules violations
|
11
|
+
Then the exit status should be 0
|
12
|
+
|
13
|
+
Scenario: run warder with enabled sandi rules option on invalid project
|
14
|
+
Given I have invalid_rails_app project in directory
|
15
|
+
And I am on project directory
|
16
|
+
When I run `warder --sandi-rules`
|
17
|
+
Then warder detects sandi rules violations
|
18
|
+
Then the exit status should be 1
|
19
|
+
|
20
|
+
Scenario: run warder with disabled sandi rules option on invalid project
|
21
|
+
Given I have invalid_rails_app project in directory
|
22
|
+
And I am on project directory
|
23
|
+
When I run `warder --no-sandi-rules`
|
24
|
+
Then warder does nothing
|
25
|
+
Then the exit status should be 0
|
@@ -16,7 +16,7 @@ Then(/^warder does nothing$/) do
|
|
16
16
|
step 'the output should match /.{0}/'
|
17
17
|
end
|
18
18
|
|
19
|
-
Then(/^warder detects (.+) issues$/) do |what|
|
19
|
+
Then(/^warder detects (.+) (issues|violations)$/) do |what, _|
|
20
20
|
executing_output = send(:"executing_#{what.gsub(' ', '_')}")
|
21
21
|
step "the output should contain \"#{executing_output}\""
|
22
22
|
|
data/lib/warder.rb
CHANGED
@@ -8,6 +8,7 @@ require 'warder/code_smells_runner'
|
|
8
8
|
require 'warder/code_complexity_runner'
|
9
9
|
require 'warder/rails_security_runner'
|
10
10
|
require 'warder/rails_advice_runner'
|
11
|
+
require 'warder/sandi_rules_runner'
|
11
12
|
require 'warder/bundle_audit_runner'
|
12
13
|
require 'warder/cli/arguments'
|
13
14
|
require 'warder/cli'
|
data/lib/warder/runner.rb
CHANGED
@@ -2,6 +2,7 @@ module Warder
|
|
2
2
|
# abstract class for command runners
|
3
3
|
class Runner
|
4
4
|
SCORE = 30
|
5
|
+
FAILURE_THRESHOLD = 0
|
5
6
|
|
6
7
|
def initialize(stdout, options = {})
|
7
8
|
@stdout = stdout
|
@@ -31,8 +32,9 @@ module Warder
|
|
31
32
|
end
|
32
33
|
|
33
34
|
def failed?(line)
|
34
|
-
|
35
|
-
match
|
35
|
+
klass = self.class
|
36
|
+
match = klass::FAILURE_REGEXP.match(line)
|
37
|
+
match && match[1].to_i != klass::FAILURE_THRESHOLD
|
36
38
|
end
|
37
39
|
|
38
40
|
def printable?(*)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Warder
|
2
|
+
# responsible for run Sandi Metz rules validation
|
3
|
+
class SandiRulesRunner < Runner
|
4
|
+
CLI_OPTION = 'r'
|
5
|
+
CLI_FULL_OPTION = 'sandi-rules'
|
6
|
+
DESCRIPTION = 'Run Sandi Metz rules validation'
|
7
|
+
COMMAND_NAME = 'sandi_meter'
|
8
|
+
FAILURE_REGEXP = /\d\. (\d+)%/
|
9
|
+
FAILURE_THRESHOLD = 100
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def command_with_options
|
14
|
+
path = @options.files.split(' ').first
|
15
|
+
"#{COMMAND_NAME} -d -p #{path}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/warder/version.rb
CHANGED
@@ -4,6 +4,12 @@ class ApplicationController < ActionController::Base
|
|
4
4
|
protect_from_forgery with: :exception
|
5
5
|
|
6
6
|
def welcome
|
7
|
-
|
7
|
+
@user = User.new(params[:first_name], params[:last_name], params[:email], params[:password], params[:password_confirmation])
|
8
|
+
if @user
|
9
|
+
@logged_in = true
|
10
|
+
render text: "Hello #{@user.full_name}!"
|
11
|
+
else
|
12
|
+
render text: "Hello Anonymous!"
|
13
|
+
end
|
8
14
|
end
|
9
15
|
end
|
data/warder.gemspec
CHANGED
@@ -26,8 +26,8 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_dependency 'mago'
|
27
27
|
spec.add_dependency 'brakeman'
|
28
28
|
spec.add_dependency 'rails_best_practices'
|
29
|
+
spec.add_dependency 'sandi_meter'
|
29
30
|
spec.add_dependency 'bundler-audit'
|
30
|
-
# spec.add_dependency 'sandi_meter'
|
31
31
|
|
32
32
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
33
33
|
spec.add_development_dependency 'rake'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: warder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yura Tolstik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: sandi_meter
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: bundler-audit
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -238,6 +252,7 @@ files:
|
|
238
252
|
- cucumber.yml
|
239
253
|
- features/checks_for_rails_best_practices.feature
|
240
254
|
- features/checks_for_rails_security_issues.feature
|
255
|
+
- features/checks_for_sandi_metz_rules.feature
|
241
256
|
- features/checks_for_vulnerable_gems.feature
|
242
257
|
- features/detects_code_complexity.feature
|
243
258
|
- features/detects_code_duplication.feature
|
@@ -247,6 +262,7 @@ files:
|
|
247
262
|
- features/show_version.feature
|
248
263
|
- features/step_definitions/checks_for_rails_best_practices_steps.rb
|
249
264
|
- features/step_definitions/checks_for_rails_security_issues_steps.rb
|
265
|
+
- features/step_definitions/checks_for_sandi_metz_rules_step.rb
|
250
266
|
- features/step_definitions/checks_for_vulnerable_gems_steps.rb
|
251
267
|
- features/step_definitions/detects_code_complexity_steps.rb
|
252
268
|
- features/step_definitions/detects_code_duplication_steps.rb
|
@@ -268,6 +284,7 @@ files:
|
|
268
284
|
- lib/warder/rails_advice_runner.rb
|
269
285
|
- lib/warder/rails_security_runner.rb
|
270
286
|
- lib/warder/runner.rb
|
287
|
+
- lib/warder/sandi_rules_runner.rb
|
271
288
|
- lib/warder/style_guide_runner.rb
|
272
289
|
- lib/warder/version.rb
|
273
290
|
- spec/fixtures/invalid_Gemfile
|
@@ -279,6 +296,7 @@ files:
|
|
279
296
|
- spec/fixtures/invalid_rails_app/Gemfile
|
280
297
|
- spec/fixtures/invalid_rails_app/Rakefile
|
281
298
|
- spec/fixtures/invalid_rails_app/app/controllers/application_controller.rb
|
299
|
+
- spec/fixtures/invalid_rails_app/app/models/user.rb
|
282
300
|
- spec/fixtures/invalid_rails_app/app/views/layouts/application.html.erb
|
283
301
|
- spec/fixtures/invalid_rails_app/config.ru
|
284
302
|
- spec/fixtures/invalid_rails_app/config/application.rb
|
@@ -352,6 +370,7 @@ summary: Warder of ruby code
|
|
352
370
|
test_files:
|
353
371
|
- features/checks_for_rails_best_practices.feature
|
354
372
|
- features/checks_for_rails_security_issues.feature
|
373
|
+
- features/checks_for_sandi_metz_rules.feature
|
355
374
|
- features/checks_for_vulnerable_gems.feature
|
356
375
|
- features/detects_code_complexity.feature
|
357
376
|
- features/detects_code_duplication.feature
|
@@ -361,6 +380,7 @@ test_files:
|
|
361
380
|
- features/show_version.feature
|
362
381
|
- features/step_definitions/checks_for_rails_best_practices_steps.rb
|
363
382
|
- features/step_definitions/checks_for_rails_security_issues_steps.rb
|
383
|
+
- features/step_definitions/checks_for_sandi_metz_rules_step.rb
|
364
384
|
- features/step_definitions/checks_for_vulnerable_gems_steps.rb
|
365
385
|
- features/step_definitions/detects_code_complexity_steps.rb
|
366
386
|
- features/step_definitions/detects_code_duplication_steps.rb
|
@@ -380,6 +400,7 @@ test_files:
|
|
380
400
|
- spec/fixtures/invalid_rails_app/Gemfile
|
381
401
|
- spec/fixtures/invalid_rails_app/Rakefile
|
382
402
|
- spec/fixtures/invalid_rails_app/app/controllers/application_controller.rb
|
403
|
+
- spec/fixtures/invalid_rails_app/app/models/user.rb
|
383
404
|
- spec/fixtures/invalid_rails_app/app/views/layouts/application.html.erb
|
384
405
|
- spec/fixtures/invalid_rails_app/config.ru
|
385
406
|
- spec/fixtures/invalid_rails_app/config/application.rb
|