couve 0.5.0 → 0.6.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: b00642800c7fb55e834a786a5243dafe3ff38ae2dc1e638b0c041f4686bc3c28
4
- data.tar.gz: 9d5bf8a939b2c46e528ec47add60d325fdd4105232127f06ffdbe0690840475f
3
+ metadata.gz: 91781d6bb92f7f023f6ab39ea4d0f7f707318bef6d09ef8cced4a9c2810e78c2
4
+ data.tar.gz: ff8ad3ff9c1a7c7c2318ab23d53db3a45f629d9b6c2f44104bf7c5d89beccb3b
5
5
  SHA512:
6
- metadata.gz: 85783f6edf42296754670765ea005c6a63ae4a40aaa26de8ca56ec0861d63155ec30e7e8ab376a09bb9bd0ea76c7d4037520a71a00ad472d496bdb86234c1e65
7
- data.tar.gz: 9f1cc2e8da3106fcdcd0b64450d0d16f28b530c2f33c126df69871cc0387408788f4f4b09c7908b2be99056d9a144df1654d9d2b219745a60848916b56cfa93f
6
+ metadata.gz: b921af295d7211b7db8d8fd3e3bea3628f64529ccc031a46a02fc88f42fada6b76acc21f4309f80d2faaea2783fa02783519c3503f67a2d44cfe3054b7c5831b
7
+ data.tar.gz: fb3836c3e78b7c686f84b559e7344398bc1bed5e6ffca394c6025a4a3389a0b01914f7ab945fbd3a65f697a57b3598da7b8772c919c5b5c20499691c620111f5
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.6.0] - 2026-06-04
4
+
5
+ - Add Markdown output format, selected from the output file extension (`.md`). HTML remains the default.
6
+
3
7
  ## [0.1.0] - 2023-07-19
4
8
 
5
9
  - Initial release
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- couve (0.4.0)
4
+ couve (0.6.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -33,10 +33,10 @@ GEM
33
33
  rb-inotify (~> 0.9, >= 0.9.10)
34
34
  lumberjack (1.2.9)
35
35
  method_source (1.0.0)
36
+ mini_portile2 (2.8.9)
36
37
  nenv (0.3.0)
37
- nokogiri (1.15.3-x86_64-darwin)
38
- racc (~> 1.4)
39
- nokogiri (1.15.3-x86_64-linux)
38
+ nokogiri (1.15.3)
39
+ mini_portile2 (~> 2.8.2)
40
40
  racc (~> 1.4)
41
41
  notiffany (0.1.3)
42
42
  nenv (~> 0.1)
@@ -88,6 +88,7 @@ GEM
88
88
  unicode-display_width (2.4.2)
89
89
 
90
90
  PLATFORMS
91
+ arm64-darwin-23
91
92
  x86_64-darwin-21
92
93
  x86_64-linux
93
94
 
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
- # Couve
1
+ # Couve - Generate Human Readable CodeClimate Test Reporter
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/couve`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ Couve is a Ruby gem that aims to simplify the generation of human-readable reports for the CodeClimate test-reporter gem. With Couve, you can quickly and easily generate insightful reports based on the test coverage data in a human-friendly format.
6
4
 
7
5
  ## Installation
8
6
 
@@ -22,18 +20,96 @@ Or install it yourself as:
22
20
 
23
21
  ## Usage
24
22
 
25
- TODO: Write usage instructions here
23
+ 1. Install the `couve` gem.
24
+
25
+ ```ruby
26
+ gem install couve
27
+ ```
28
+
29
+ 2. Run the following command in your terminal, providing the path to your JSON coverage file and the desired output file.
30
+
31
+ ```
32
+ $ couve path/to/coverage.json path/to/output.html
33
+ ```
34
+
35
+ Couve will process the coverage data and generate a human-readable HTML report, providing insights into your project's test coverage.
36
+
37
+ ### Output formats
38
+
39
+ Couve picks the output format from the output file's extension:
40
+
41
+ - `.html` (or anything else) — a self-contained, styled **HTML** report. Great for uploading as a CI artifact.
42
+ - `.md` — a **Markdown** report. Great for posting as a pull request comment.
43
+
44
+ ```
45
+ $ couve path/to/coverage.json path/to/report.html # HTML report
46
+ $ couve path/to/coverage.json path/to/report.md # Markdown report
47
+ ```
48
+
49
+ The Markdown report renders as a GitHub-flavored table, with a colored rating indicator (🔴/🟡/🟢) reflecting each file's coverage level:
50
+
51
+ ```markdown
52
+ ## Coverage problems
53
+
54
+ | Rating | Coverage | File | Not covered lines |
55
+ | :---: | ---: | :--- | :--- |
56
+ | 🔴 | 30% | app/models/foo.rb | 3, 8, 21 |
57
+ | 🟡 | 50% | app/services/bar.rb | 5, 6 |
58
+ ```
59
+
60
+ A typical CI setup keeps the HTML report as an artifact and posts the Markdown report to the pull request, e.g. with the GitHub CLI:
61
+
62
+ ```sh
63
+ couve coverage.json coverage.html # upload as a CI artifact
64
+ couve coverage.json coverage.md # post to the PR
65
+ gh pr comment "$PR_NUMBER" --body-file coverage.md
66
+ ```
26
67
 
27
68
  ## Development
28
69
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
70
+ To contribute to Couve's development, follow these steps:
30
71
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
72
+ 1. Clone the repository from GitHub:
73
+
74
+ ```
75
+ $ git clone https://github.com/asseinfo/couve.git
76
+ ```
77
+
78
+ 2. Install the gem dependencies by running:
79
+
80
+ ```
81
+ $ bin/setup
82
+ ```
83
+
84
+ 3. Run the tests to ensure everything is set up correctly:
85
+
86
+ ```
87
+ $ rake spec
88
+ ```
89
+
90
+ 4. You can also use the interactive prompt to experiment with the code:
91
+
92
+ ```
93
+ $ bin/console
94
+ ```
32
95
 
33
96
  ## Contributing
34
97
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/couve.
98
+ We welcome bug reports and pull requests from the community. If you encounter any issues with Couve or have suggestions for improvements, please open an issue on [GitHub](https://github.com/asseinfo/couve) to let us know.
36
99
 
37
- ## License
100
+ If you'd like to contribute directly, please follow these steps:
101
+
102
+ 1. Fork the repository on GitHub.
103
+
104
+ 2. Create a new branch from the `main` branch.
38
105
 
39
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
106
+ 3. Make your changes and commit them with descriptive commit messages.
107
+
108
+ 4. Push your changes to your fork.
109
+
110
+ 5. Submit a pull request to the `main` branch of the original repository.
111
+
112
+ We appreciate your contributions and will review and merge pull requests as appropriate.
113
+
114
+ ## License
115
+ Couve is released under the [MIT License](https://opensource.org/licenses/MIT), which allows you to use, modify, and distribute the gem freely. See the LICENSE file for more details.
data/lib/couve/parser.rb CHANGED
@@ -38,6 +38,23 @@ module Couve
38
38
  HTML
39
39
  end
40
40
 
41
+ def to_markdown
42
+ rows = @coverage[:source_files].map do |source_file|
43
+ percentage = source_file[:covered_percent].round(2)
44
+ indicator = percentage_indicator(percentage)
45
+
46
+ "| #{indicator} | #{percentage}% | #{source_file[:name]} | #{not_covered_lines(source_file)} |"
47
+ end
48
+
49
+ <<~MARKDOWN
50
+ ## Coverage problems
51
+
52
+ | Rating | Coverage | File | Not covered lines |
53
+ | :---: | ---: | :--- | :--- |
54
+ #{rows.join("\n")}
55
+ MARKDOWN
56
+ end
57
+
41
58
  private
42
59
 
43
60
  # rubocop:disable Metrics/MethodLength
@@ -84,6 +101,16 @@ module Couve
84
101
  end
85
102
  end
86
103
 
104
+ def percentage_indicator(percentage)
105
+ if percentage < 33.33
106
+ "🔴"
107
+ elsif percentage < 66.66
108
+ "🟡"
109
+ else
110
+ "🟢"
111
+ end
112
+ end
113
+
87
114
  def not_covered_lines(source_file)
88
115
  total_lines = JSON.parse(source_file[:coverage])
89
116
 
data/lib/couve/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Couve
4
- VERSION = "0.5.0"
4
+ VERSION = "0.6.0"
5
5
  end
data/lib/couve.rb CHANGED
@@ -11,8 +11,10 @@ module Couve
11
11
  coverage = File.read(coverage_file)
12
12
  parser = Couve::Parser.new(coverage)
13
13
 
14
+ report = output_file.end_with?(".md") ? parser.to_markdown : parser.to_html
15
+
14
16
  File.open(output_file, "w") do |f|
15
- f.puts parser.to_html
17
+ f.puts report
16
18
  end
17
19
  end
18
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: couve
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cezinha
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-24 00:00:00.000000000 Z
11
+ date: 2026-06-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -58,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
58
58
  - !ruby/object:Gem::Version
59
59
  version: '0'
60
60
  requirements: []
61
- rubygems_version: 3.2.32
61
+ rubygems_version: 3.5.16
62
62
  signing_key:
63
63
  specification_version: 4
64
64
  summary: Generate a human readable report for CodeClimate test-reporter gem.