coverband 5.0.0.rc.8 → 5.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/Gemfile.rails4 +2 -0
- data/Gemfile.rails6 +2 -0
- data/LICENSE.txt +1 -1
- data/README.md +69 -48
- data/changes.md +28 -5
- data/lib/coverband/adapters/base.rb +5 -1
- data/lib/coverband/adapters/file_store.rb +1 -1
- data/lib/coverband/adapters/redis_store.rb +1 -1
- data/lib/coverband/collectors/view_tracker.rb +16 -7
- data/lib/coverband/reporters/console_report.rb +2 -8
- data/lib/coverband/reporters/web.rb +2 -1
- data/lib/coverband/utils/railtie.rb +14 -9
- data/lib/coverband/utils/tasks.rb +1 -1
- data/lib/coverband/version.rb +1 -1
- data/test/coverband/reporters/web_test.rb +36 -2
- data/test/forked/rails_full_stack_test.rb +1 -1
- data/test/forked/rails_full_stack_views_test.rb +51 -0
- data/test/forked/rails_view_tracker_stack_test.rb +44 -0
- data/test/rails4_dummy/app/controllers/dummy_view_controller.rb +16 -0
- data/test/rails4_dummy/app/views/dummy_view/show.html.erb +5 -0
- data/test/rails4_dummy/app/views/dummy_view/show_haml.html.haml +4 -0
- data/test/rails4_dummy/app/views/dummy_view/show_slim.html.slim +4 -0
- data/test/rails4_dummy/config/application.rb +1 -0
- data/test/rails4_dummy/config/routes.rb +3 -0
- data/test/rails5_dummy/app/controllers/dummy_view_controller.rb +16 -0
- data/test/rails5_dummy/app/views/dummy_view/show.html.erb +5 -0
- data/test/rails5_dummy/app/views/dummy_view/show_haml.html.haml +4 -0
- data/test/rails5_dummy/app/views/dummy_view/show_slim.html.slim +4 -0
- data/test/rails5_dummy/config/application.rb +2 -0
- data/test/rails5_dummy/config/coverband.rb +3 -1
- data/test/rails5_dummy/config/routes.rb +3 -0
- data/test/rails6_dummy/app/controllers/dummy_view_controller.rb +16 -0
- data/test/rails6_dummy/app/views/dummy_view/show.html.erb +5 -0
- data/test/rails6_dummy/app/views/dummy_view/show_haml.html.haml +4 -0
- data/test/rails6_dummy/app/views/dummy_view/show_slim.html.slim +4 -0
- data/test/rails6_dummy/config/application.rb +1 -0
- data/test/rails6_dummy/config/routes.rb +3 -0
- data/views/nav.erb +2 -2
- data/views/settings.erb +2 -2
- data/views/view_tracker.erb +2 -2
- metadata +33 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bbff118005d968f8d2158135273f108cbb9b867c9c13d783b5fb8a2220dd5540
|
4
|
+
data.tar.gz: bc7ec947e707d4feaf213a0559f110ae5d11a487ea370f5e9f6a1256c2799701
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af026a80339c3047c62c99c6ec47385288fc7a0fd1d295b646abffdd4b74ea48118f01b2caa2ef997d7dc8775ebc047ce9844189065148f82eaea10fb2bf2978
|
7
|
+
data.tar.gz: a4555a8209507c66efc7ba2432bb5b743cc45331fead66f038df9823a85e8a1bbf9401cd9b47a450cfd184ff399d429e193527df6745ec1770b0b0e08a863141
|
data/Gemfile
CHANGED
data/Gemfile.rails4
CHANGED
data/Gemfile.rails6
CHANGED
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
<p align="center">
|
11
11
|
<a href="#key-features">Key Features</a> •
|
12
12
|
<a href="#installation">Installation</a> •
|
13
|
-
<a href="#
|
13
|
+
<a href="#coverband-web-ui">Coverband Web UI</a> •
|
14
14
|
<a href="#advanced-config">Advanced Config</a> •
|
15
15
|
<a href="#license">License</a> •
|
16
16
|
<a href="/changes.md">Change Log / Roadmap</a> •
|
@@ -28,7 +28,7 @@ The primary goal of Coverband is giving deep insight into your production runtim
|
|
28
28
|
- Low performance overhead
|
29
29
|
- Simple setup and configuration
|
30
30
|
- Out of the box support for all standard code execution paths (web, cron, background jobs, rake tasks, etc)
|
31
|
-
- Splits load time (Rails eager load) and
|
31
|
+
- Splits load time (Rails eager load) and runtime metrics
|
32
32
|
- Easy to understand actionable insights from the report
|
33
33
|
- Development mode, offers deep insight of code usage details (number of LOC execution during single request, etc) during development.
|
34
34
|
- Mountable web interface to easily share reports
|
@@ -41,7 +41,7 @@ Coverband stores coverage data in Redis. The Redis endpoint is looked for in thi
|
|
41
41
|
|
42
42
|
1. `ENV['COVERBAND_REDIS_URL']`
|
43
43
|
2. `ENV['REDIS_URL']`
|
44
|
-
3. `localhost`
|
44
|
+
3. `localhost:6379`
|
45
45
|
|
46
46
|
The redis store can also be explicitly defined within the coverband.rb. See [advanced config](#advanced-config).
|
47
47
|
|
@@ -53,8 +53,6 @@ Add this line to your application's `Gemfile`, remember to `bundle install` afte
|
|
53
53
|
gem 'coverband'
|
54
54
|
```
|
55
55
|
|
56
|
-
## Upgrading to Latest
|
57
|
-
|
58
56
|
### No custom code or middleware required
|
59
57
|
|
60
58
|
With older versions of coverband, projects would report to redis using rack or sidekiq middleware. After coverband 4.0, this should no longer be required and could cause performance issues. Reporting to redis is now automatically done within a background thread with no custom code needed.
|
@@ -67,7 +65,7 @@ The Railtie integration means you shouldn't need to do anything else other than
|
|
67
65
|
|
68
66
|
## Sinatra
|
69
67
|
|
70
|
-
For the best coverage you want this loaded as early as possible.
|
68
|
+
For the best coverage you want this loaded as early as possible. We recommend requiring cover band directly in the `config.ru`. Requiring coverband within an initializer could also work, but you may end up missing some boot up coverage. To start collection require Coverband as early as possible.
|
71
69
|
|
72
70
|
```ruby
|
73
71
|
require 'coverband'
|
@@ -77,7 +75,33 @@ use Coverband::BackgroundMiddleware
|
|
77
75
|
run ActionController::Dispatcher.new
|
78
76
|
```
|
79
77
|
|
80
|
-
|
78
|
+
## Coverband Web UI
|
79
|
+
|
80
|
+
![image](https://raw.github.com/danmayer/coverband/master/docs/coverband_web_ui.png)
|
81
|
+
|
82
|
+
> The web index as available on the [Coverband Demo site](https://coverband-demo.herokuapp.com/coverage?#_Coverage)
|
83
|
+
|
84
|
+
- View overall coverage information
|
85
|
+
|
86
|
+
- Drill into individual file coverage
|
87
|
+
|
88
|
+
- View individual file details
|
89
|
+
|
90
|
+
- Clear Coverage - disabled by default as it could be considered a dangerous operation in production. Enable with `config.web_enable_clear` or leave off and clear from [rake task](#clear-coverage).
|
91
|
+
|
92
|
+
- Clear coverage report
|
93
|
+
|
94
|
+
This will clear the coverage data. This wipes out all collected data.
|
95
|
+
|
96
|
+
- Clear individual file coverage
|
97
|
+
|
98
|
+
This will clear the details of the file you are looking at. This is helpful if you don't want to lose all Coverage data but made a change that you expect would impact a particular file.
|
99
|
+
|
100
|
+
- Force coverage collection
|
101
|
+
|
102
|
+
This triggers coverage collection on the current webserver process. Useful in development but confusing in production environments where many ruby processes are usually running.
|
103
|
+
|
104
|
+
### Mounting as a Rack App
|
81
105
|
|
82
106
|
Coverband comes with a mountable rack app for viewing reports. For Rails this can be done in `config/routes.rb` with:
|
83
107
|
|
@@ -97,49 +121,29 @@ Rails.application.routes.draw do
|
|
97
121
|
end
|
98
122
|
```
|
99
123
|
|
100
|
-
or you can enable basic auth by setting `ENV['COVERBAND_PASSWORD']` or via your configuration `config.password =
|
124
|
+
or you can enable basic auth by setting `ENV['COVERBAND_PASSWORD']` or via your configuration `config.password = <YOUR_COMPLEX_UNGUESSABLE_PASSWORD>`
|
101
125
|
|
102
|
-
###
|
126
|
+
### Standalone
|
103
127
|
|
104
|
-
The
|
128
|
+
The coverage server can also be started standalone with a rake task:
|
105
129
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
- **force coverage collection:** This triggers coverage collection on the current webserver process
|
111
|
-
- **clear coverage report:** This will clear the coverage data. This wipes out all collected data (**dangerous**)
|
112
|
-
- View individual file details
|
113
|
-
- **clear individual file coverage:** This will clear the details of the file you are looking at. This is helpful if you don't want to lose all Coverage data but made a change that you expect would impact a particular file.
|
114
|
-
|
115
|
-
### JRuby Support
|
116
|
-
|
117
|
-
Coverband is compatible with JRuby. If you want to run on JRuby note that I haven't benchmarked and I believe the perf impact on older versions of JRuby could be significant, improved Coverage support is in [JRuby master](https://github.com/jruby/jruby/pull/6180), and will be in the next release.
|
118
|
-
|
119
|
-
- older versions of JRuby need tracing enabled to work (and this could cause bad performance)
|
120
|
-
- run Jruby with the `--debug` option
|
121
|
-
- add into your `.jrubyrc` the `debug.fullTrace=true` setting
|
122
|
-
- For best performance the `oneshot_lines` is recommended, and in the latest releases should have very low overhead
|
123
|
-
- See JRuby support in a Rails app configured to run via JRuby, in [Coverband Demo](https://github.com/coverband-service/coverband_demo)
|
124
|
-
- JRuby is tested via CI against Rails 5 and 6
|
125
|
-
|
126
|
-
### Rake Tasks
|
127
|
-
|
128
|
-
The rake task generates a report locally and opens a browser pointing to `coverage/index.html`.
|
129
|
-
|
130
|
-
`rake coverband:coverage`
|
130
|
+
```
|
131
|
+
bundle exec rake coverband:coverage_server
|
132
|
+
```
|
131
133
|
|
132
|
-
|
134
|
+
The web UI should then be available here: http://localhost:9022/
|
133
135
|
|
134
|
-
|
136
|
+
If you want to run on an alternative port:
|
135
137
|
|
136
|
-
|
138
|
+
```
|
139
|
+
COVERBAND_COVERAGE_PORT=8086 bundle exec rake coverband:coverage_server
|
140
|
+
```
|
137
141
|
|
138
|
-
|
139
|
-
![image](https://raw.github.com/danmayer/coverband/master/docs/coverband_index.png)
|
142
|
+
This is especially useful for projects that are api only and cannot support the mounted rack app. To get production coverage, point coverband at your production redis server and ensure to checkout the production version of your project code locally.
|
140
143
|
|
141
|
-
|
142
|
-
|
144
|
+
```
|
145
|
+
COVERBAND_REDIS_URL=redis://username:password:redis_production_server:2322 bundle exec rake coverband:coverage_server
|
146
|
+
```
|
143
147
|
|
144
148
|
# Coverband Demo
|
145
149
|
|
@@ -245,7 +249,7 @@ end
|
|
245
249
|
|
246
250
|
### Avoiding Cache Stampede
|
247
251
|
|
248
|
-
If you have many servers and they all hit Redis at the same time you can see spikes in your Redis CPU, and memory. This is do to a concept called [cache stampede](https://en.wikipedia.org/wiki/Cache_stampede). It is better to spread out the reporting across your servers. A simple way to do this is to add a random wiggle on your background reporting. This configuration option allows a wiggle. The right amount of wiggle depends on the numbers of servers you have and how willing you are to have delays in your coverage reporting. I would recommend at least 1 second per server.
|
252
|
+
If you have many servers and they all hit Redis at the same time you can see spikes in your Redis CPU, and memory. This is do to a concept called [cache stampede](https://en.wikipedia.org/wiki/Cache_stampede). It is better to spread out the reporting across your servers. A simple way to do this is to add a random wiggle on your background reporting. This configuration option allows a wiggle. The right amount of wiggle depends on the numbers of servers you have and how willing you are to have delays in your coverage reporting. I would recommend at least 1 second per server. Note, the default wiggle is set to 30 seconds.
|
249
253
|
|
250
254
|
Add a wiggle (in seconds) to the background thread to avoid all your servers reporting at the same time:
|
251
255
|
|
@@ -253,11 +257,12 @@ Add a wiggle (in seconds) to the background thread to avoid all your servers rep
|
|
253
257
|
|
254
258
|
### Redis Hash Store
|
255
259
|
|
256
|
-
Coverband on very high volume sites with many server processes reporting can have a race condition. To resolve the race condition and reduce Ruby memory overhead we have introduced a new Redis storage option. This moves the some of the work from the Ruby processes to Redis. It is worth noting because of this, it has a larger demands on the Redis server. So adjust your Redis instance accordingly. To help reduce the extra redis load you can also change the background reporting
|
260
|
+
Coverband on very high volume sites with many server processes reporting can have a race condition which can cause hit counts to be inaccurate. To resolve the race condition and reduce Ruby memory overhead we have introduced a new Redis storage option. This moves the some of the work from the Ruby processes to Redis. It is worth noting because of this, it has a larger demands on the Redis server. So adjust your Redis instance accordingly. To help reduce the extra redis load you can also change the background reporting frequency.
|
257
261
|
|
258
|
-
-
|
259
|
-
-
|
260
|
-
|
262
|
+
- Use a dedicated coverband redis instance: `config.store = Coverband::Adapters::HashRedisStore.new(Redis.new(url: redis_url))`
|
263
|
+
- Adjust from default 30s reporting `config.background_reporting_sleep_seconds = 120`
|
264
|
+
|
265
|
+
See more discussion [here](https://github.com/danmayer/coverband/issues/384).
|
261
266
|
|
262
267
|
### Clear Coverage
|
263
268
|
|
@@ -265,6 +270,8 @@ Now that Coverband uses MD5 hashes there should be no reason to manually clear c
|
|
265
270
|
|
266
271
|
`rake coverband:clear`
|
267
272
|
|
273
|
+
This can also be done through the web if `config.web_enable_clear` is enabled.
|
274
|
+
|
268
275
|
### Coverage Data Migration
|
269
276
|
|
270
277
|
Between the release of 4.0 and 4.1 our data format changed. This resets all your coverage data. If you want to restore your previous coverage data, feel free to migrate.
|
@@ -306,7 +313,7 @@ Coverband.start
|
|
306
313
|
|
307
314
|
### Verbose Debug / Development Mode
|
308
315
|
|
309
|
-
Note: To debug issues getting Coverband working. I recommend running in development mode, by turning verbose logging on `config.verbose = true` and passing in the Rails.logger `config.logger = Rails.logger` to the Coverband config. We respect the log level, and I would recommend log level info generally, but if you are investigating a
|
316
|
+
Note: To debug issues getting Coverband working. I recommend running in development mode, by turning verbose logging on `config.verbose = true` and passing in the Rails.logger `config.logger = Rails.logger` to the Coverband config. We respect the log level, and I would recommend log level info generally, but if you are investigating a problem Coverband logs additional data at the `debug` level. This makes it easy to follow in development mode. Be careful to not leave these on in production as they will affect performance.
|
310
317
|
|
311
318
|
---
|
312
319
|
|
@@ -339,6 +346,17 @@ We will match Heroku & Ruby's support lifetime, supporting the last 3 major Ruby
|
|
339
346
|
|
340
347
|
For Rails, we will follow the policy of the [Rails team maintenance policy](https://guides.rubyonrails.org/maintenance_policy.html). We officially support the last two major release versions, while providing minimal support (major bugs / security fixes) for an additional version. This means at the moment we primaryly target Rails 6.x, 5.x, and will try to keep current functionality working for Rails 4.x but may release new features that do not work on that target.
|
341
348
|
|
349
|
+
### JRuby Support
|
350
|
+
|
351
|
+
Coverband is compatible with JRuby. If you want to run on JRuby note that I haven't benchmarked and I believe the perf impact on older versions of JRuby could be significant. Improved Coverage support is in [JRuby master](https://github.com/jruby/jruby/pull/6180), and will be in the next release.
|
352
|
+
|
353
|
+
- older versions of JRuby need tracing enabled to work (and this could cause bad performance)
|
354
|
+
- run Jruby with the `--debug` option
|
355
|
+
- add into your `.jrubyrc` the `debug.fullTrace=true` setting
|
356
|
+
- For best performance the `oneshot_lines` is recommended, and in the latest releases should have very low overhead
|
357
|
+
- See JRuby support in a Rails app configured to run via JRuby, in [Coverband Demo](https://github.com/coverband-service/coverband_demo)
|
358
|
+
- JRuby is tested via CI against Rails 5 and 6
|
359
|
+
|
342
360
|
# Contributing To Coverband
|
343
361
|
|
344
362
|
If you are working on adding features, PRs, or bugfixes to Coverband this section should help get you going.
|
@@ -368,6 +386,9 @@ If you submit a change please make sure the tests and benchmarks are passing.
|
|
368
386
|
- related it will try to report something, but the line numbers reported for `ERB` files are often off and aren't considered useful. I recommend filtering out .erb using the `config.ignore` option. The default configuration excludes these files
|
369
387
|
- **NOTE:** We now have file level coverage for view files, but don't support line level detail
|
370
388
|
- The view file detection doesn't workf or mailers at the moment only for web related views / JSON templates. This is due to how Rails active mailer notifications work.
|
389
|
+
- **Coverage does NOT work when used alongside Scout APM Auto Instrumentation**
|
390
|
+
- In an environment that uses Scout's `AUTO_INSTRUMENT=true` (usually production or staging) it stops reporting any coverage, it will show one or two files that have been loaded at the start but everything else will show up as having 0% coverage
|
391
|
+
- Bug tracked here: https://github.com/scoutapp/scout_apm_ruby/issues/343
|
371
392
|
|
372
393
|
### Debugging Redis Store
|
373
394
|
|
data/changes.md
CHANGED
@@ -53,6 +53,27 @@ Will be the fully modern release that drops maintenance legacy support in favor
|
|
53
53
|
|
54
54
|
# Alpha / Beta / Release Candidates
|
55
55
|
|
56
|
+
### Coverband 5.0.4
|
57
|
+
|
58
|
+
- ?
|
59
|
+
|
60
|
+
# Released
|
61
|
+
|
62
|
+
### Coverband 5.0.3
|
63
|
+
|
64
|
+
- fix for non standard root paths for view_tracker thx @markshawtoronto
|
65
|
+
- support basic auth for Rack prior to 2.0 thx @kadru
|
66
|
+
|
67
|
+
### Coverband 5.0.2
|
68
|
+
|
69
|
+
- change default port of local server
|
70
|
+
- update on readme about issue with scout app, thanks @mrbongiolo
|
71
|
+
- fix on configuration page not loading when redis can't load
|
72
|
+
|
73
|
+
### Coverband 5.0.1
|
74
|
+
|
75
|
+
- fix for race condition on view tracker redis configuration setting ensuring it is set after it is configured... bug only impacted apps that have multiple redis connections for the same system and have Coverband not on the default REDIS_URL
|
76
|
+
|
56
77
|
### Coverband 5.0.0
|
57
78
|
|
58
79
|
- Full JRuby support
|
@@ -66,21 +87,23 @@ Will be the fully modern release that drops maintenance legacy support in favor
|
|
66
87
|
- all config options can be set via coverband config, not requiring ENV var support
|
67
88
|
- deprecation notices on soon to be removed config options
|
68
89
|
- config exceptions on invalid configuration combinations
|
90
|
+
- additional testing around configurations
|
91
|
+
- improved defaults and reduced configuration options
|
69
92
|
- improved resque patching pattern
|
70
93
|
- improved default ignores
|
71
94
|
- additional adapters
|
72
95
|
- supports web-service adapter for http coverage collection
|
73
96
|
- support log/file adapter
|
97
|
+
- extendable pattern to support any additional backends
|
74
98
|
- reduce logs / errors / alerts on bad startup configurations
|
99
|
+
- fix: #301 runtime vs eagerload should always remain correct
|
75
100
|
|
76
|
-
|
77
|
-
|
78
|
-
###Coverband 4.2.7
|
101
|
+
### Coverband 4.2.7
|
79
102
|
|
80
103
|
- Ignore patterns too aggressive #382, thanks @thijsnado
|
81
104
|
- Stack level too deep error when running certain activejob jobs #367, thanks @kejordan and @hanslauwers
|
82
105
|
|
83
|
-
###Coverband 4.2.6
|
106
|
+
### Coverband 4.2.6
|
84
107
|
|
85
108
|
- Address Redis exists deprecation warning by baffers
|
86
109
|
|
@@ -263,7 +286,7 @@ Will be a stable and fast release that drops maintenance legacy support in favor
|
|
263
286
|
- implemented for Redis and File store
|
264
287
|
- improved mountable web interface
|
265
288
|
|
266
|
-
|
289
|
+
### 2.0.3
|
267
290
|
|
268
291
|
- don''t include docs in the gemfile thanks @bquorning
|
269
292
|
- pipeline_redis to reduce network overhead thanks @Kallin
|
@@ -20,7 +20,7 @@ module Coverband
|
|
20
20
|
# files matching the path pattern, in this case `log/coverage.log.*`
|
21
21
|
#
|
22
22
|
# run: `bundle exec rake coverband:coverage_server`
|
23
|
-
# open http://localhost:
|
23
|
+
# open http://localhost:9022/
|
24
24
|
#
|
25
25
|
# one could also build a report via code, the output is suitable to feed into SimpleCov
|
26
26
|
#
|
@@ -10,22 +10,20 @@ module Coverband
|
|
10
10
|
# This is a port of Flatfoot, a project I open sourced years ago,
|
11
11
|
# but am now rolling into Coverband
|
12
12
|
# https://github.com/livingsocial/flatfoot
|
13
|
-
#
|
14
|
-
# TODO: test and ensure slim, haml, and other support
|
15
13
|
###
|
16
14
|
class ViewTracker
|
17
|
-
DEFAULT_TARGET = Dir.glob("app/views/**/*.html.erb").reject { |file| file.match(/(_mailer)/) }
|
18
15
|
attr_accessor :target, :logged_views, :views_to_record
|
19
16
|
attr_reader :logger, :roots, :store, :ignore_patterns
|
20
17
|
|
21
18
|
def initialize(options = {})
|
22
19
|
raise NotImplementedError, "View Tracker requires Rails 4 or greater" unless self.class.supported_version?
|
20
|
+
raise "Coverband: view tracker initialized before configuration!" if !Coverband.configured? && ENV["COVERBAND_TEST"] == "test"
|
23
21
|
|
24
22
|
@project_directory = File.expand_path(Coverband.configuration.root)
|
25
23
|
@ignore_patterns = Coverband.configuration.ignore
|
26
24
|
@store = options.fetch(:store) { Coverband.configuration.store }
|
27
25
|
@logger = options.fetch(:logger) { Coverband.configuration.logger }
|
28
|
-
@target = options.fetch(:target) {
|
26
|
+
@target = options.fetch(:target) { Dir.glob("#{@project_directory}/app/views/**/*.html.{erb,haml,slim}").reject { |file| file.match(/(_mailer)/) }.freeze }
|
29
27
|
|
30
28
|
@roots = options.fetch(:roots) { Coverband.configuration.all_root_patterns }
|
31
29
|
@roots = @roots.split(",") if @roots.is_a?(String)
|
@@ -65,18 +63,29 @@ module Coverband
|
|
65
63
|
normalized_views = {}
|
66
64
|
views.each_pair do |view, time|
|
67
65
|
roots.each do |root|
|
68
|
-
view = view.gsub(
|
66
|
+
view = view.gsub(root, "")
|
69
67
|
end
|
70
68
|
normalized_views[view] = time
|
71
69
|
end
|
72
70
|
normalized_views
|
73
71
|
end
|
74
72
|
|
73
|
+
def all_views
|
74
|
+
all_views = []
|
75
|
+
target.each do |view|
|
76
|
+
roots.each do |root|
|
77
|
+
view = view.gsub(root, "")
|
78
|
+
end
|
79
|
+
all_views << view
|
80
|
+
end
|
81
|
+
all_views.uniq
|
82
|
+
end
|
83
|
+
|
75
84
|
def unused_views
|
76
85
|
recently_used_views = used_views.keys
|
77
|
-
|
86
|
+
unused_views = all_views.reject { |view| recently_used_views.include?(view) }
|
78
87
|
# since layouts don't include format we count them used if they match with ANY formats
|
79
|
-
|
88
|
+
unused_views.reject { |view| view.match(/\/layouts\//) && recently_used_views.any? { |used_view| view.include?(used_view) } }
|
80
89
|
end
|
81
90
|
|
82
91
|
def as_json
|
@@ -8,14 +8,8 @@ module Coverband
|
|
8
8
|
class ConsoleReport < Base
|
9
9
|
def self.report(store, options = {})
|
10
10
|
scov_style_report = super(store, options)
|
11
|
-
|
12
|
-
|
13
|
-
# TODO: In Coverband 5 deprecate none hash format
|
14
|
-
if usage.is_a?(Hash)
|
15
|
-
Coverband.configuration.logger.info "#{file}: #{usage["data"]}"
|
16
|
-
else
|
17
|
-
Coverband.configuration.logger.info "#{file}: #{usage}"
|
18
|
-
end
|
11
|
+
scov_style_report[:merged].each_pair do |file, usage|
|
12
|
+
Coverband.configuration.logger.info "#{file}: #{usage["data"]}"
|
19
13
|
end
|
20
14
|
scov_style_report
|
21
15
|
end
|
@@ -23,7 +23,8 @@ module Coverband
|
|
23
23
|
def check_auth
|
24
24
|
return true unless Coverband.configuration.password
|
25
25
|
|
26
|
-
|
26
|
+
# support rack 1.6.x and rack 2.0 (get_header)
|
27
|
+
auth_header = request.respond_to?(:get_header) ? request.get_header("HTTP_AUTHORIZATION") : request.env["HTTP_AUTHORIZATION"]
|
27
28
|
return unless auth_header
|
28
29
|
|
29
30
|
Coverband.configuration.password == Base64.decode64(auth_header.split[1]).split(":")[1]
|
@@ -13,7 +13,21 @@ module Coverband
|
|
13
13
|
initializer "coverband.configure" do |app|
|
14
14
|
begin
|
15
15
|
app.middleware.use Coverband::BackgroundMiddleware
|
16
|
+
rescue Redis::CannotConnectError => error
|
17
|
+
Coverband.configuration.logger.info "Redis is not available (#{error}), Coverband not configured"
|
18
|
+
Coverband.configuration.logger.info "If this is a setup task like assets:precompile feel free to ignore"
|
19
|
+
end
|
20
|
+
end
|
16
21
|
|
22
|
+
config.after_initialize do
|
23
|
+
unless Coverband.tasks_to_ignore?
|
24
|
+
Coverband.configure
|
25
|
+
Coverband.eager_loading_coverage!
|
26
|
+
Coverband.report_coverage
|
27
|
+
Coverband.runtime_coverage!
|
28
|
+
end
|
29
|
+
|
30
|
+
begin
|
17
31
|
if Coverband.configuration.track_views
|
18
32
|
COVERBAND_VIEW_TRACKER = if Coverband.coverband_service?
|
19
33
|
Coverband::Collectors::ViewTrackerService.new
|
@@ -33,15 +47,6 @@ module Coverband
|
|
33
47
|
end
|
34
48
|
end
|
35
49
|
|
36
|
-
config.after_initialize do
|
37
|
-
unless Coverband.tasks_to_ignore?
|
38
|
-
Coverband.configure
|
39
|
-
Coverband.eager_loading_coverage!
|
40
|
-
Coverband.report_coverage
|
41
|
-
Coverband.runtime_coverage!
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
50
|
config.before_configuration do
|
46
51
|
unless ENV["COVERBAND_DISABLE_AUTO_START"]
|
47
52
|
begin
|
@@ -13,7 +13,7 @@ namespace :coverband do
|
|
13
13
|
task :coverage_server do
|
14
14
|
Rake.application["environment"].invoke if Rake::Task.task_defined?("environment")
|
15
15
|
Coverband.configuration.store.merge_mode = true if Coverband.configuration.store.is_a?(Coverband::Adapters::FileStore)
|
16
|
-
Rack::Server.start app: Coverband::Reporters::Web.new, Port: ENV.fetch("COVERBAND_COVERAGE_PORT",
|
16
|
+
Rack::Server.start app: Coverband::Reporters::Web.new, Port: ENV.fetch("COVERBAND_COVERAGE_PORT", 9022).to_i
|
17
17
|
end
|
18
18
|
|
19
19
|
###
|
data/lib/coverband/version.rb
CHANGED
@@ -22,13 +22,13 @@ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.2.0")
|
|
22
22
|
test "renders index content" do
|
23
23
|
get "/"
|
24
24
|
assert last_response.ok?
|
25
|
-
assert_match "Coverband
|
25
|
+
assert_match "Coverband Home", last_response.body
|
26
26
|
end
|
27
27
|
|
28
28
|
test "renders index content for empty path" do
|
29
29
|
get ""
|
30
30
|
assert last_response.ok?
|
31
|
-
assert_match "Coverband
|
31
|
+
assert_match "Coverband Home", last_response.body
|
32
32
|
end
|
33
33
|
|
34
34
|
test "renders 404" do
|
@@ -43,4 +43,38 @@ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.2.0")
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
module Coverband
|
48
|
+
class AuthWebTest < Minitest::Test
|
49
|
+
include Rack::Test::Methods
|
50
|
+
|
51
|
+
def setup
|
52
|
+
super
|
53
|
+
@store = Coverband.configuration.store
|
54
|
+
Coverband.configure do |config|
|
55
|
+
config.password = "test_pass"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def app
|
60
|
+
Coverband::Reporters::Web.new
|
61
|
+
end
|
62
|
+
|
63
|
+
def teardown
|
64
|
+
super
|
65
|
+
end
|
66
|
+
|
67
|
+
test "renders index with basic auth" do
|
68
|
+
basic_authorize "anything", "test_pass"
|
69
|
+
get "/"
|
70
|
+
assert last_response.ok?
|
71
|
+
assert_match "Coverband Home", last_response.body
|
72
|
+
end
|
73
|
+
|
74
|
+
test "renders 401 auth error when not provided" do
|
75
|
+
get "/"
|
76
|
+
assert_equal 401, last_response.status
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
46
80
|
end
|
@@ -35,7 +35,7 @@ class RailsFullStackTest < Minitest::Test
|
|
35
35
|
end
|
36
36
|
|
37
37
|
# Test eager load data stored separately
|
38
|
-
dummy_controller = "./
|
38
|
+
dummy_controller = "./app/controllers/dummy_controller.rb"
|
39
39
|
store.type = :eager_loading
|
40
40
|
eager_expected = [1, 1, 0, nil, nil]
|
41
41
|
results = store.coverage[dummy_controller]["data"]
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path("../rails_test_helper", File.dirname(__FILE__))
|
4
|
+
|
5
|
+
class RailsFullStackTest < Minitest::Test
|
6
|
+
include Capybara::DSL
|
7
|
+
include Capybara::Minitest::Assertions
|
8
|
+
|
9
|
+
def setup
|
10
|
+
super
|
11
|
+
rails_setup
|
12
|
+
Coverband.report_coverage
|
13
|
+
end
|
14
|
+
|
15
|
+
def teardown
|
16
|
+
super
|
17
|
+
Capybara.reset_sessions!
|
18
|
+
Capybara.use_default_driver
|
19
|
+
end
|
20
|
+
|
21
|
+
test "verify erb haml slim support" do
|
22
|
+
visit "/dummy_view/show"
|
23
|
+
assert_content("I am no dummy view tracker text")
|
24
|
+
Coverband.report_coverage
|
25
|
+
Coverband.configuration.view_tracker&.report_views_tracked
|
26
|
+
visit "/coverage/view_tracker"
|
27
|
+
assert_content("Used Views: (1)")
|
28
|
+
assert_content("Unused Views: (2)")
|
29
|
+
assert_selector("li.used-views", text: "dummy_view/show.html.erb")
|
30
|
+
assert_selector("li.unused-views", text: "dummy_view/show_haml.html.haml")
|
31
|
+
assert_selector("li.unused-views", text: "dummy_view/show_slim.html.slim")
|
32
|
+
|
33
|
+
visit "/dummy_view/show_haml"
|
34
|
+
assert_content("I am haml text")
|
35
|
+
Coverband.report_coverage
|
36
|
+
Coverband.configuration.view_tracker&.report_views_tracked
|
37
|
+
visit "/coverage/view_tracker"
|
38
|
+
assert_content("Used Views: (2)")
|
39
|
+
assert_content("Unused Views: (1)")
|
40
|
+
assert_selector("li.used-views", text: "dummy_view/show_haml.html.haml")
|
41
|
+
|
42
|
+
visit "/dummy_view/show_slim"
|
43
|
+
assert_content("I am slim text")
|
44
|
+
Coverband.report_coverage
|
45
|
+
Coverband.configuration.view_tracker&.report_views_tracked
|
46
|
+
visit "/coverage/view_tracker"
|
47
|
+
assert_content("Used Views: (3)")
|
48
|
+
assert_content("Unused Views: (0)")
|
49
|
+
assert_selector("li.used-views", text: "dummy_view/show_slim.html.slim")
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path("../rails_test_helper", File.dirname(__FILE__))
|
4
|
+
|
5
|
+
class RailsWithoutConfigStackTest < Minitest::Test
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
setup_server
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
super
|
13
|
+
shutdown_server
|
14
|
+
end
|
15
|
+
|
16
|
+
test "check view tracker" do
|
17
|
+
output = `sleep 7 && curl http://localhost:9999/dummy_view/show`
|
18
|
+
assert output.match(/rendered view/)
|
19
|
+
assert output.match(/I am no dummy view tracker text/)
|
20
|
+
output = `sleep 1 && curl http://localhost:9999/coverage/view_tracker`
|
21
|
+
assert output.match(/Used Views: \(1\)/)
|
22
|
+
assert output.match(/dummy_view\/show/)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
# NOTE: We aren't leveraging Capybara because it loads all of our other test helpers and such,
|
28
|
+
# which in turn Configures coverband making it impossible to test the configuration error
|
29
|
+
def setup_server
|
30
|
+
ENV["RAILS_ENV"] = "test"
|
31
|
+
require "rails"
|
32
|
+
fork do
|
33
|
+
exec "cd test/rails#{Rails::VERSION::MAJOR}_dummy && COVERBAND_TEST=test bundle exec rackup config.ru -p 9999 --pid /tmp/testrack.pid"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def shutdown_server
|
38
|
+
if File.exist?("/tmp/testrack.pid")
|
39
|
+
pid = `cat /tmp/testrack.pid`&.strip&.to_i
|
40
|
+
Process.kill("HUP", pid)
|
41
|
+
sleep 1
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class DummyViewController < ActionController::Base
|
2
|
+
def show
|
3
|
+
@text = "I am no dummy view tracker text"
|
4
|
+
render layout: false
|
5
|
+
end
|
6
|
+
|
7
|
+
def show_haml
|
8
|
+
@text = "I am haml text"
|
9
|
+
render layout: false
|
10
|
+
end
|
11
|
+
|
12
|
+
def show_slim
|
13
|
+
@text = "I am slim text"
|
14
|
+
render layout: false
|
15
|
+
end
|
16
|
+
end
|
@@ -1,4 +1,7 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
2
|
get "dummy/show"
|
3
|
+
get "dummy_view/show", to: "dummy_view#show"
|
4
|
+
get "dummy_view/show_haml", to: "dummy_view#show_haml"
|
5
|
+
get "dummy_view/show_slim", to: "dummy_view#show_slim"
|
3
6
|
mount Coverband::Reporters::Web.new, at: "/coverage"
|
4
7
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class DummyViewController < ActionController::Base
|
2
|
+
def show
|
3
|
+
@text = "I am no dummy view tracker text"
|
4
|
+
render layout: false
|
5
|
+
end
|
6
|
+
|
7
|
+
def show_haml
|
8
|
+
@text = "I am haml text"
|
9
|
+
render layout: false
|
10
|
+
end
|
11
|
+
|
12
|
+
def show_slim
|
13
|
+
@text = "I am slim text"
|
14
|
+
render layout: false
|
15
|
+
end
|
16
|
+
end
|
@@ -2,11 +2,13 @@
|
|
2
2
|
|
3
3
|
require "rails"
|
4
4
|
require "action_controller/railtie"
|
5
|
+
require "action_view/railtie"
|
5
6
|
require "coverband"
|
6
7
|
Bundler.require(*Rails.groups)
|
7
8
|
|
8
9
|
module Rails5Dummy
|
9
10
|
class Application < Rails::Application
|
10
11
|
config.eager_load = true
|
12
|
+
config.consider_all_requests_local = true
|
11
13
|
end
|
12
14
|
end
|
@@ -1,7 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Coverband.configure do |config|
|
4
|
-
config
|
4
|
+
# NOTE: we reuse this config in each of the fake rails projects
|
5
|
+
# the below ensures the root is set to the correct fake project
|
6
|
+
config.root = ::File.expand_path("../../../", __FILE__).to_s + "/rails#{Rails::VERSION::MAJOR}_dummy"
|
5
7
|
config.store = Coverband::Adapters::RedisStore.new(Redis.new(db: 2, url: ENV["REDIS_URL"]), redis_namespace: "coverband_test") if defined? Redis
|
6
8
|
config.ignore = %w[.erb$ .slim$]
|
7
9
|
config.root_paths = []
|
@@ -1,4 +1,7 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
2
|
get "dummy/show"
|
3
|
+
get "dummy_view/show", to: "dummy_view#show"
|
4
|
+
get "dummy_view/show_haml", to: "dummy_view#show_haml"
|
5
|
+
get "dummy_view/show_slim", to: "dummy_view#show_slim"
|
3
6
|
mount Coverband::Reporters::Web.new, at: "/coverage"
|
4
7
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class DummyViewController < ActionController::Base
|
2
|
+
def show
|
3
|
+
@text = "I am no dummy view tracker text"
|
4
|
+
render layout: false
|
5
|
+
end
|
6
|
+
|
7
|
+
def show_haml
|
8
|
+
@text = "I am haml text"
|
9
|
+
render layout: false
|
10
|
+
end
|
11
|
+
|
12
|
+
def show_slim
|
13
|
+
@text = "I am slim text"
|
14
|
+
render layout: false
|
15
|
+
end
|
16
|
+
end
|
@@ -1,4 +1,7 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
2
|
get "dummy/show"
|
3
|
+
get "dummy_view/show", to: "dummy_view#show"
|
4
|
+
get "dummy_view/show_haml", to: "dummy_view#show_haml"
|
5
|
+
get "dummy_view/show_slim", to: "dummy_view#show_slim"
|
3
6
|
mount Coverband::Reporters::Web.new, at: "/coverage"
|
4
7
|
end
|
data/views/nav.erb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
<div id="header">
|
3
|
-
<a href='<%= base_path %>'>Coverband
|
4
|
-
<a href='<%= base_path %>settings'>
|
3
|
+
<a href='<%= base_path %>'>Coverband Home</a>
|
4
|
+
<a href='<%= base_path %>settings'>Configuration</a>
|
5
5
|
<% if Coverband.configuration.web_enable_clear %>
|
6
6
|
<%= button("#{base_path}clear", 'clear coverage report', delete: true) %>
|
7
7
|
<% end %>
|
data/views/settings.erb
CHANGED
@@ -11,8 +11,8 @@
|
|
11
11
|
<body>
|
12
12
|
<div id="wrapper" style="">
|
13
13
|
<div id="header">
|
14
|
-
<a href='<%= base_path %>'>Coverband
|
15
|
-
<a href='<%= base_path %>settings'>
|
14
|
+
<a href='<%= base_path %>'>Coverband Home</a>
|
15
|
+
<a href='<%= base_path %>settings'>Configuration</a>
|
16
16
|
</div>
|
17
17
|
<div id="content">
|
18
18
|
<dl>
|
data/views/view_tracker.erb
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
<p>These views have not been rendered since recording started at <%= tracker.tracking_since %></p>
|
27
27
|
<ul>
|
28
28
|
<% tracker.unused_views.each do |view_file| %>
|
29
|
-
<li><%= view_file %></li>
|
29
|
+
<li class="unused-views"><%= view_file %></li>
|
30
30
|
<% end %>
|
31
31
|
</ul>
|
32
32
|
|
@@ -34,7 +34,7 @@
|
|
34
34
|
<p>These views have been rendered at least once</p>
|
35
35
|
<ul>
|
36
36
|
<% tracker.used_views.each_pair do |view_file, time_at| %>
|
37
|
-
<li>
|
37
|
+
<li class="used-views">
|
38
38
|
<%= view_file %>
|
39
39
|
<span class="last_seen_at">last activity recorded <%= Time.at(time_at.to_i)%></span>
|
40
40
|
<% if Coverband.configuration.web_enable_clear %>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coverband
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Mayer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-10-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: benchmark-ips
|
@@ -402,11 +402,17 @@ files:
|
|
402
402
|
- test/fixtures/skipped_and_executed.rb
|
403
403
|
- test/fixtures/utf-8.rb
|
404
404
|
- test/forked/rails_full_stack_test.rb
|
405
|
+
- test/forked/rails_full_stack_views_test.rb
|
405
406
|
- test/forked/rails_rake_full_stack_test.rb
|
407
|
+
- test/forked/rails_view_tracker_stack_test.rb
|
406
408
|
- test/integration/full_stack_test.rb
|
407
409
|
- test/jruby_check.rb
|
408
410
|
- test/rails4_dummy/Rakefile
|
409
411
|
- test/rails4_dummy/app/controllers/dummy_controller.rb
|
412
|
+
- test/rails4_dummy/app/controllers/dummy_view_controller.rb
|
413
|
+
- test/rails4_dummy/app/views/dummy_view/show.html.erb
|
414
|
+
- test/rails4_dummy/app/views/dummy_view/show_haml.html.haml
|
415
|
+
- test/rails4_dummy/app/views/dummy_view/show_slim.html.slim
|
410
416
|
- test/rails4_dummy/config.ru
|
411
417
|
- test/rails4_dummy/config/application.rb
|
412
418
|
- test/rails4_dummy/config/boot.rb
|
@@ -418,6 +424,10 @@ files:
|
|
418
424
|
- test/rails4_dummy/tmp/.keep
|
419
425
|
- test/rails5_dummy/Rakefile
|
420
426
|
- test/rails5_dummy/app/controllers/dummy_controller.rb
|
427
|
+
- test/rails5_dummy/app/controllers/dummy_view_controller.rb
|
428
|
+
- test/rails5_dummy/app/views/dummy_view/show.html.erb
|
429
|
+
- test/rails5_dummy/app/views/dummy_view/show_haml.html.haml
|
430
|
+
- test/rails5_dummy/app/views/dummy_view/show_slim.html.slim
|
421
431
|
- test/rails5_dummy/config.ru
|
422
432
|
- test/rails5_dummy/config/application.rb
|
423
433
|
- test/rails5_dummy/config/coverband.rb
|
@@ -427,6 +437,10 @@ files:
|
|
427
437
|
- test/rails5_dummy/tmp/.keep
|
428
438
|
- test/rails6_dummy/Rakefile
|
429
439
|
- test/rails6_dummy/app/controllers/dummy_controller.rb
|
440
|
+
- test/rails6_dummy/app/controllers/dummy_view_controller.rb
|
441
|
+
- test/rails6_dummy/app/views/dummy_view/show.html.erb
|
442
|
+
- test/rails6_dummy/app/views/dummy_view/show_haml.html.haml
|
443
|
+
- test/rails6_dummy/app/views/dummy_view/show_slim.html.slim
|
430
444
|
- test/rails6_dummy/config.ru
|
431
445
|
- test/rails6_dummy/config/application.rb
|
432
446
|
- test/rails6_dummy/config/boot.rb
|
@@ -462,11 +476,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
462
476
|
version: '0'
|
463
477
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
464
478
|
requirements:
|
465
|
-
- - "
|
479
|
+
- - ">="
|
466
480
|
- !ruby/object:Gem::Version
|
467
|
-
version:
|
481
|
+
version: '0'
|
468
482
|
requirements: []
|
469
|
-
rubygems_version: 3.
|
483
|
+
rubygems_version: 3.0.3
|
470
484
|
signing_key:
|
471
485
|
specification_version: 4
|
472
486
|
summary: Rack middleware to measure production code usage (LOC runtime usage)
|
@@ -520,11 +534,17 @@ test_files:
|
|
520
534
|
- test/fixtures/skipped_and_executed.rb
|
521
535
|
- test/fixtures/utf-8.rb
|
522
536
|
- test/forked/rails_full_stack_test.rb
|
537
|
+
- test/forked/rails_full_stack_views_test.rb
|
523
538
|
- test/forked/rails_rake_full_stack_test.rb
|
539
|
+
- test/forked/rails_view_tracker_stack_test.rb
|
524
540
|
- test/integration/full_stack_test.rb
|
525
541
|
- test/jruby_check.rb
|
526
542
|
- test/rails4_dummy/Rakefile
|
527
543
|
- test/rails4_dummy/app/controllers/dummy_controller.rb
|
544
|
+
- test/rails4_dummy/app/controllers/dummy_view_controller.rb
|
545
|
+
- test/rails4_dummy/app/views/dummy_view/show.html.erb
|
546
|
+
- test/rails4_dummy/app/views/dummy_view/show_haml.html.haml
|
547
|
+
- test/rails4_dummy/app/views/dummy_view/show_slim.html.slim
|
528
548
|
- test/rails4_dummy/config.ru
|
529
549
|
- test/rails4_dummy/config/application.rb
|
530
550
|
- test/rails4_dummy/config/boot.rb
|
@@ -536,6 +556,10 @@ test_files:
|
|
536
556
|
- test/rails4_dummy/tmp/.keep
|
537
557
|
- test/rails5_dummy/Rakefile
|
538
558
|
- test/rails5_dummy/app/controllers/dummy_controller.rb
|
559
|
+
- test/rails5_dummy/app/controllers/dummy_view_controller.rb
|
560
|
+
- test/rails5_dummy/app/views/dummy_view/show.html.erb
|
561
|
+
- test/rails5_dummy/app/views/dummy_view/show_haml.html.haml
|
562
|
+
- test/rails5_dummy/app/views/dummy_view/show_slim.html.slim
|
539
563
|
- test/rails5_dummy/config.ru
|
540
564
|
- test/rails5_dummy/config/application.rb
|
541
565
|
- test/rails5_dummy/config/coverband.rb
|
@@ -545,6 +569,10 @@ test_files:
|
|
545
569
|
- test/rails5_dummy/tmp/.keep
|
546
570
|
- test/rails6_dummy/Rakefile
|
547
571
|
- test/rails6_dummy/app/controllers/dummy_controller.rb
|
572
|
+
- test/rails6_dummy/app/controllers/dummy_view_controller.rb
|
573
|
+
- test/rails6_dummy/app/views/dummy_view/show.html.erb
|
574
|
+
- test/rails6_dummy/app/views/dummy_view/show_haml.html.haml
|
575
|
+
- test/rails6_dummy/app/views/dummy_view/show_slim.html.slim
|
548
576
|
- test/rails6_dummy/config.ru
|
549
577
|
- test/rails6_dummy/config/application.rb
|
550
578
|
- test/rails6_dummy/config/boot.rb
|