Skip to content

Commit 2dd381a

Browse files
committed
Update CONTRIBUTING.md to include Simplecov
1 parent 27e37d5 commit 2dd381a

File tree

1 file changed

+38
-7
lines changed

1 file changed

+38
-7
lines changed

.github/CONTRIBUTING.md

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ If you encounter problems or have ideas for improvements or new features, please
1515
## Pull requests
1616

1717
1. Fork the project.
18-
2. Create a feature branch.
19-
3. Make sure to add tests.
20-
4. Make sure the test suite passes (run `rake`).
21-
5. Add a [changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md) entry.
22-
6. Commit your changes.
23-
7. Push to the branch.
24-
8. Create new Pull Request.
18+
1. Create a feature branch.
19+
1. Make sure to add tests.
20+
1. Make sure the test suite passes (run `rake`).
21+
1. Add a [changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md) entry.
22+
1. Commit your changes.
23+
1. Push to the branch.
24+
1. Create new Pull Request.
2525

2626
### Spell Checking
2727

@@ -51,6 +51,37 @@ We are running [mdformat](https://github.com/executablebooks/mdformat) for forma
5151
$ mdformat . --number
5252
```
5353

54+
### Test Coverage - Line and Branch
55+
56+
We are using [Simplecov](https://github.com/colszowka/simplecov) to track test coverage.
57+
58+
It is included and reported when you run `bundle exec rake` or `bundle exec rspec`.
59+
60+
To view the coverage report, open the `coverage/index.html` file in your browser.
61+
62+
E.g. on macOS:
63+
64+
```console
65+
$ open coverage/index.html
66+
```
67+
68+
If you have unreachable lines, you can add `# :nocov` around those lines. The code itself or a comment should explain why the line is unreachable.
69+
70+
Example:
71+
72+
```ruby
73+
# :nocov:
74+
raise ArgumentError("Unsupported style :#{style}")
75+
# :nocov:
76+
```
77+
78+
This can happen for a few reasons, including:
79+
80+
1. When you handle config with a case statement and there is no else block
81+
1. When matching with a node pattern even when you handle all cases: all other node types will be excluded before reaching your handler, because the node pattern will not match them.
82+
83+
You will need full line and branch coverage to merge. This helps detect edge cases and prevent errors.
84+
5485
## Creating new cops
5586

5687
- Document examples of good and bad code in your cop.

0 commit comments

Comments
 (0)