test(snapshot): enforce portable fixture invariants
This commit is contained in:
@@ -390,6 +390,14 @@ describe('tokenizeSessionFixtureTmpdir', () => {
|
||||
},
|
||||
reportedCwd: '/tmp/acp-snap-cwd-abc123',
|
||||
},
|
||||
{
|
||||
name: 'Windows',
|
||||
context: {
|
||||
sessionIds: [],
|
||||
cwd: String.raw`C:\Users\runner\AppData\Local\Temp\acp-snap-cwd-abc123`,
|
||||
},
|
||||
reportedCwd: String.raw`C:\Users\runner\AppData\Local\Temp\acp-snap-cwd-abc123`,
|
||||
},
|
||||
])('stores $name temporary workspaces with one portable root token', ({ context, reportedCwd }) => {
|
||||
const raw = [
|
||||
JSON.stringify({ type: 'session', id: 's', createdAt: 1, cwd: context.cwd }),
|
||||
@@ -400,7 +408,7 @@ describe('tokenizeSessionFixtureTmpdir', () => {
|
||||
data: {
|
||||
content: [{
|
||||
type: 'text',
|
||||
text: `wrote ${reportedCwd}/proof.txt. cwd ${context.cwd}. Next; kept ${context.cwd}-backup, ${context.cwd}.backup, and /tmp/authored.txt`,
|
||||
text: `wrote ${reportedCwd}/proof.txt. alias /different/root/acp-snap-cwd-abc123/alias.txt. cwd ${context.cwd}. Next; kept ${context.cwd}-backup, ${context.cwd}.backup, and /tmp/authored.txt`,
|
||||
}],
|
||||
},
|
||||
}),
|
||||
@@ -408,14 +416,26 @@ describe('tokenizeSessionFixtureTmpdir', () => {
|
||||
].join('\n')
|
||||
|
||||
const out = tokenizeSessionFixtureTmpdir(raw)
|
||||
const result = JSON.parse(out.split('\n')[1] as string) as {
|
||||
data: { content: { text: string }[] }
|
||||
}
|
||||
const resultText = (result.data.content[0] as { text: string }).text
|
||||
|
||||
expect(out).toContain('"cwd":"{{tmpdir}}/acp-snap-cwd-abc123"')
|
||||
expect(out).toContain('wrote {{tmpdir}}/acp-snap-cwd-abc123/proof.txt')
|
||||
expect(out).toContain('cwd {{tmpdir}}/acp-snap-cwd-abc123. Next')
|
||||
expect(out).toContain(`${context.cwd}-backup`)
|
||||
expect(out).toContain(`${context.cwd}.backup`)
|
||||
expect(out).toContain('/tmp/authored.txt')
|
||||
expect(out).not.toContain(`${reportedCwd}/proof.txt`)
|
||||
expect(resultText).toContain('wrote {{tmpdir}}/acp-snap-cwd-abc123/proof.txt')
|
||||
expect(resultText).toContain('alias {{tmpdir}}/acp-snap-cwd-abc123/alias.txt')
|
||||
expect(resultText).toContain('cwd {{tmpdir}}/acp-snap-cwd-abc123. Next')
|
||||
expect(resultText).toContain(`${context.cwd}-backup`)
|
||||
expect(resultText).toContain(`${context.cwd}.backup`)
|
||||
expect(resultText).toContain('/tmp/authored.txt')
|
||||
expect(resultText).not.toContain(`${reportedCwd}/proof.txt`)
|
||||
expect(tokenizeSessionFixtureTmpdir(out)).toBe(out)
|
||||
})
|
||||
|
||||
it('rejects a log without a session cwd', () => {
|
||||
expect(() => tokenizeSessionFixtureTmpdir('')).toThrow(
|
||||
'acp-snapshot: cannot tokenize a cwd without a basename',
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user