jefferies_tube 1.5.4 → 1.6.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8ddb970be7c5d3d44e2df2171455ce27685435dd61330cb692002097271496d1
4
- data.tar.gz: 6b8a796088c566761a11a8b1f2ec5214884eed1d9c51159d0aca7f11a55b872d
3
+ metadata.gz: c3b056a2c0b9ee8bcb7ecaaf899f82d88b1a52c33f74cf8f5cf22f7f68ab0d56
4
+ data.tar.gz: 8405310071c85499a98ca7b252b11948a7c43689bc6b963882872055a99194f0
5
5
  SHA512:
6
- metadata.gz: fa431cb07c4d1abf50390ac2e65879c1e6a8cb57dfa711bc02f46ba389d7e7d58631faebb217c5ca919db5136d63e0ba0ae0ff115f90760ae46cc4f0c0243fb4
7
- data.tar.gz: 313293998aaaecaf4e0d94f0c1437ae50f3369ee8a3db6d2220a8cc7c0aeb80040bf38bf5aeb055e5530ea5fa2ba2b40443b399138671238f5161da6d039cd20
6
+ metadata.gz: 4e640a33fc2daf49ec3597df69c647dcef861b08064e85f9cea2c2bd9ae2dac43c827d067ae9a905c02741f014c24b2b1fbcb17c2e54f011d5241af754b3910d
7
+ data.tar.gz: 6f45029f4af0afe9ac4eac7133411ed6fee0438973d2b0062857cd7dafa9a01a71d743bad15d719176bb527cce334345f2f7b0fc0cda0de9ec2d32a376e14af1
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.1.0
1
+ 3.1.1
data/CHANGELOG.md CHANGED
@@ -6,6 +6,12 @@ This project attempts to follow [semantic versioning](https://semver.org/)
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## 1.6.2
10
+ Make sure simplecov still generates the HTML report
11
+ ## 1.6.1
12
+ Silence debugger logs
13
+ ## 1.6.0
14
+ Default rake task that runs rspec with simlecov and rubocop!
9
15
  ## 1.5.4
10
16
  Fix a bug in the prompt if Pry is present.
11
17
  ## 1.5.3
data/README.md CHANGED
@@ -26,7 +26,7 @@ Or install it yourself as:
26
26
 
27
27
  JefferiesTube by default installs a catchall route that will render 404 for you and supress the rollbar error. This also allows you to create super easy custom error pages.
28
28
 
29
- Simple put a template in the parent app in `app/views/errors/404.haml` (or html or erb, etc) and it will be rendered instead of the default Jefferies tube error.
29
+ Simple put a template in the parent app in `app/views/errors/404.haml` (or html or erb, etc) and it will be rendered instead of the default JefferiesTube error.
30
30
 
31
31
  #### 500 handling
32
32
 
@@ -182,6 +182,47 @@ JefferiesTube.configure do |config|
182
182
  end
183
183
  ```
184
184
 
185
+ ### Default Rake Tasks
186
+ JefferiesTube sets up the default rake task to run rspec with simplecov, then rubocop. Everything should be configued to the default automatically. All you need to do is run `rake`!
187
+
188
+ ### Simplecov
189
+ JefferiesTube configures Simplecov to check for coverage based solely on groups, not on the overall project. This is to ensure that important/easy files are covered and unimportant files can be untested without causing the total percentage to go down. If you override the required test coverage, warnings will show if you do not match the JefferiesTube default. The default required test coverage is as follows:
190
+
191
+ ```
192
+ 'Controllers' => 10,
193
+ 'API Controllers' => 100,
194
+ 'Models' => 100,
195
+ 'Services' => 100,
196
+ 'Helpers' => 10,
197
+ 'Policies' => 100,
198
+ 'Jobs' => 100,
199
+ 'Mailers' => 0,
200
+ 'Libraries' => 0,
201
+ 'Plugins' => 0,
202
+ 'Ungrouped' => 10
203
+ ```
204
+
205
+ and can be overrided by setting `JefferiesTube::Coverage.required_coverage` in an initializer.
206
+
207
+ ```
208
+ JefferiesTube::Coverage.required_coverage = {
209
+ 'Controllers' => 0,
210
+ 'API Controllers' => 0,
211
+ 'Models' => 0,
212
+ 'Services' => 0,
213
+ 'Helpers' => 0,
214
+ 'Policies' => 0,
215
+ 'Jobs' => 0,
216
+ 'Mailers' => 0,
217
+ 'Libraries' => 0,
218
+ 'Plugins' => 0,
219
+ 'Ungrouped' => 0
220
+ }
221
+ ```
222
+
223
+ ## Rubocop
224
+ Our Rubocop rules are built from the ground up to ensure the rules are all "actually good"! The first time you run `rake` JT will create a .rubocop.yml configuration file that inherits all the rules from JT. You can add/modify that file if you need to customize the rules for your project.
225
+
185
226
  ## Contributing
186
227
 
187
228
  1. Fork it ( http://github.com/<my-github-username>/jefferies_tube/fork )
data/default.yml ADDED
@@ -0,0 +1,5 @@
1
+ AllCops:
2
+ DisabledByDefault: true
3
+ SuggestExtensions: false
4
+ Layout/LineLength:
5
+ Max: 200
@@ -26,4 +26,6 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency "bundler-audit", '~> 0.9.0'
28
28
  spec.add_dependency "pry", '~> 0.13'
29
+ spec.add_dependency 'rubocop', '~> 1.26'
30
+ spec.add_dependency 'simplecov'
29
31
  end
@@ -0,0 +1,3 @@
1
+ inherit_gem:
2
+ jefferies_tube:
3
+ - default.yml
@@ -0,0 +1,71 @@
1
+ require 'simplecov'
2
+ SimpleCov.start do
3
+ add_filter '/test/'
4
+ add_filter '/config/'
5
+
6
+ formatter SimpleCov::Formatter::HTMLFormatter
7
+
8
+ add_group 'Controllers' do |src_file|
9
+ src_file.filename.include?('app/controllers') && !src_file.filename.include?('api')
10
+ end
11
+ add_group 'API Controllers' do |src_file|
12
+ src_file.filename.include?('app/controllers') && src_file.filename.include?('api')
13
+ end
14
+ add_group 'Models', 'app/models'
15
+ add_group 'Services', 'app/services'
16
+ add_group 'Helpers', 'app/helpers'
17
+ add_group 'Policies', 'app/policies'
18
+ add_group 'Jobs', 'app/jobs'
19
+ add_group 'Mailers', 'app/mailers'
20
+ add_group 'Libraries', 'lib'
21
+ add_group 'Plugins', 'vendor/plugins'
22
+ end
23
+ SimpleCov.at_exit do
24
+ SimpleCov.result.format!
25
+ ideal_coverage = {
26
+ 'Controllers' => 10,
27
+ 'API Controllers' => 100,
28
+ 'Models' => 100,
29
+ 'Services' => 100,
30
+ 'Helpers' => 10,
31
+ 'Policies' => 100,
32
+ 'Jobs' => 100,
33
+ 'Mailers' => 0,
34
+ 'Libraries' => 0,
35
+ 'Plugins' => 0,
36
+ 'Ungrouped' => 10
37
+ }
38
+ required_coverage = JefferiesTube::Coverage.required_coverage
39
+ overall_failed = false
40
+ output = "=====================Test Coverage=====================\n"
41
+ output << "Group Files Current / Required (Ideal)\n"
42
+ SimpleCov.result.groups.each do |name, group|
43
+ next if group.size.zero?
44
+ failed = false
45
+ warning = false
46
+ if group.covered_percent.round(2) < ideal_coverage[name]
47
+ warning = true
48
+ end
49
+ if group.covered_percent.round(2) < required_coverage[name]
50
+ warning = false
51
+ failed = true
52
+ overall_failed = true
53
+ end
54
+ color = if failed
55
+ "\e[31m"
56
+ elsif warning
57
+ "\e[33m"
58
+ else
59
+ "\e[32m"
60
+ end
61
+ files = "Files: #{group.size}".ljust(11)
62
+ current = "#{group.covered_percent.round(2)}%".ljust(7)
63
+ required = "#{required_coverage[name]}%".ljust(8)
64
+ output << "#{color}#{name.ljust(16)} #{files} #{current} / #{required} (#{ideal_coverage[name]}%)\e[0m\n"
65
+ end
66
+ output += "\n"
67
+ puts output
68
+ if overall_failed
69
+ exit(SimpleCov::ExitCodes::MINIMUM_COVERAGE)
70
+ end
71
+ end
@@ -0,0 +1,25 @@
1
+ module JefferiesTube::Coverage
2
+ def self.default_converage
3
+ {
4
+ 'Controllers' => 10,
5
+ 'API Controllers' => 100,
6
+ 'Models' => 100,
7
+ 'Services' => 100,
8
+ 'Helpers' => 10,
9
+ 'Policies' => 100,
10
+ 'Jobs' => 100,
11
+ 'Mailers' => 0,
12
+ 'Libraries' => 0,
13
+ 'Plugins' => 0,
14
+ 'Ungrouped' => 10
15
+ }
16
+ end
17
+
18
+ def self.required_coverage=(hash)
19
+ @required_coverage = hash
20
+ end
21
+
22
+ def self.required_coverage
23
+ self.default_converage.merge(@required_coverage || {})
24
+ end
25
+ end
@@ -1,5 +1,6 @@
1
1
  require 'jefferies_tube'
2
2
  require 'jefferies_tube/console'
3
+ require 'jefferies_tube/coverage'
3
4
  require 'rails'
4
5
 
5
6
  module JefferiesTube
@@ -67,5 +68,36 @@ module JefferiesTube
67
68
  end
68
69
  end
69
70
  end
71
+
72
+ initializer "create default rubocop config if missing" do |config|
73
+ default_rubocop = File.join(File.dirname(__FILE__), "config", "rubocop_default.yml")
74
+ rubocop_path = ::Rails.root.join ".rubocop.yml"
75
+ if !File.file?(rubocop_path)
76
+ FileUtils::cp(default_rubocop, rubocop_path)
77
+ end
78
+ end
79
+
80
+ initializer 'load simplecov for tests' do |config|
81
+ if ::Rails.env.test?
82
+ simplecov_config = 'config/simplecov.rb'
83
+ require_relative simplecov_config
84
+ end
85
+ end
86
+
87
+ rake_tasks do
88
+ Rake.application['default'].clear
89
+ task default: :spec
90
+ require 'rubocop/rake_task'
91
+
92
+ if Object.const_defined?("DEBUGGER__")
93
+ DEBUGGER__.class_eval do
94
+ def self.warn(msg)
95
+ end
96
+ end
97
+ end
98
+
99
+ RuboCop::RakeTask.new(:rubocop)
100
+ task default: :rubocop
101
+ end
70
102
  end
71
103
  end
@@ -1,7 +1,7 @@
1
1
  require 'open-uri'
2
2
 
3
3
  module JefferiesTube
4
- VERSION = "1.5.4"
4
+ VERSION = "1.6.2"
5
5
 
6
6
  def self.latest_rubygems_version
7
7
  JSON.parse(URI.parse("https://rubygems.org/api/v1/versions/jefferies_tube/latest.json").read)["version"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jefferies_tube
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.4
4
+ version: 1.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Samson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-11 00:00:00.000000000 Z
11
+ date: 2022-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -108,6 +108,34 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0.13'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.26'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.26'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
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'
111
139
  description: Useful tools for Rails.
112
140
  email:
113
141
  - brian@tenforwardconsulting.com
@@ -132,6 +160,7 @@ files:
132
160
  - app/views/errors/404.json.jbuilder
133
161
  - app/views/errors/404.xml
134
162
  - app/views/errors/500.haml
163
+ - default.yml
135
164
  - jefferies_tube.gemspec
136
165
  - lib/jefferies_tube.rb
137
166
  - lib/jefferies_tube/access_token.rb
@@ -143,7 +172,10 @@ files:
143
172
  - lib/jefferies_tube/capistrano/rails.rb
144
173
  - lib/jefferies_tube/capistrano/s3_assets.rb
145
174
  - lib/jefferies_tube/capistrano/ssh.rb
175
+ - lib/jefferies_tube/config/rubocop_default.yml
176
+ - lib/jefferies_tube/config/simplecov.rb
146
177
  - lib/jefferies_tube/console.rb
178
+ - lib/jefferies_tube/coverage.rb
147
179
  - lib/jefferies_tube/custom_prompts.irbrc.rb
148
180
  - lib/jefferies_tube/database_backup.rb
149
181
  - lib/jefferies_tube/database_backup_adapter.rb