fix(cli): render verbose doctor check details
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -57,6 +57,19 @@ export function formatVerbose(result: DoctorResult): string {
|
|||||||
}
|
}
|
||||||
lines.push("")
|
lines.push("")
|
||||||
|
|
||||||
|
for (const check of results) {
|
||||||
|
if (!check.details || check.details.length === 0) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
lines.push(`${color.bold(check.name)}`)
|
||||||
|
lines.push(`${color.dim("\u2500".repeat(40))}`)
|
||||||
|
for (const detail of check.details) {
|
||||||
|
lines.push(detail)
|
||||||
|
}
|
||||||
|
lines.push("")
|
||||||
|
}
|
||||||
|
|
||||||
const allIssues = results.flatMap((r) => r.issues)
|
const allIssues = results.flatMap((r) => r.issues)
|
||||||
if (allIssues.length > 0) {
|
if (allIssues.length > 0) {
|
||||||
lines.push(`${color.bold("Issues")}`)
|
lines.push(`${color.bold("Issues")}`)
|
||||||
|
|||||||
@@ -51,6 +51,23 @@ function createDoctorResultWithIssues(): DoctorResult {
|
|||||||
return base
|
return base
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function createDoctorResultWithDetails(): DoctorResult {
|
||||||
|
const base = createDoctorResult()
|
||||||
|
base.results = [
|
||||||
|
...base.results,
|
||||||
|
{
|
||||||
|
name: "Models",
|
||||||
|
status: "pass",
|
||||||
|
message: "2 agents, 1 category, 0 overrides",
|
||||||
|
details: ["Available models: openai/gpt-5.4", "Agent sisyphus -> openai/gpt-5.4"],
|
||||||
|
issues: [],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
base.summary.total = 3
|
||||||
|
base.summary.passed = 2
|
||||||
|
return base
|
||||||
|
}
|
||||||
|
|
||||||
describe("formatDoctorOutput", () => {
|
describe("formatDoctorOutput", () => {
|
||||||
describe("#given default mode", () => {
|
describe("#given default mode", () => {
|
||||||
it("shows System OK when no issues", async () => {
|
it("shows System OK when no issues", async () => {
|
||||||
@@ -137,6 +154,20 @@ describe("formatDoctorOutput", () => {
|
|||||||
expect(output).toContain("0 failed")
|
expect(output).toContain("0 failed")
|
||||||
expect(output).toContain("1 warnings")
|
expect(output).toContain("1 warnings")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("renders check details sections such as Models", async () => {
|
||||||
|
//#given
|
||||||
|
const result = createDoctorResultWithDetails()
|
||||||
|
const { formatDoctorOutput } = await import(`./formatter?verbose-details-${Date.now()}`)
|
||||||
|
|
||||||
|
//#when
|
||||||
|
const output = stripAnsi(formatDoctorOutput(result, "verbose"))
|
||||||
|
|
||||||
|
//#then
|
||||||
|
expect(output).toContain("Models")
|
||||||
|
expect(output).toContain("Available models: openai/gpt-5.4")
|
||||||
|
expect(output).toContain("Agent sisyphus -> openai/gpt-5.4")
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("formatJsonOutput", () => {
|
describe("formatJsonOutput", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user