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

archetech / archon / 30765789482
94%

Build:
DEFAULT BRANCH: main
Ran 02 Aug 2026 08:33PM UTC
Jobs 1
Files 88
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

02 Aug 2026 08:30PM UTC coverage: 92.944% (+0.1%) from 92.801%
30765789482

push

github

web-flow
test(mcp-server): cover the tool handlers' optional and failure branches (#827)

tools.ts sat at 78.2% branches against 99.2% lines — the suite drove every
tool with fully-populated arguments, leaving the "argument omitted" and
failure sides untaken. 8 tests added (42 -> 50), taking it to 96.2%
branches.

What the new tests pin down:

- `includeIds: false` must survive rather than collapsing to undefined.
  The handler writes `includeIds === undefined ? undefined : {...}`
  precisely to preserve an explicit false, and nothing tested it.
- get_property against non-object DID data (undefined, null, a string, an
  array, a number). The guard exists so indexing a string or array cannot
  return a nonsense "property" — which an agent would then act on.
- The legacy `tool()` registration path, for an MCP server without
  `registerTool`. Previously untested, so a regression there would have
  stayed invisible until an older client connected.
- view_credential with a missing credential returns proofValid false
  without calling verifyProof at all.
- Inline data decoded as utf8 as well as base64, and the default names
  ('item', 'attachment') when none is supplied.
- resolve_id falling back to the current ID, and erroring when there is
  none.

Three of my first attempts were wrong about the codebase rather than the
code: keymaster calls live on runtime.keymaster (not runtime.node), the
image tool is archon_get_asset_image, and signing is archon_sign_file
whose schema already rejects most non-objects — so signableJson's guard
is only reachable with an array, which JsonObjectSchema admits but
signing must refuse. That array case is the branch that needed covering.

Three branches remain, and they are defensive rather than reachable. One
is worth noting: the readOnly check inside `wrapped` (tools.ts:641) is
unreachable, because the identical condition above it returns before the
tool is ever registered — a mutating tool in read-only mode never gets a
`wrapped` a... (continued)

3521 of 4060 branches covered (86.72%)

Branch coverage included in aggregate %.

8163 of 8511 relevant lines covered (95.91%)

673.82 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30765789482.1 02 Aug 2026 08:33PM UTC 176
94.14
GitHub Action Run
Source Files on build 30765789482
  • Tree
  • List 88
  • Changed 73
  • Source Changed 0
  • Coverage Changed 73
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30765789482
  • 58864eab on github
  • Prev Build on main (#30765152346)
  • Next Build on main (#30766329840)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc