mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-07 07:55:13 +02:00
64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
|
|
import { mkdtemp, readFile, rm } from 'node:fs/promises';
|
||
|
|
import { tmpdir } from 'node:os';
|
||
|
|
import { join } from 'node:path';
|
||
|
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||
|
|
|
||
|
|
import type { KtxCliIo } from '../../src/cli-runtime.js';
|
||
|
|
import { emitTelemetryEvent } from '../../src/telemetry/index.js';
|
||
|
|
|
||
|
|
function makeIo(): { io: KtxCliIo; stderr: () => string } {
|
||
|
|
let stderr = '';
|
||
|
|
return {
|
||
|
|
io: {
|
||
|
|
stdout: {
|
||
|
|
isTTY: true,
|
||
|
|
write: () => {},
|
||
|
|
},
|
||
|
|
stderr: {
|
||
|
|
write: (chunk) => {
|
||
|
|
stderr += chunk;
|
||
|
|
},
|
||
|
|
},
|
||
|
|
},
|
||
|
|
stderr: () => stderr,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
describe('emitTelemetryEvent', () => {
|
||
|
|
let homeDir: string;
|
||
|
|
|
||
|
|
beforeEach(async () => {
|
||
|
|
homeDir = await mkdtemp(join(tmpdir(), 'ktx-telemetry-index-'));
|
||
|
|
vi.stubEnv('HOME', homeDir);
|
||
|
|
});
|
||
|
|
|
||
|
|
afterEach(async () => {
|
||
|
|
vi.unstubAllEnvs();
|
||
|
|
await rm(homeDir, { recursive: true, force: true });
|
||
|
|
});
|
||
|
|
|
||
|
|
it('prints debug telemetry when live telemetry is disabled without creating an identity file', async () => {
|
||
|
|
vi.stubEnv('KTX_TELEMETRY_DEBUG', '1');
|
||
|
|
vi.stubEnv('KTX_TELEMETRY_DISABLED', '1');
|
||
|
|
vi.stubEnv('DO_NOT_TRACK', '1');
|
||
|
|
const testIo = makeIo();
|
||
|
|
const projectDir = join(homeDir, 'private-project');
|
||
|
|
|
||
|
|
await emitTelemetryEvent({
|
||
|
|
name: 'connection_added',
|
||
|
|
projectDir,
|
||
|
|
io: testIo.io,
|
||
|
|
packageInfo: { name: '@kaelio/ktx', version: '0.0.0-test' },
|
||
|
|
fields: {
|
||
|
|
driver: 'sqlite',
|
||
|
|
isDemoConnection: false,
|
||
|
|
},
|
||
|
|
});
|
||
|
|
|
||
|
|
expect(testIo.stderr()).toContain('[telemetry]');
|
||
|
|
expect(testIo.stderr()).toContain('"event":"connection_added"');
|
||
|
|
expect(testIo.stderr()).not.toContain(projectDir);
|
||
|
|
await expect(readFile(join(homeDir, '.ktx', 'telemetry.json'), 'utf-8')).rejects.toThrow();
|
||
|
|
});
|
||
|
|
});
|