test plugin install diagnostics for EPERM failures
Co-authored-by: Haze <hazeone@users.noreply.github.com>
This commit is contained in:
@@ -151,4 +151,38 @@ describe('plugin installer diagnostics', () => {
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
it('logs EPERM diagnostics with source and target paths', async () => {
|
||||
setPlatform('win32');
|
||||
mockHomedir.mockReturnValue('C:\\Users\\test');
|
||||
|
||||
const sourceDir = 'C:\\Program Files\\ClawX\\resources\\openclaw-plugins\\wecom';
|
||||
const sourceManifestSuffix = 'Program Files\\ClawX\\resources\\openclaw-plugins\\wecom\\openclaw.plugin.json';
|
||||
|
||||
mockExistsSync.mockImplementation((input: string) => String(input).includes(sourceManifestSuffix));
|
||||
mockCpSync.mockImplementation(() => {
|
||||
const error = new Error('access denied') as NodeJS.ErrnoException;
|
||||
error.code = 'EPERM';
|
||||
throw error;
|
||||
});
|
||||
|
||||
const { ensurePluginInstalled } = await import('@electron/utils/plugin-install');
|
||||
const result = ensurePluginInstalled('wecom', [sourceDir], 'WeCom');
|
||||
|
||||
expect(result.installed).toBe(false);
|
||||
expect(result.warning).toBe('Failed to install bundled WeCom plugin mirror');
|
||||
|
||||
expect(mockLoggerWarn).toHaveBeenCalledWith(
|
||||
'[plugin] Bundled mirror install failed for WeCom',
|
||||
expect.objectContaining({
|
||||
sourceDir,
|
||||
targetDir: expect.stringContaining('.openclaw/extensions/wecom'),
|
||||
platform: 'win32',
|
||||
attempts: [
|
||||
expect.objectContaining({ attempt: 1, code: 'EPERM' }),
|
||||
expect.objectContaining({ attempt: 2, code: 'EPERM' }),
|
||||
],
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user