1
0
Fork 0
mirror of https://gitea.com/gitea/tea.git synced 2026-04-25 08:37:48 +02:00
tea/cmd/pulls
Bo-Yi Wu 9e0a6203ae feat(pulls): add ci status field to pull request list (#956)
## Summary

- Add `"ci"` as a new selectable field for `tea pr list --fields`, allowing users to see CI status across multiple PRs at a glance
- Fetch CI status via `GetCombinedStatus` API **only when the `ci` field is explicitly requested** via `--fields`, avoiding unnecessary API calls in default usage
- Improve CI status display in both detail and list views:
  - **Detail view** (`tea pr <index>`): show each CI check with symbol, context name, description, and clickable link to CI run
  - **List view** (`tea pr list --fields ci`): show symbol + context name per CI check (e.g., `✓ lint,  build,  test`)
  - **Machine-readable output**: return raw state string (e.g., `success`, `pending`)
- Replace pending CI symbol from `⭮` to `` for better readability
- Extract `formatCIStatus` helper and reuse it in `PullDetails` to reduce code duplication
- Add comprehensive tests for CI status formatting and PR list integration

## Detail View Example

```
- CI:
  - ✓ [**lint**](https://ci.example.com/lint): Lint passed
  -  [**build**](https://ci.example.com/build): Build is running
  -  [**test**](https://ci.example.com/test): 3 tests failed
```

## List View Example

```
INDEX  TITLE       STATE  CI
123    Fix bug     open   ✓ lint,  build,  test
```

## Usage

```bash
# Show CI status column in list
tea pr list --fields index,title,state,ci

# Default output is unchanged (no CI column, no extra API calls)
tea pr list
```

## Files Changed

- `cmd/pulls/list.go` — conditionally fetch CI status per PR when `ci` field is selected
- `modules/print/pull.go` — add `ci` field, `formatCIStatus` helper, improve detail/list CI display
- `modules/print/pull_test.go` — comprehensive tests for CI status formatting

## Test plan

- [x] `go build ./...` passes
- [x] `go test ./...` passes (11 new tests)
- [x] `tea pr list` — default output unchanged, no extra API calls
- [x] `tea pr list --fields index,title,state,ci` — CI column with context names
- [x] `tea pr <index>` — CI section shows each check with name, description, and link
- [x] `tea pr list --fields ci -o csv` — machine-readable output shows raw state strings

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: https://gitea.com/gitea/tea/pulls/956
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: Bo-Yi Wu <appleboy.tw@gmail.com>
Co-committed-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2026-04-10 17:29:15 +00:00
..
approve.go replace log.Fatal/os.Exit with error returns (#941) 2026-03-27 03:36:44 +00:00
checkout.go replace log.Fatal/os.Exit with error returns (#941) 2026-03-27 03:36:44 +00:00
clean.go replace log.Fatal/os.Exit with error returns (#941) 2026-03-27 03:36:44 +00:00
close.go Code Cleanup (#869) 2026-02-02 22:39:26 +00:00
create.go replace log.Fatal/os.Exit with error returns (#941) 2026-03-27 03:36:44 +00:00
edit.go feat(pulls): add edit subcommand for pull requests (#944) 2026-04-05 05:35:15 +00:00
list.go feat(pulls): add ci status field to pull request list (#956) 2026-04-10 17:29:15 +00:00
merge.go replace log.Fatal/os.Exit with error returns (#941) 2026-03-27 03:36:44 +00:00
reject.go replace log.Fatal/os.Exit with error returns (#941) 2026-03-27 03:36:44 +00:00
reopen.go Code Cleanup (#869) 2026-02-02 22:39:26 +00:00
resolve.go feat(pulls): add resolve, unresolve and review-comments subcommands (#948) 2026-04-08 03:36:09 +00:00
review.go replace log.Fatal/os.Exit with error returns (#941) 2026-03-27 03:36:44 +00:00
review_comments.go feat(pulls): add resolve, unresolve and review-comments subcommands (#948) 2026-04-08 03:36:09 +00:00
review_helpers.go feat(pulls): add resolve, unresolve and review-comments subcommands (#948) 2026-04-08 03:36:09 +00:00
unresolve.go feat(pulls): add resolve, unresolve and review-comments subcommands (#948) 2026-04-08 03:36:09 +00:00