test: stabilize storage loss validation races
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
This commit is contained in:
@@ -17,6 +17,7 @@ app.setPath('userData', join(root, 'electron'))
|
|||||||
|
|
||||||
async function run(): Promise<void> {
|
async function run(): Promise<void> {
|
||||||
await app.whenReady()
|
await app.whenReady()
|
||||||
|
await chmod(root, 0o700)
|
||||||
const options = { assistantPath: join(root, 'assistant.sqlite'), knowledgePath: join(root, 'knowledge.sqlite'),
|
const options = { assistantPath: join(root, 'assistant.sqlite'), knowledgePath: join(root, 'knowledge.sqlite'),
|
||||||
defaultRootPath: root, userDataPath: root, entryPath: join(root, 'desktop-storage-entry.mjs'),
|
defaultRootPath: root, userDataPath: root, entryPath: join(root, 'desktop-storage-entry.mjs'),
|
||||||
readerWorkerPath: join(root, 'readonly-query-worker.cjs'), upgradeWorkerPath: join(root, 'assistant-storage-worker.cjs') }
|
readerWorkerPath: join(root, 'readonly-query-worker.cjs'), upgradeWorkerPath: join(root, 'assistant-storage-worker.cjs') }
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ it('awaits a termination already in progress before close settles or capacity ca
|
|||||||
const transport = new DelayedTransport()
|
const transport = new DelayedTransport()
|
||||||
const reader = new ReadonlyQueryReader('assistant', '', '', Date.now, { createTransport: () => transport })
|
const reader = new ReadonlyQueryReader('assistant', '', '', Date.now, { createTransport: () => transport })
|
||||||
const pending = reader.call('assistant.save', [])
|
const pending = reader.call('assistant.save', [])
|
||||||
|
await Promise.resolve()
|
||||||
const rejected = expect(pending).rejects.toMatchObject({ code: 'STORAGE_UNCONFIRMED' })
|
const rejected = expect(pending).rejects.toMatchObject({ code: 'STORAGE_UNCONFIRMED' })
|
||||||
transport.emit('error', new Error('host failed'))
|
transport.emit('error', new Error('host failed'))
|
||||||
reader.resetBackoffForTest()
|
reader.resetBackoffForTest()
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ describe('assistant readonly worker', () => {
|
|||||||
// Termination races the response. Either outcome is valid here; the
|
// Termination races the response. Either outcome is valid here; the
|
||||||
// dedicated crash tests cover deterministic rejection propagation.
|
// dedicated crash tests cover deterministic rejection propagation.
|
||||||
await inFlight.then(
|
await inFlight.then(
|
||||||
result => expect(result).toEqual(expected[1]),
|
result => expect(result).toEqual(database.listConversationSummaries([conversations[3]!.id])),
|
||||||
error => expect(error).toBeInstanceOf(ReadonlyWorkerUnavailableError),
|
error => expect(error).toBeInstanceOf(ReadonlyWorkerUnavailableError),
|
||||||
)
|
)
|
||||||
} finally { database.close() }
|
} finally { database.close() }
|
||||||
|
|||||||
@@ -1892,7 +1892,7 @@ describe('SettingsPanel runtime files', () => {
|
|||||||
const modelName = kind === 'embedding' ? embeddingCatalogEntry.displayName : speechCatalog[0]!.displayName
|
const modelName = kind === 'embedding' ? embeddingCatalogEntry.displayName : speechCatalog[0]!.displayName
|
||||||
const download = await screen.findByRole('button', { name: `下载 ${modelName}` })
|
const download = await screen.findByRole('button', { name: `下载 ${modelName}` })
|
||||||
expect(screen.queryByText('当前来源不可下载')).not.toBeInTheDocument()
|
expect(screen.queryByText('当前来源不可下载')).not.toBeInTheDocument()
|
||||||
expect(screen.getByRole('button', { name: '模型下载源' })).toHaveFocus()
|
await waitFor(() => expect(screen.getByRole('button', { name: '模型下载源' })).toHaveFocus())
|
||||||
fireEvent.click(download)
|
fireEvent.click(download)
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
if (kind === 'embedding') expect(installEmbeddingModel).toHaveBeenCalledWith(embeddingCatalogEntry.id, 'hugging-face')
|
if (kind === 'embedding') expect(installEmbeddingModel).toHaveBeenCalledWith(embeddingCatalogEntry.id, 'hugging-face')
|
||||||
|
|||||||
Reference in New Issue
Block a user