undercover 0.2.3 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 90f2bd1d3a2ddb275c710e0a9c106235a3c4134a722763b5904a71962e455b90
4
- data.tar.gz: 1276a7080b186025c9ee637a4573e3d0d934ae4bf3a1ad997149d05141b84dad
3
+ metadata.gz: 2c55fedc1b13694df2a9042c5e78543fcfd5d5417d5c99c61831ff8ff53a0f28
4
+ data.tar.gz: 3a7466522f20c47bd9b131b1d76e7ecbe2ec3c10a6b0d9c2d72c66dd7616d214
5
5
  SHA512:
6
- metadata.gz: 1ecd86502ba1b150484b7848f4da94c3c1f8e642fa6c6e59d1635de2e143ec9d86d1080e1373a3ef8434fbc19c1b2f8dc07e51fcf76f40ab1b02847408e240a8
7
- data.tar.gz: 256dd99d6f1026bbb23adbe3c0f99e726041098911de08934372aa4c100afb9527f8c8970c0b56fc2e615b397ec40b9445a3111e051f5584ed205ebba9f28189
6
+ metadata.gz: d2057a6288f575e76c21dc6a747622b231817353bd695aab512188cd10785c1e7423364d053201f8396b4694f0b2734cf744a2d696b7c2c7db33c3f2dff80b9b
7
+ data.tar.gz: 000140b3cefe4e22e8b25660b3c30060cf8cc881853d2044b9a9b50a9d69ef22cbf859d47de6b1d4be707ec0a385969af38678d92350b1ee30eeb3a50f13a3cd
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.3.0] - 2019-01-05
10
+ ### Added
11
+ - Support for `.undercover` config file by @cgeorgii
12
+
9
13
  ## [0.2.3] - 2018-12-26
10
14
  ### Fixed
11
15
  - `--ruby-syntax` typo fix by @cgeorgii
@@ -65,7 +69,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
65
69
  ### Added
66
70
  - First release of `undercover` 🎉
67
71
 
68
- [Unreleased]: https://github.com/grodowski/undercover/compare/v0.2.3...HEAD
72
+ [Unreleased]: https://github.com/grodowski/undercover/compare/v0.3.0...HEAD
73
+ [0.3.0]: https://github.com/grodowski/undercover/compare/v0.2.3...v0.3.0
69
74
  [0.2.3]: https://github.com/grodowski/undercover/compare/v0.2.2...v0.2.3
70
75
  [0.2.2]: https://github.com/grodowski/undercover/compare/v0.2.1...v0.2.2
71
76
  [0.2.1]: https://github.com/grodowski/undercover/compare/v0.2.0...v0.2.1
data/README.md CHANGED
@@ -81,7 +81,11 @@ Check out `docs/` for CI configuration examples:
81
81
  - [Semaphore](docs/semaphore.yml)
82
82
  - [Codeship](docs/codeship.md)
83
83
 
84
- ### Options
84
+ ## Configuration
85
+
86
+ ### CLI Options
87
+
88
+ Options can be passed when running the command from the command line:
85
89
 
86
90
  ```sh
87
91
  undercover -h
@@ -94,7 +98,19 @@ Usage: undercover [options]
94
98
  --version Show version
95
99
  ```
96
100
 
97
- Default options assume that the program is run from the top level of the project directory.
101
+ ### Configuration File
102
+
103
+ A configuration file named `.undercover` can be created at the top level of a project's directory containing the same set of options for the CLI.
104
+ Example file:
105
+
106
+ ```sh
107
+ -l path/to/different.lcov
108
+ -c origin/master
109
+ ```
110
+
111
+ The options set in the file can be overriden by passing arguments when invoking the executable.
112
+
113
+ Options assume that the program is run from the top level of the project directory.
98
114
 
99
115
  ## Why?
100
116
 
@@ -14,11 +14,15 @@ module Undercover
14
14
  'Re-run tests to update').yellow,
15
15
  no_changes: Rainbow('✅ No reportable changes').green
16
16
  }.freeze
17
-
18
- # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
19
17
  def self.run(args)
20
18
  opts = Undercover::Options.new.parse(args)
21
19
  syntax_version(opts.syntax_version)
20
+
21
+ run_report(opts)
22
+ end
23
+ # rubocop:enable
24
+
25
+ def self.run_report(opts)
22
26
  report = Undercover::Report.new(changeset(opts), opts).build
23
27
 
24
28
  error = report.validate(opts.lcov)
@@ -31,7 +35,6 @@ module Undercover
31
35
  puts Undercover::Formatter.new(warnings)
32
36
  warnings.any? ? 1 : 0
33
37
  end
34
- # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
35
38
 
36
39
  def self.syntax_version(version)
37
40
  return unless version
@@ -31,6 +31,8 @@ module Undercover
31
31
 
32
32
  # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
33
33
  def parse(args)
34
+ args = build_opts(args)
35
+
34
36
  OptionParser.new do |opts|
35
37
  opts.banner = 'Usage: undercover [options]'
36
38
 
@@ -53,6 +55,7 @@ module Undercover
53
55
  # --quiet (skip progress bar)
54
56
  # --exit-status (do not print report, just exit)
55
57
  end.parse(args)
58
+
56
59
  guess_lcov_path unless lcov
57
60
  self
58
61
  end
@@ -60,6 +63,24 @@ module Undercover
60
63
 
61
64
  private
62
65
 
66
+ def build_opts(args)
67
+ project_options.concat(args)
68
+ end
69
+
70
+ def project_options
71
+ args_from_options_file(project_options_file)
72
+ end
73
+
74
+ def args_from_options_file(path)
75
+ return [] unless File.exist?(path)
76
+
77
+ File.read(path).split('\n').flat_map { |line| line.split(' ') }
78
+ end
79
+
80
+ def project_options_file
81
+ './.undercover'
82
+ end
83
+
63
84
  def lcov_path_option(parser)
64
85
  parser.on('-l', '--lcov path', 'LCOV report file path') do |path|
65
86
  self.lcov = path
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Undercover
4
- VERSION = '0.2.3'
4
+ VERSION = '0.3.0'
5
5
  end
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency 'rainbow', '~> 2.1'
28
28
  spec.add_dependency 'rugged', '~> 0.27.0'
29
29
 
30
- spec.add_development_dependency 'bundler', '~> 1.16'
30
+ spec.add_development_dependency 'bundler'
31
31
  spec.add_development_dependency 'pry'
32
32
  spec.add_development_dependency 'rake', '~> 10.0'
33
33
  spec.add_development_dependency 'rspec', '~> 3.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: undercover
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Grodowski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-26 00:00:00.000000000 Z
11
+ date: 2019-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: imagen
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.16'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '1.16'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry
71
71
  requirement: !ruby/object:Gem::Requirement