Compare commits

..

2 commits

Author SHA1 Message Date
68d6191154 chore: clean up output 2024-09-22 09:08:59 +01:00
673ff94759 build: Use codeberg mirror to self-test todo action
Some checks failed
Test / checks (map[name:nightly]) (push) Failing after 2s
Test / checks (map[name:stable]) (push) Failing after 2s
There is now a mirror of this repo at
https://codeberg.org/kemitix/todo-checker

We use both this original repo and that repo to verify
both are working as a valid actions.

Closes kemitix/forgejo-todo-checker#10
2024-09-22 09:07:48 +01:00
5 changed files with 49 additions and 21 deletions

View file

@ -27,9 +27,12 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Check TODOs
- name: Check TODOs (Origin)
uses: https://git.kemitix.net/kemitix/forgejo-todo-checker@v1.0.0
- name: Check TODOs (Codeberg mirror)
uses: kemitix/todo-checker@v1.0.0
- name: Machete
uses: https://git.kemitix.net/kemitix/rust@v2.1.0
with:

View file

@ -1,14 +1,38 @@
# forgejo-todo-checker
Checks your source files for TODO and FIXME comments, where they don't have an open issue number.
Checks your source files for TODO and FIXME comments, failing your build where they don't have an open issue number.
A ForgeJo Action.
- [A ForgeJo Action](https://forgejo.org/docs/next/user/actions/).
(Inspired by https://woodpecker-ci.org/plugins/TODO-Checker)
## Codeberg Mirror
Main development takes place on [git.kemitix.net](https://git.kemitix.net/kemitix/forgejo-todo-checker).
There is a mirror on Codeberg.org as [kemitix/todo-checker](https://codeberg.org/kemitix/todo-checker).
This mirror allows you to refer to the action as simply `kemitix/todo-checker@v1.0.0`.
## Usage
```yaml
jobs:
tests:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check TODOs
# Original:
# uses: https://git.kemitix.net/kemitix/forgejo-todo-checker@v1.0.0
# Codeberg mirror:
uses: kemitix/todo-checker@v1.0.0
```
## Comments Format
This Action only pays attention to comments in a particular format. e.g:
This Action looks for comments in the following formats:
```
// TODO: (#19) This is the comment
@ -31,31 +55,27 @@ The `ISSUE_NUMBER` must correspond to an **OPEN** Issue in the repo that the Act
If the issue has been closed or can't be found then the comment is marked as an error and the Check with fail.
## Example Use as a ForgeJo Action Step
```yaml
jobs:
tests:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check TODOs
uses: https://git.kemitix.net/kemitix/forgejo-todo-checker@v1.0.0
```
## Example Output
The output will be similar to the following if there are any errors:
```
Forgejo TODO Checker!
Repo: kemitix/my-projext
Repo: kemitix/my-project
Prefix: (#|//)\s*(TODO|FIXME)
Issues: ( |)(\(|\(#)(?P<ISSUE_NUMBER>\d+)(\))
Issues: \(#?(?P<ISSUE_NUMBER>\d+)\)
- Issue number missing: src/main.rs#38:
// TODO: implement this cool feature and get rich!
- Closed/Invalid Issue: (19) README.md#12:
>> 1 error in src/main.rs
- Closed/Invalid Issue: (19) src/model/line.rs#12:
// TODO: (#19) This is the comment
>> 1 error in src/model/line.rs
Error: Invalid or closed TODO/FIXMEs found
```

View file

@ -21,9 +21,11 @@ pub fn init_config(printer: &impl Printer, net: Network) -> Result<Config> {
.maybe_auth_token(std::env::var("REPO_TOKEN").ok())
.build();
printer.println("");
printer.println(format!("Repo: {}", config.repo()));
printer.println(format!("Prefix: {}", config.prefix_pattern()));
printer.println(format!("Issues: {}", config.issue_pattern()));
printer.println("");
Ok(config)
}

View file

@ -81,7 +81,10 @@ impl FileScanner for DefaultFileScanner {
_ => {}
});
if errors > 0 {
printer.println(format!(">> {errors} errors in {}", file.to_string_lossy()));
printer.println(format!(
">> {errors} errors in {}\n",
relative_path.to_string_lossy()
));
}
Ok(errors)

View file

@ -46,7 +46,7 @@ fn find_markers_in_dir() -> anyhow::Result<()> {
"- Issue number missing: file_with_invalids.txt#3:\n It contains a todo comment: // TODO: this is it\n",
"- Issue number missing: file_with_invalids.txt#5:\n It also contains a fix-me comment: // FIXME: and this is it\n",
"- Closed/Invalid Issue: (3) file_with_invalids.txt#9:\n We also have a todo comment: // TODO: (#3) and it has an issue number, but it is closed\n",
format!(">> 3 errors in {}", file_with_invalids.to_string_lossy()).as_str()
format!(">> 3 errors in {}\n", file_with_invalids.strip_prefix(fs.base())?.to_string_lossy()).as_str()
]
);
assert_eq!(errors, 3);