deep-cover 0.6.4 → 0.7.0
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/.deep_cover.rb +5 -0
- data/.gitignore +7 -4
- data/.rubocop.yml +7 -0
- data/CHANGELOG.md +27 -0
- data/Gemfile +5 -1
- data/README.md +47 -53
- data/Rakefile +20 -15
- data/deep_cover.gemspec +2 -3
- data/exe/deep-cover +2 -4
- data/lib/deep_cover/cli.rb +85 -0
- data/lib/deep_cover/cli/commands/clear.rb +10 -0
- data/lib/deep_cover/cli/commands/clone.rb +22 -0
- data/lib/deep_cover/cli/commands/exec.rb +37 -0
- data/lib/deep_cover/cli/commands/gather.rb +36 -0
- data/lib/deep_cover/cli/commands/help.rb +34 -0
- data/lib/deep_cover/cli/commands/merge.rb +10 -0
- data/lib/deep_cover/cli/commands/report.rb +14 -0
- data/lib/deep_cover/cli/commands/run_expression.rb +13 -0
- data/lib/deep_cover/cli/commands/short_help.rb +26 -0
- data/lib/deep_cover/cli/commands/version.rb +15 -0
- data/lib/deep_cover/cli/tools.rb +18 -0
- data/lib/deep_cover/cover_cloned_tree.rb +58 -0
- data/lib/deep_cover/expression_debugger.rb +122 -0
- data/lib/deep_cover/instrumented_clone_reporter.rb +127 -0
- metadata +22 -33
- data/bin/console +0 -14
- data/bin/cov +0 -43
- data/bin/setup +0 -8
- data/bin/test_gems +0 -54
- data/bin/testall +0 -88
- data/future_read_me.md +0 -108
- data/lib/deep_cover/cli/debugger.rb +0 -127
- data/lib/deep_cover/cli/exec.rb +0 -27
- data/lib/deep_cover/cli/instrumented_clone_reporter.rb +0 -197
- data/lib/deep_cover/cli/runner.rb +0 -126
- data/lib/deep_cover/dump_covered_code.rb +0 -36
- data/lib/deep_cover_entry.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b1f81b23d211ad08949890b4bc4267613e18b566b5e8129aa2ec575cc1cf28e
|
4
|
+
data.tar.gz: 3f80f743ba78813f2218aeed63bc9a8ba889447f446367f1df34a9054b59bb8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0763b964b08399a871dc36b4da0bd0b227a58eabf15c98b0144abae98222d0fb44a67ed4ea11cf91c64350bef1072d539c5f45f6075043f2b6a559a4cc6a24d
|
7
|
+
data.tar.gz: 342d74b8ffbc0c56c062635c66b799ae9926fecf060d3d62188adcb6aea09a957ae3a3d97b4662c1538ef407bbdc60888675930f3db4f2fc20b75c35eca3da82
|
data/.deep_cover.rb
CHANGED
@@ -5,4 +5,9 @@
|
|
5
5
|
DeepCover.configure do
|
6
6
|
tracker_global '$_dcg'
|
7
7
|
ignore_uncovered :warn, :raise, :default_argument
|
8
|
+
# Statement analyser is only used for Istanbul output and is undertested.
|
9
|
+
# Ignore for now. TODO: test this, or get rid of StatementAnalyser
|
10
|
+
ignore_uncovered :is_statement_methods do
|
11
|
+
parent.is_a?(DeepCover::Node::Def) && parent.method_name == :is_statement
|
12
|
+
end
|
8
13
|
end
|
data/.gitignore
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
.bundle/
|
2
2
|
.yardoc
|
3
|
-
|
3
|
+
Gemfile.lock
|
4
4
|
/core_gem/Gemfile.lock
|
5
5
|
/_yardoc/
|
6
6
|
/coverage/
|
@@ -15,6 +15,9 @@
|
|
15
15
|
# rspec failure tracking
|
16
16
|
.rspec_status
|
17
17
|
/Gemfile.local
|
18
|
-
|
19
|
-
|
20
|
-
/
|
18
|
+
*.dc
|
19
|
+
*.dct
|
20
|
+
.nyc_output/
|
21
|
+
|
22
|
+
# Used in tests
|
23
|
+
*.else
|
data/.rubocop.yml
CHANGED
@@ -109,6 +109,9 @@ Style/FrozenStringLiteralComment:
|
|
109
109
|
Style/NegatedIf:
|
110
110
|
Enabled: false
|
111
111
|
|
112
|
+
Style/Next:
|
113
|
+
Enabled: false
|
114
|
+
|
112
115
|
Style/NumericPredicate:
|
113
116
|
Enabled: false
|
114
117
|
|
@@ -119,6 +122,9 @@ Style/PercentLiteralDelimiters:
|
|
119
122
|
Style/RedundantSelf:
|
120
123
|
Enabled: false
|
121
124
|
|
125
|
+
Style/SpecialGlobalVars:
|
126
|
+
Enabled: false
|
127
|
+
|
122
128
|
Style/StringLiterals:
|
123
129
|
EnforcedStyle: single_quotes
|
124
130
|
|
@@ -188,6 +194,7 @@ Lint/Void:
|
|
188
194
|
Enabled: true
|
189
195
|
Exclude:
|
190
196
|
- core_gem/spec/**/*
|
197
|
+
- spec/**/*
|
191
198
|
|
192
199
|
Style/ClassVars:
|
193
200
|
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,32 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.7.0
|
4
|
+
|
5
|
+
* Switched CLI to rely on Thor instead of Slop
|
6
|
+
* Added lower-level CLI commands: gather, merge, report, clear
|
7
|
+
* Added `deep-cover clone`, it does what `deep-cover` without commands did.
|
8
|
+
* Changed the default when using `deep-cover` without commands, it now shows a short help.
|
9
|
+
Use `deep-cover clone` to reproduce the previous default.
|
10
|
+
* `deep-cover exec` now uses the same default command as `deep-cover clone`
|
11
|
+
* Added global option -C (--change-directory) which basically executes a `cd` before executing deep-cover.
|
12
|
+
This replaces the default path parameter of `deep-cover clone`
|
13
|
+
* `deep-cover clone` now receives an optional command as positional argument, just like `deep-cover exec`.
|
14
|
+
It's previous positional argument (path to run) is now the -C option.
|
15
|
+
* `deep-cover` now display coverage information for files that were not loaded. This may lower your the coverage results.
|
16
|
+
* The configuration for the paths to cover can now receive globs.
|
17
|
+
* `deep-cover clone` no longer needs bundler. It still uses a Gemfile, if it finds one, to decide between
|
18
|
+
copying the current directory or the parent one.
|
19
|
+
* `deep-cover clone` is more efficient and has less edge cases that would make some files not be covered.
|
20
|
+
|
21
|
+
## 0.6.3
|
22
|
+
|
23
|
+
* Split the gem into two: `deep-cover` and `deep-cover-core`.
|
24
|
+
`deep-cover` is the cli, and depends on `deep-cover-core`, so nothing special is needed.
|
25
|
+
Those that don't want to have the CLI (either for dependencies or because they don't use it)
|
26
|
+
may now avoid it.
|
27
|
+
|
28
|
+
## 0.6.2
|
29
|
+
|
3
30
|
* `#require` is much faster in MRI Ruby 2.1 and 2.2, resulting in much faster boot time for most applications when deep-cover is enabled.
|
4
31
|
|
5
32
|
## 0.6.1
|
data/Gemfile
CHANGED
@@ -9,6 +9,10 @@ gemspec
|
|
9
9
|
|
10
10
|
eval_gemfile File.expand_path('Gemfile.local', __dir__) if File.exist?('Gemfile.local')
|
11
11
|
|
12
|
-
|
12
|
+
# This is a workaround for rubymine to stop treating the core_gem directory like an external library...
|
13
|
+
# https://youtrack.jetbrains.com/issue/RUBY-18315#comment=27-1608735
|
14
|
+
gem_name = 'deep-cover-core'
|
15
|
+
gem_path = 'core_gem'
|
16
|
+
gem gem_name, path: gem_path
|
13
17
|
|
14
18
|
gem 'ruby-prof', platforms: :mri
|
data/README.md
CHANGED
@@ -54,7 +54,7 @@ Platform support | Ruby 2.5+ | Ruby 2.1+, JRuby
|
|
54
54
|
|
55
55
|
**Line coverage**: MRI doesn't cover some lines (e.g. `when some_value`).
|
56
56
|
|
57
|
-
**Node coverage**: MRI provides no way to tell which parts of any line is evaluated. DeepCover covers everything.
|
57
|
+
**Node coverage**: MRI provides no way to tell which parts of any line is evaluated (e.g. `0.times { never_run }`). DeepCover covers everything.
|
58
58
|
|
59
59
|
**Method coverage**: MRI considers every method defined, including methods defined on objects or via `define_method`, `class_eval`, etc. For Istanbul output, DeepCover has a different approach and covers all `def` and all blocks.
|
60
60
|
|
@@ -72,81 +72,71 @@ easy to support it if needed.
|
|
72
72
|
|
73
73
|
## Installation
|
74
74
|
|
75
|
-
|
76
|
-
|
77
|
-
First we present the official way. There are also quick and dirty ways to try `deep-cover` without changing much your current setup, which we present afterwards.
|
78
|
-
|
79
|
-
### Canonical installation
|
80
|
-
|
81
|
-
*1* Add the `deep-cover` gem as a dependency:
|
82
|
-
|
83
|
-
For a standalone project (Rails app), add `deep-cover` to your Gemfile:
|
75
|
+
Do the appropriate of the installation of the gem, then follow the steps that correspond to your situation.
|
84
76
|
|
85
|
-
gem
|
77
|
+
# if the project is a gem, add this to your .gemspec and then run `bundle install`
|
78
|
+
spec.add_development_dependency 'deep-cover', '~> 0.7'
|
86
79
|
|
87
|
-
|
80
|
+
# otherwise if using a Gemfile, add this to it and then run `bundle install`
|
81
|
+
gem 'deep-cover', '~> 0.7', group: :test, require: false
|
88
82
|
|
89
|
-
|
83
|
+
# otherwise just run:
|
84
|
+
gem install deep-cover
|
90
85
|
|
91
|
-
*2* Require `deep-cover`
|
92
86
|
|
93
|
-
|
87
|
+
### Trying `deep-cover` quickly
|
94
88
|
|
95
|
-
|
89
|
+
An easy way to try `deep-cover`, without any configuration needed:
|
96
90
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
require File.expand_path('../../config/environment', __FILE__)
|
101
|
-
require 'rails/test_help'
|
102
|
-
# ...
|
103
|
-
```
|
91
|
+
deep-cover clone command to run test
|
92
|
+
# ex:
|
93
|
+
deep-cover clone rake test
|
104
94
|
|
105
|
-
|
95
|
+
Check the produced `coverage/index.html`.
|
106
96
|
|
107
|
-
|
97
|
+
Note, this is a bit slower and may cause issues in your tests if your use relative paths that lead outside of the directory (Such as a dependency that is in a parent directory).
|
108
98
|
|
109
|
-
|
110
|
-
# File .deep-cover.rb
|
111
|
-
DeepCover.config do
|
112
|
-
ignore :default_arguments
|
113
|
-
# ...
|
114
|
-
end
|
115
|
-
```
|
99
|
+
### Regular setup
|
116
100
|
|
117
|
-
|
101
|
+
1. Require `deep-cover`
|
118
102
|
|
119
|
-
|
103
|
+
You must call `require 'deep-cover'` **before** the code you want to cover is loaded.
|
120
104
|
|
121
|
-
|
105
|
+
Typically, you want to insert that line **at the very top** of `test/test_helper.rb` or `spec/spec_helper.rb` . If `deep-cover` is required after your code, then it won't be able to detect the coverage.
|
122
106
|
|
123
|
-
|
107
|
+
2. Create a config file (optional)
|
124
108
|
|
125
|
-
|
126
|
-
$ deep-cover exec rspec
|
127
|
-
# ...all the output of rspec
|
128
|
-
# ...coverage report
|
129
|
-
```
|
109
|
+
You may want to create a config file `.deep-cover.rb` at the root of your project, where you can set the config as you wish.
|
130
110
|
|
131
|
-
|
111
|
+
```
|
112
|
+
# File .deep-cover.rb
|
113
|
+
DeepCover.config do
|
114
|
+
ignore :default_arguments
|
115
|
+
# ...
|
116
|
+
end
|
117
|
+
```
|
132
118
|
|
133
|
-
|
119
|
+
3. Launch it
|
134
120
|
|
135
|
-
|
121
|
+
Even after `DeepCover` is `require`d and configured, only a very minimal amount of code is actually loaded and coverage is *not started*.
|
136
122
|
|
137
|
-
|
123
|
+
The easiest way to actually start it is to use `deep-cover exec`
|
138
124
|
|
139
|
-
|
125
|
+
For example:
|
140
126
|
|
141
|
-
|
127
|
+
```
|
128
|
+
$ deep-cover exec rspec
|
129
|
+
# ...all the output of rspec
|
130
|
+
# ...coverage report
|
131
|
+
```
|
142
132
|
|
143
|
-
|
133
|
+
### Already using SimpleCov / builtin Coverage
|
144
134
|
|
145
|
-
|
135
|
+
To make it easier to transition for projects already using the builtin `Coverage` library (such as those using `SimpleCov`), `deep-cover` can inject itself into those tools so that, while you still only have line-by-line coverage information, it becomes stricter, only marking a line as executed if *everything* on it has been executed.
|
146
136
|
|
147
|
-
|
137
|
+
You must call `require 'deep-cover/builtin_takeover'` **before** you require the coverage tool that you normally use.
|
148
138
|
|
149
|
-
For example, the `test/test_helper.rb` file for `
|
139
|
+
For example, the `test/test_helper.rb` file for `SimpleCov` users will look like
|
150
140
|
|
151
141
|
```
|
152
142
|
require 'deep_cover/builtin_takeover'
|
@@ -155,6 +145,12 @@ SimpleCov.start
|
|
155
145
|
# rest of `test_helper.rb`
|
156
146
|
```
|
157
147
|
|
148
|
+
Once this is done, simply generate the coverage as you normally would. In order to get detailed information about why a line is not covered, you will need to the regular `deep-cover` mode.
|
149
|
+
|
150
|
+
### Online coverage tools such as Code Climate, Coveralls, Codecov
|
151
|
+
|
152
|
+
At the moment, those tools do not support deep-cover. It is however possible to use the takeover system to, at least, make them stricter. Follow the explanation in the above section for injecting into `SimpleCov`.
|
153
|
+
|
158
154
|
## Usage
|
159
155
|
|
160
156
|
### Configuration
|
@@ -172,8 +168,6 @@ end
|
|
172
168
|
|
173
169
|
The file `.deep-cover.rb` is loaded automatically when requiring `deep-cover` and is the best place to put the configuration.
|
174
170
|
|
175
|
-
*Note*: The configuration block is only executed when `deep-cover` is actually started.
|
176
|
-
|
177
171
|
#### Custom filters
|
178
172
|
|
179
173
|
`deep-cover` comes with a few filters that make it possible to ignore certain uncovered codes.
|
data/Rakefile
CHANGED
@@ -18,30 +18,34 @@ desc 'Build & release deep-cover and deep-cover-core to rubygems.org'
|
|
18
18
|
task release: ['core:sass', 'core:release', 'global:release']
|
19
19
|
|
20
20
|
### Tests tasks
|
21
|
-
|
22
|
-
require '
|
21
|
+
begin
|
22
|
+
require 'rspec/core/rake_task'
|
23
|
+
require 'rubocop/rake_task'
|
23
24
|
|
24
|
-
RuboCop::RakeTask.new(:rubocop) do |t|
|
25
|
-
|
26
|
-
end
|
25
|
+
RuboCop::RakeTask.new(:rubocop) do |t|
|
26
|
+
t.options = ['-a'] unless ENV['TRAVIS']
|
27
|
+
end
|
27
28
|
|
28
|
-
spec_path = 'spec/*_spec.rb, core_gem/spec/**/*_spec.rb'
|
29
|
-
RSpec::Core::RakeTask.new(:spec).tap { |task| task.pattern = spec_path }
|
29
|
+
spec_path = 'spec/*_spec.rb, core_gem/spec/**/*_spec.rb'
|
30
|
+
RSpec::Core::RakeTask.new(:spec).tap { |task| task.pattern = spec_path }
|
30
31
|
|
31
|
-
desc 'Run all tests'
|
32
|
-
RSpec::Core::RakeTask.new('spec:all') do |task|
|
33
|
-
|
34
|
-
|
35
|
-
end
|
32
|
+
desc 'Run all tests'
|
33
|
+
RSpec::Core::RakeTask.new('spec:all') do |task|
|
34
|
+
task.pattern = spec_path
|
35
|
+
task.rspec_opts = '-O .rspec_all'
|
36
|
+
end
|
36
37
|
|
37
|
-
multitask default: RUBY_VERSION > '2.1' ? [:rubocop, :spec] : :spec
|
38
|
-
multitask 'test:all' => RUBY_VERSION > '2.1' ? [:rubocop, 'spec:all'] : 'spec:all'
|
38
|
+
multitask default: RUBY_VERSION > '2.1' ? [:rubocop, :spec] : :spec
|
39
|
+
multitask 'test:all' => RUBY_VERSION > '2.1' ? [:rubocop, 'spec:all'] : 'spec:all'
|
40
|
+
rescue LoadError
|
41
|
+
puts 'Note: rspec or rubocop not installed'
|
42
|
+
end
|
39
43
|
|
40
44
|
#### Utilities
|
41
45
|
namespace :dev do
|
42
46
|
desc 'Self cover'
|
43
47
|
task :cov do
|
44
|
-
command = "exe/deep-cover
|
48
|
+
command = "exe/deep-cover clone --no-bundle --command 'rake spec:all'"
|
45
49
|
puts command
|
46
50
|
system command
|
47
51
|
end
|
@@ -56,6 +60,7 @@ namespace :dev do
|
|
56
60
|
commands << 'bundle install --gemfile=spec/code_fixtures/simple_rails42_app/Gemfile'
|
57
61
|
commands << 'bundle install --gemfile=spec/code_fixtures/rails_like_gem/Gemfile'
|
58
62
|
commands << 'bundle install --gemfile=core_gem/Gemfile'
|
63
|
+
commands << 'bundle install'
|
59
64
|
|
60
65
|
commands.each do |command|
|
61
66
|
puts "Running: #{command}"
|
data/deep_cover.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
|
-
f.match(%r{^(test|spec|features|\w+_gem)/})
|
17
|
+
f.match(%r{^(test|spec|features|bin|\w+_gem)/})
|
18
18
|
end
|
19
19
|
spec.bindir = 'exe'
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
@@ -29,8 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
# CLI
|
30
30
|
spec.add_runtime_dependency 'bundler'
|
31
31
|
spec.add_runtime_dependency 'highline'
|
32
|
-
spec.add_runtime_dependency '
|
33
|
-
spec.add_runtime_dependency 'term-ansicolor'
|
32
|
+
spec.add_runtime_dependency 'thor', '>= 0.20.3'
|
34
33
|
spec.add_runtime_dependency 'with_progress'
|
35
34
|
|
36
35
|
### Dev dependencies
|
data/exe/deep-cover
CHANGED
@@ -3,12 +3,10 @@
|
|
3
3
|
|
4
4
|
$LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
|
5
5
|
|
6
|
-
require_relative '../lib/deep_cover_entry'
|
7
|
-
|
8
6
|
# HACK: tweak $LOAD_PATH when running from source
|
9
7
|
local_gem_path = File.expand_path('../core_gem', __dir__)
|
10
8
|
$LOAD_PATH.unshift "#{local_gem_path}/lib" if Dir.exist?(local_gem_path)
|
11
9
|
|
12
|
-
|
10
|
+
require_relative '../lib/deep_cover/cli'
|
13
11
|
|
14
|
-
DeepCover::CLI
|
12
|
+
DeepCover::CLI.start
|
@@ -0,0 +1,85 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'thor'
|
5
|
+
|
6
|
+
module DeepCover
|
7
|
+
# can't use `#require_relative`: This is gem deep-cover requiring from gem deep-cover-core
|
8
|
+
# We don't want the config to be loaded right now, because we may move the current_work_dir somewhere else.
|
9
|
+
require 'deep_cover/setup/deep_cover_without_config'
|
10
|
+
|
11
|
+
bootstrap
|
12
|
+
|
13
|
+
class CLI < Thor
|
14
|
+
require_relative 'cli/tools'
|
15
|
+
|
16
|
+
# Just fail when you get an unknown option
|
17
|
+
check_unknown_options!
|
18
|
+
|
19
|
+
# If the default value of a option doesn't match its type, something is wrong.
|
20
|
+
check_default_type!
|
21
|
+
|
22
|
+
# Every top-level commands are defined in a different file, which add their method to this class
|
23
|
+
DeepCover.require_relative_dir 'cli/commands'
|
24
|
+
|
25
|
+
default_command :short_help
|
26
|
+
|
27
|
+
# Adding all of the ignore-something class options
|
28
|
+
OPTIONALLY_COVERED_MAP = OPTIONALLY_COVERED.map do |optional|
|
29
|
+
[:"ignore_#{optional}", optional]
|
30
|
+
end.to_h.freeze
|
31
|
+
OPTIONALLY_COVERED_MAP.each do |cli_option, short_name|
|
32
|
+
default = DeepCover.config.ignore_uncovered.include?(short_name)
|
33
|
+
class_option cli_option, type: :boolean, default: default
|
34
|
+
end
|
35
|
+
|
36
|
+
class_option :change_directory, desc: 'Runs as if deep-cover was started in <path>', type: :string, aliases: '-C', default: '.'
|
37
|
+
|
38
|
+
# exit_code should be non-zero when the parsing fails
|
39
|
+
def self.exit_on_failure?
|
40
|
+
true
|
41
|
+
end
|
42
|
+
|
43
|
+
no_commands do
|
44
|
+
# We have some special handling for some of the options
|
45
|
+
# We do this here, methods just need to call processed_options instead of options.
|
46
|
+
def processed_options
|
47
|
+
@processed_options ||= nil
|
48
|
+
return @processed_options if @processed_options
|
49
|
+
|
50
|
+
new_options = options.dup
|
51
|
+
new_options[:output] = false if ['false', 'f', ''].include?(new_options[:output])
|
52
|
+
|
53
|
+
# Turn all the ignore-x into entries in :ignore_uncovered
|
54
|
+
ignored = new_options[:ignore_uncovered] = []
|
55
|
+
OPTIONALLY_COVERED_MAP.each do |cli_option, option|
|
56
|
+
ignored << option if new_options.delete(cli_option)
|
57
|
+
end
|
58
|
+
|
59
|
+
@processed_options = new_options.transform_keys(&:to_sym)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Before we actually execute any of the commands, we want to change directory if that option was given.
|
63
|
+
# And then we want to setup the configuration
|
64
|
+
def invoke_command(*args)
|
65
|
+
if options[:change_directory] != '.'
|
66
|
+
root_path = File.expand_path(options[:change_directory])
|
67
|
+
unless File.exist?(root_path)
|
68
|
+
warn set_color(DeepCover::Tools.strip_heredoc(<<-MSG), :red)
|
69
|
+
bad value for option --change_directory: #{root_path.inspect} is not a valid directory
|
70
|
+
MSG
|
71
|
+
exit(1)
|
72
|
+
end
|
73
|
+
Dir.chdir(root_path)
|
74
|
+
# TODO: We need way to turn on DEBUG
|
75
|
+
# warn "(in #{root_path})"
|
76
|
+
end
|
77
|
+
|
78
|
+
# We need to wait until now to setup the configuration, because it will store absolute paths
|
79
|
+
# in ENV['DEEP_COVER_OPTIONS'], so we must wait until the change_directory was applied.
|
80
|
+
require 'deep_cover/setup/deep_cover_config'
|
81
|
+
super
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|