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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b03990a126c35737b97b3150aa66006778a705a6
4
- data.tar.gz: 87f1978be044393d4036df203d358ca1c98b9bb4
3
+ metadata.gz: 8fc3f7ef42e9897e30fe070ae20376ec610ef3e4
4
+ data.tar.gz: f8d04d91d316a1bd1b6b6318cb9d04231a00b8f5
5
5
  SHA512:
6
- metadata.gz: ca3a0d169d92a065fe327d9b0db4fcaed69203d717b0258eedc4a6787900511039bfb0e011c65b0d75bb37fe3e22ee2427fcfa3f77b7f58966720d835502b315
7
- data.tar.gz: db3a88db71e0142b8bc2f4a899cda5e90abe47b58ef7a54df085b5c5f240d29ad8ad2a090ed0c805320488a1d2aff0b37585479ca6050cdfdeb1bd68146784d4
6
+ metadata.gz: b00b71994d9e5af8d39cf5634bb91c80c26ae7a9554f93c96c807b3839ba9104e41571081abde3cee0cdef33c1662feae0bff756829bb9455aa13522595a5efc
7
+ data.tar.gz: d8105384af5092c059ae96aa48f207f07355704061da94af94a94b3ee8f46e04e76b0298a46bdc732322ab6f2cec803ba6827224a0b01861c7bbacf45adc7d17
@@ -1,5 +1,5 @@
1
- Feature: checks for rails related security issues
2
- In order to find security issues
1
+ Feature: checks for rails best practices advices
2
+ In order to get rails advices
3
3
  As a ruby developer
4
4
  I want to run warder with --rails-advice option
5
5
 
@@ -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
@@ -0,0 +1,7 @@
1
+ def executing_sandi_rules
2
+ "executing 'sandi_meter -d -p .'"
3
+ end
4
+
5
+ def sandi_rules_output
6
+ `cd tmp/aruba/#{@projectname}/ && sandi_meter -d -p .`
7
+ end
@@ -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
 
@@ -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'
@@ -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
- match = self.class::FAILURE_REGEXP.match(line)
35
- match && match[1].to_i != 0
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
@@ -1,4 +1,4 @@
1
1
  # define warder version
2
2
  module Warder
3
- VERSION = '0.1.4'
3
+ VERSION = '0.1.5'
4
4
  end
@@ -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
@@ -0,0 +1,5 @@
1
+ User < Struct.new(:first_name, :last_name, :email, :password, :password_confirmation) do
2
+ def full_name
3
+ [first_name, last_name].join(' ')
4
+ end
5
+ end
@@ -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
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 00:00:00.000000000 Z
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