test(tui): stabilize workdir snapshot output
This commit is contained in:
@@ -26,8 +26,8 @@ buffer
|
|||||||
style 0-46 fg=green
|
style 0-46 fg=green
|
||||||
12| "$ pwd "
|
12| "$ pwd "
|
||||||
style 0-4 dim
|
style 0-4 dim
|
||||||
13| "/workspace/project "
|
13| "/workspace/project "
|
||||||
style 0-59 dim
|
style 0-17 dim
|
||||||
14| "[exit 0] "
|
14| "[exit 0] "
|
||||||
style 0-7 dim
|
style 0-7 dim
|
||||||
15| "Model wait 0.0s · Completed 2026-07-21 12:00:00 "
|
15| "Model wait 0.0s · Completed 2026-07-21 12:00:00 "
|
||||||
|
|||||||
@@ -56,6 +56,8 @@ interface Scenario {
|
|||||||
seedWorkspace?: boolean
|
seedWorkspace?: boolean
|
||||||
/** Add the launcher's model-visible DSH source checkout at this fixed path. */
|
/** Add the launcher's model-visible DSH source checkout at this fixed path. */
|
||||||
harnessSourceRoot?: string
|
harnessSourceRoot?: string
|
||||||
|
/** Replace the real `pwd` result with a portable fixed-length workspace path. */
|
||||||
|
normalizePwdResult?: boolean
|
||||||
/**
|
/**
|
||||||
* Load the opt-in `todo_write` tool for this scenario. The shipped tui-agent
|
* Load the opt-in `todo_write` tool for this scenario. The shipped tui-agent
|
||||||
* config omits it, so only the todo-plan scenario (the enabled-path proof)
|
* config omits it, so only the todo-plan scenario (the enabled-path proof)
|
||||||
@@ -103,6 +105,7 @@ const SCENARIOS: Scenario[] = [
|
|||||||
expectedTools: ['bash'],
|
expectedTools: ['bash'],
|
||||||
recorded: true,
|
recorded: true,
|
||||||
harnessSourceRoot: '/opt/dsh-source',
|
harnessSourceRoot: '/opt/dsh-source',
|
||||||
|
normalizePwdResult: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'parallel-file-reads',
|
name: 'parallel-file-reads',
|
||||||
@@ -323,6 +326,14 @@ async function runScenario(scenario: Scenario): Promise<ScenarioResult> {
|
|||||||
await cp(source, cwd, { recursive: true })
|
await cp(source, cwd, { recursive: true })
|
||||||
}
|
}
|
||||||
ctx = await mountScenarioContext(scenario, cwd, displayCwd, fixtureFile, childFiles, replayRoot)
|
ctx = await mountScenarioContext(scenario, cwd, displayCwd, fixtureFile, childFiles, replayRoot)
|
||||||
|
if (scenario.normalizePwdResult === true) {
|
||||||
|
ctx.on('tools/post-execute', async (exec, result, next) => {
|
||||||
|
const args = exec.arguments as { command?: unknown }
|
||||||
|
return exec.name === 'bash' && args.command === 'pwd' && !result.isError
|
||||||
|
? { kind: 'accept', content: [{ type: 'text', text: '/workspace/project\n' }] }
|
||||||
|
: next()
|
||||||
|
})
|
||||||
|
}
|
||||||
const disposedSessions: Session[] = []
|
const disposedSessions: Session[] = []
|
||||||
ctx.on('session/disposed', (session) => { disposedSessions.push(session) })
|
ctx.on('session/disposed', (session) => { disposedSessions.push(session) })
|
||||||
const workflowEvents: string[] = []
|
const workflowEvents: string[] = []
|
||||||
|
|||||||
Reference in New Issue
Block a user