fix: restore update command helpers (#1857)
Exported package-manager helpers used by openchamber update Added regression coverage for the update-available path
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import fs from 'fs';
|
||||
import os from 'os';
|
||||
import path from 'path';
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { createUpdateCommand } from './commands-update.js';
|
||||
|
||||
async function withTempOpenChamberDataDir(fn) {
|
||||
const previous = process.env.OPENCHAMBER_DATA_DIR;
|
||||
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'openchamber-update-test-'));
|
||||
process.env.OPENCHAMBER_DATA_DIR = dir;
|
||||
try {
|
||||
return await fn(dir);
|
||||
} finally {
|
||||
if (typeof previous === 'string') {
|
||||
process.env.OPENCHAMBER_DATA_DIR = previous;
|
||||
} else {
|
||||
delete process.env.OPENCHAMBER_DATA_DIR;
|
||||
}
|
||||
fs.rmSync(dir, { recursive: true, force: true });
|
||||
}
|
||||
}
|
||||
|
||||
describe('update command', () => {
|
||||
it('uses the package-manager helpers on the update-available path', async () => {
|
||||
await withTempOpenChamberDataDir(async () => {
|
||||
const originalWrite = process.stdout.write;
|
||||
process.stdout.write = vi.fn(() => true);
|
||||
const executeUpdate = vi.fn(() => ({ success: true, exitCode: 0 }));
|
||||
const updateCommand = createUpdateCommand({
|
||||
packageManagerPath: '/fake/package-manager.js',
|
||||
serveCommand: vi.fn(),
|
||||
importFromFilePath: vi.fn(async () => ({
|
||||
checkForUpdates: vi.fn(async () => ({ available: true, version: '9.9.9' })),
|
||||
detectPackageManager: vi.fn(() => 'npm'),
|
||||
executeUpdate,
|
||||
getCurrentVersion: vi.fn(() => '1.0.0'),
|
||||
})),
|
||||
});
|
||||
|
||||
try {
|
||||
await updateCommand({ json: true });
|
||||
|
||||
expect(executeUpdate).toHaveBeenCalledWith('npm', { silent: true });
|
||||
} finally {
|
||||
process.stdout.write = originalWrite;
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user