summaryrefslogtreecommitdiff
path: root/packages/cli/src/config/config.test.ts
diff options
context:
space:
mode:
authorBilly Biggs <[email protected]>2025-08-15 18:10:21 -0700
committerGitHub <[email protected]>2025-08-16 01:10:21 +0000
commitd57cc0b9306f0359482ef6e243308bcda2989007 (patch)
tree3ec6a716d0a5b8d9c6cacc8a1231d05df6ba43fd /packages/cli/src/config/config.test.ts
parent4896c7739f57b4e475754854c217cdd1dbf7deaa (diff)
Add support for HTTP OpenTelemetry exporters (#6357)
Diffstat (limited to 'packages/cli/src/config/config.test.ts')
-rw-r--r--packages/cli/src/config/config.test.ts54
1 files changed, 54 insertions, 0 deletions
diff --git a/packages/cli/src/config/config.test.ts b/packages/cli/src/config/config.test.ts
index e4535fca..e70fc3b3 100644
--- a/packages/cli/src/config/config.test.ts
+++ b/packages/cli/src/config/config.test.ts
@@ -536,6 +536,60 @@ describe('loadCliConfig telemetry', () => {
const config = await loadCliConfig(settings, [], 'test-session', argv);
expect(config.getTelemetryLogPromptsEnabled()).toBe(true);
});
+
+ it('should use telemetry OTLP protocol from settings if CLI flag is not present', async () => {
+ process.argv = ['node', 'script.js'];
+ const argv = await parseArguments();
+ const settings: Settings = {
+ telemetry: { otlpProtocol: 'http' },
+ };
+ const config = await loadCliConfig(settings, [], 'test-session', argv);
+ expect(config.getTelemetryOtlpProtocol()).toBe('http');
+ });
+
+ it('should prioritize --telemetry-otlp-protocol CLI flag over settings', async () => {
+ process.argv = ['node', 'script.js', '--telemetry-otlp-protocol', 'http'];
+ const argv = await parseArguments();
+ const settings: Settings = {
+ telemetry: { otlpProtocol: 'grpc' },
+ };
+ const config = await loadCliConfig(settings, [], 'test-session', argv);
+ expect(config.getTelemetryOtlpProtocol()).toBe('http');
+ });
+
+ it('should use default protocol if no OTLP protocol is provided via CLI or settings', async () => {
+ process.argv = ['node', 'script.js'];
+ const argv = await parseArguments();
+ const settings: Settings = { telemetry: { enabled: true } };
+ const config = await loadCliConfig(settings, [], 'test-session', argv);
+ expect(config.getTelemetryOtlpProtocol()).toBe('grpc');
+ });
+
+ it('should reject invalid --telemetry-otlp-protocol values', async () => {
+ process.argv = [
+ 'node',
+ 'script.js',
+ '--telemetry-otlp-protocol',
+ 'invalid',
+ ];
+
+ const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => {
+ throw new Error('process.exit called');
+ });
+
+ const mockConsoleError = vi
+ .spyOn(console, 'error')
+ .mockImplementation(() => {});
+
+ await expect(parseArguments()).rejects.toThrow('process.exit called');
+
+ expect(mockConsoleError).toHaveBeenCalledWith(
+ expect.stringContaining('Invalid values:'),
+ );
+
+ mockExit.mockRestore();
+ mockConsoleError.mockRestore();
+ });
});
describe('Hierarchical Memory Loading (config.ts) - Placeholder Suite', () => {