single_cov 1.7.0 → 1.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9b93f5dd228599154416958a87e4f96ddd97a5477d92b7fc6c43c80ff3d6485f
4
- data.tar.gz: ccd0f0c8b95df16fae3c071000b2499cca41bffea096bd84a8d761444335b2c4
3
+ metadata.gz: 191288dd953084f124ab1ad02620d9d0a4d0ed77aa24eaa4da49c96dbafae959
4
+ data.tar.gz: a286ebd56118b731cdfc3f67f7c35839b97a8e10e1514e801d04dd063a743a69
5
5
  SHA512:
6
- metadata.gz: 827b9ed7610e88def4654d18d8e2d4fa01c1f6c296a260c64ef8f4a722d1a478e195fefbfaf45afbeb8d6710a644f071f48e117cb927daf2d5bb0b42decd14e9
7
- data.tar.gz: 3a21bb814833a4a73b5303f4b354218014f0a7b5e05eac89863b3508f7b6b488a06177577ce383d6a706847716dbc6706b37583d499deafee1a516a5d8a1e5c2
6
+ metadata.gz: 216a68bd848bbf423383d2259c8841e192a20db71461bbb91a16b4d384cc7fb9fa4ffbe312b86ae25bc623f05b38c20f948b8eb4abb3e710ef42ec402b90c661
7
+ data.tar.gz: d8182e0a8e9b24c28b02c59c78200bec605e013818f6b47983303dbe8b62ed43ebfb6fe6a23ed50fa3bf9c7d0d501f2257197b2a8f258182db6849bef3e2b549
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module SingleCov
3
- VERSION = "1.7.0"
3
+ VERSION = "1.8.0"
4
4
  end
data/lib/single_cov.rb CHANGED
@@ -38,7 +38,7 @@ module SingleCov
38
38
 
39
39
  # ignore lines that are marked as uncovered via comments
40
40
  # TODO: warn when using uncovered but the section is indeed covered
41
- content = File.readlines(file)
41
+ content = File.readlines("#{root}/#{file}")
42
42
  uncovered.reject! do |line_start, _, _, _|
43
43
  content[line_start - 1].match?(UNCOVERED_COMMENT_MARKER)
44
44
  end
@@ -76,6 +76,32 @@ module SingleCov
76
76
  end
77
77
  end
78
78
 
79
+ def assert_full_coverage(tests: default_tests, currently_complete: [], location: nil)
80
+ location ||= caller(0..1)[1].split(':in').first
81
+ complete = tests.select { |file| File.read(file) =~ /SingleCov.covered!(\s*|\s*\#.*)$/ }
82
+ missing_complete = currently_complete - complete
83
+ newly_complete = complete - currently_complete
84
+ errors = []
85
+
86
+ if missing_complete.any?
87
+ errors << <<~MSG
88
+ The following file(s) were previously marked as having 100% SingleCov test coverage (had no `coverage:` option) but are no longer marked as such.
89
+ Please increase test coverage in these files to maintain 100% coverage and remove `coverage:` usage.
90
+ #{missing_complete.join("\n")}
91
+ MSG
92
+ end
93
+
94
+ if newly_complete.any?
95
+ errors << <<~MSG
96
+ The following files are newly at 100% SingleCov test coverage.
97
+ Please add the following to #{location} to ensure 100% coverage is maintained moving forward.
98
+ #{newly_complete.join("\n")}
99
+ MSG
100
+ end
101
+
102
+ raise errors.join("\n") if errors.any?
103
+ end
104
+
79
105
  def setup(framework, root: nil, branches: true, err: $stderr)
80
106
  @error_logger = err
81
107
 
@@ -273,9 +299,8 @@ module SingleCov
273
299
  end
274
300
 
275
301
  def ensure_covered_file(file)
276
- raise "Use paths relative to project root." if file&.start_with?("/")
277
-
278
302
  if file
303
+ raise "Use paths relative to project root." if file.start_with?("/")
279
304
  raise "#{file} does not exist, use paths relative to project root." unless File.exist?("#{root}/#{file}")
280
305
  else
281
306
  file = guess_covered_file(caller[1])
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: single_cov
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-13 00:00:00.000000000 Z
11
+ date: 2023-02-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description:
13
+ description:
14
14
  email: michael@grosser.it
15
15
  executables: []
16
16
  extensions: []
@@ -23,7 +23,7 @@ homepage: https://github.com/grosser/single_cov
23
23
  licenses:
24
24
  - MIT
25
25
  metadata: {}
26
- post_install_message:
26
+ post_install_message:
27
27
  rdoc_options: []
28
28
  require_paths:
29
29
  - lib
@@ -31,15 +31,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 2.5.0
34
+ version: 2.7.0
35
35
  required_rubygems_version: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: '0'
40
40
  requirements: []
41
- rubygems_version: 3.1.6
42
- signing_key:
41
+ rubygems_version: 3.3.3
42
+ signing_key:
43
43
  specification_version: 4
44
44
  summary: Actionable code coverage.
45
45
  test_files: []