mirror of
https://github.com/n8n-io/n8n.git
synced 2026-06-02 09:47:00 +02:00
61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
import { execSync } from 'child_process';
|
|
|
|
import { tryReadGitUser } from './git';
|
|
|
|
vi.mock('child_process');
|
|
|
|
describe('git utils', () => {
|
|
describe('tryReadGitUser', () => {
|
|
const mockedExecSync = vi.mocked(execSync);
|
|
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
it('returns name and email if git config is set', () => {
|
|
mockedExecSync
|
|
.mockReturnValueOnce(Buffer.from('Alice\n'))
|
|
.mockReturnValueOnce(Buffer.from('alice@example.com\n'));
|
|
|
|
const user = tryReadGitUser();
|
|
|
|
expect(user).toEqual({ name: 'Alice', email: 'alice@example.com' });
|
|
expect(mockedExecSync).toHaveBeenCalledWith('git config --get user.name', {
|
|
stdio: ['pipe', 'pipe', 'ignore'],
|
|
});
|
|
expect(mockedExecSync).toHaveBeenCalledWith('git config --get user.email', {
|
|
stdio: ['pipe', 'pipe', 'ignore'],
|
|
});
|
|
});
|
|
|
|
it('handles missing git name', () => {
|
|
mockedExecSync
|
|
.mockImplementationOnce(() => {
|
|
throw new Error('no name');
|
|
})
|
|
.mockReturnValueOnce(Buffer.from('alice@example.com\n'));
|
|
|
|
const user = tryReadGitUser();
|
|
expect(user).toEqual({ name: '', email: 'alice@example.com' });
|
|
});
|
|
|
|
it('handles missing git email', () => {
|
|
mockedExecSync.mockReturnValueOnce(Buffer.from('Alice\n')).mockImplementationOnce(() => {
|
|
throw new Error('no email');
|
|
});
|
|
|
|
const user = tryReadGitUser();
|
|
expect(user).toEqual({ name: 'Alice', email: '' });
|
|
});
|
|
|
|
it('returns empty user if nothing is configured', () => {
|
|
mockedExecSync.mockImplementation(() => {
|
|
throw new Error('no config');
|
|
});
|
|
|
|
const user = tryReadGitUser();
|
|
expect(user).toEqual({ name: '', email: '' });
|
|
});
|
|
});
|
|
});
|