• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jhheider / penknife / 28778353418
76%

Build:
DEFAULT BRANCH: main
Ran 06 Jul 2026 08:30AM UTC
Jobs 1
Files 32
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 Jul 2026 08:30AM UTC coverage: 40.168% (-0.1%) from 40.292%
28778353418

push

github

web-flow
CLI correctness and message fixes; graceful gh fallback (#29)

* CLI correctness and message fixes; graceful gh fallback

From the correctness and error-idioms reviews.

Correctness (cli.rs):
- The path resolver no longer rewrites backslashes. That corrupted a
  Unix filename containing a literal backslash, and worse, it
  disagreed with the scanner's rel_path (which does no such rewrite),
  so on Windows a lookup could miss the stored entry and create a
  duplicate gist. It now matches the scanner exactly.
- `status` surfaces read and live-check errors instead of treating an
  unreadable file as empty (which faked drift) or exiting 0 after a
  network failure (which gave a hook false confidence). Any error now
  makes the run exit 5.
- A failed local-state save after a `push`/`url` now exits 5 rather
  than 0, so a script knows the gist is live but the local record is
  stale (which would otherwise cause a duplicate push next time). The
  URL still prints to stdout first.
- The bare `Err(2)` gets the named `EXIT_USAGE` constant.

Messages:
- `resolve_token` treats an unspawnable `gh` (not installed) as "no
  token" rather than a confusing "failed to run gh" error, so the
  caller shows the actionable sign-in guidance.
- The TUI's dead-end "No GitHub token available." becomes a shared
  hint that names the fix and the restart. The "store save failed"
  family (inconsistent wording and casing, leaking the internal
  "store" concept) unifies on "saving local state failed".
- `url`'s drift message now suggests inspecting before overwriting,
  matching `push`. `report_gist_error` prints the inner gist error
  instead of leaking PkError's "Gist error:" wrapper.
- Subcommand help now states the auth requirement, and `search`
  notes it covers .md files.

color-eyre stays (the earlier anyhow swap was gratuitous churn).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Normalize rel_paths to forward slashes; gate coverage to main

The Windows test fa... (continued)

18 of 67 new or added lines in 6 files covered. (26.87%)

3 existing lines in 1 file now uncovered.

3064 of 7628 relevant lines covered (40.17%)

2.1 hits per line

Uncovered Changes

Lines Coverage ∆ File
23
25.3
-1.02% crates/penknife/src/cli.rs
18
4.66
-0.02% crates/penknife/src/app/gist.rs
6
0.0
0.0% crates/penknife/src/app/files.rs
1
75.86
-3.45% crates/penknife-gist/src/auth.rs
1
73.08
0.85% crates/penknife/src/scanner.rs

Coverage Regressions

Lines Coverage ∆ File
3
25.3
-1.02% crates/penknife/src/cli.rs
Jobs
ID Job ID Ran Files Coverage
1 28778353418.1 06 Jul 2026 08:30AM UTC 32
40.17
GitHub Action Run
Source Files on build 28778353418
  • Tree
  • List 32
  • Changed 7
  • Source Changed 7
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #28778353418
  • 0f467f23 on github
  • Prev Build on main (#28777101593)
  • Next Build on main (#28778635793)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc