single_cov 0.2.2 → 0.3.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/lib/single_cov/version.rb +1 -1
- data/lib/single_cov.rb +24 -11
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1eed48907c72cdc169cf0a1102214a19aba7d04
|
4
|
+
data.tar.gz: a03c0a381e3c943ae9f4d8b0ddeaa6e70323a422
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e0f571ad1defd8f2fa00f5aaf6e152b9e84caf0b89ccec6bd8b9c38b5459387fef00a9945760613b9cac779bfa23dafd66387c74a8454535cdd12209e0528b2
|
7
|
+
data.tar.gz: 417af607d91795747bcee02325a1ae2f97786197a66cb44bb452958e433d226a4729de71f1f06dd1e15176632562f4b10deb800c0a1b115af1fe1173deadc97e
|
data/lib/single_cov/version.rb
CHANGED
data/lib/single_cov.rb
CHANGED
@@ -19,7 +19,7 @@ module SingleCov
|
|
19
19
|
|
20
20
|
def all_covered?(result)
|
21
21
|
errors = COVERAGES.map do |file, expected_uncovered|
|
22
|
-
if coverage = result[
|
22
|
+
if coverage = result["#{root}/#{file}"]
|
23
23
|
uncovered_lines = coverage.each_with_index.map { |c, i| "#{file}:#{i+1}" if c == 0 }.compact
|
24
24
|
next if uncovered_lines.size == expected_uncovered
|
25
25
|
warn_about_bad_coverage(file, expected_uncovered, uncovered_lines)
|
@@ -46,7 +46,7 @@ module SingleCov
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
def assert_tested(files:
|
49
|
+
def assert_tested(files: glob('{app,lib}/**/*.rb'), tests: default_tests, untested: [])
|
50
50
|
missing = files - tests.map { |t| file_under_test(t) }
|
51
51
|
fixed = untested - missing
|
52
52
|
missing -= untested
|
@@ -58,11 +58,13 @@ module SingleCov
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
def setup(framework)
|
61
|
+
def setup(framework, root: nil)
|
62
62
|
if defined?(SimpleCov)
|
63
63
|
raise "Load SimpleCov after SingleCov"
|
64
64
|
end
|
65
65
|
|
66
|
+
@root = root if root
|
67
|
+
|
66
68
|
case framework
|
67
69
|
when :minitest
|
68
70
|
minitest_should_not_be_running!
|
@@ -83,7 +85,11 @@ module SingleCov
|
|
83
85
|
private
|
84
86
|
|
85
87
|
def default_tests
|
86
|
-
|
88
|
+
glob("{test,spec}/**/*_{test,spec}.rb")
|
89
|
+
end
|
90
|
+
|
91
|
+
def glob(pattern)
|
92
|
+
Dir["#{root}/#{pattern}"].map! { |f| f.sub("#{root}/", '') }
|
87
93
|
end
|
88
94
|
|
89
95
|
# do not ask for coverage when SimpleCov already does or it conflicts
|
@@ -148,14 +154,14 @@ module SingleCov
|
|
148
154
|
|
149
155
|
def guess_and_check_covered_file(file)
|
150
156
|
if file && file.start_with?("/")
|
151
|
-
raise "Use paths relative to
|
157
|
+
raise "Use paths relative to root."
|
152
158
|
end
|
153
159
|
|
154
160
|
if file
|
155
|
-
raise "#{file} does not exist and cannot be covered." unless File.exist?(file)
|
161
|
+
raise "#{file} does not exist and cannot be covered." unless File.exist?("#{root}/#{file}")
|
156
162
|
else
|
157
163
|
file = file_under_test(caller[1])
|
158
|
-
unless File.exist?(file)
|
164
|
+
unless File.exist?("#{root}/#{file}")
|
159
165
|
raise "Tried to guess covered file as #{file}, but it does not exist.\nUse `SingleCov.covered file: 'target_file.rb'` to set covered file location."
|
160
166
|
end
|
161
167
|
end
|
@@ -179,7 +185,7 @@ module SingleCov
|
|
179
185
|
end
|
180
186
|
|
181
187
|
def warn_about_no_coverage(file)
|
182
|
-
if $LOADED_FEATURES.include?(
|
188
|
+
if $LOADED_FEATURES.include?("#{root}/#{file}")
|
183
189
|
# we cannot enforce $LOADED_FEATURES during covered! since it would fail when multiple files are loaded
|
184
190
|
"#{file} was expected to be covered, but already loaded before tests started."
|
185
191
|
else
|
@@ -190,12 +196,15 @@ module SingleCov
|
|
190
196
|
def file_under_test(file)
|
191
197
|
file = file.dup
|
192
198
|
|
193
|
-
# remove project root
|
194
|
-
file.sub!("#{Dir.pwd}/", '')
|
195
|
-
|
196
199
|
# remove caller junk to get nice error messages when something fails
|
197
200
|
file.sub!(/\.rb\b.*/, '.rb')
|
198
201
|
|
202
|
+
# resolve all kinds of relativity
|
203
|
+
file = File.expand_path(file)
|
204
|
+
|
205
|
+
# remove project root
|
206
|
+
file.sub!("#{root}/", '')
|
207
|
+
|
199
208
|
# preserve subfolders like foobar/test/xxx_test.rb -> foobar/lib/xxx_test.rb
|
200
209
|
subfolder, file_part = file.split(%r{(?:^|/)(?:test|spec)/}, 2)
|
201
210
|
unless file_part
|
@@ -223,5 +232,9 @@ module SingleCov
|
|
223
232
|
|
224
233
|
file_part
|
225
234
|
end
|
235
|
+
|
236
|
+
def root
|
237
|
+
@root ||= (defined?(Bundler) && Bundler.root.to_s) || Dir.pwd
|
238
|
+
end
|
226
239
|
end
|
227
240
|
end
|