mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-13 07:30:52 -07:00
66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
import { getPackageJson } from './package.js';
|
|
import { readPackageUp } from 'read-package-up';
|
|
|
|
vi.mock('read-package-up', () => ({
|
|
readPackageUp: vi.fn(),
|
|
}));
|
|
|
|
describe('getPackageJson', () => {
|
|
beforeEach(() => {
|
|
vi.resetAllMocks();
|
|
});
|
|
|
|
afterEach(() => {
|
|
vi.restoreAllMocks();
|
|
});
|
|
|
|
it('should return packageJson when found', async () => {
|
|
const expectedPackageJsonResult = { name: 'test-pkg', version: '1.2.3' };
|
|
vi.mocked(readPackageUp).mockResolvedValue({
|
|
packageJson: expectedPackageJsonResult,
|
|
path: '/path/to/package.json',
|
|
});
|
|
|
|
const result = await getPackageJson('/some/path');
|
|
expect(result).toEqual(expectedPackageJsonResult);
|
|
expect(readPackageUp).toHaveBeenCalledWith({
|
|
cwd: '/some/path',
|
|
normalize: false,
|
|
});
|
|
});
|
|
|
|
it.each([
|
|
{
|
|
description: 'no package.json is found',
|
|
setup: () => vi.mocked(readPackageUp).mockResolvedValue(undefined),
|
|
expected: undefined,
|
|
},
|
|
{
|
|
description: 'non-semver versions (when normalize is false)',
|
|
setup: () =>
|
|
vi.mocked(readPackageUp).mockResolvedValue({
|
|
packageJson: { name: 'test-pkg', version: '2024.60' },
|
|
path: '/path/to/package.json',
|
|
}),
|
|
expected: { name: 'test-pkg', version: '2024.60' },
|
|
},
|
|
{
|
|
description: 'readPackageUp throws',
|
|
setup: () =>
|
|
vi.mocked(readPackageUp).mockRejectedValue(new Error('Read error')),
|
|
expected: undefined,
|
|
},
|
|
])('should handle $description', async ({ setup, expected }) => {
|
|
setup();
|
|
const result = await getPackageJson('/some/path');
|
|
expect(result).toEqual(expected);
|
|
});
|
|
});
|