observability-toolkit 1.1.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -3
- package/dist/backends/index.d.ts +28 -0
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/local-jsonl.d.ts +29 -1
- package/dist/backends/local-jsonl.d.ts.map +1 -1
- package/dist/backends/local-jsonl.js +259 -27
- package/dist/backends/local-jsonl.js.map +1 -1
- package/dist/backends/local-jsonl.test.d.ts +2 -0
- package/dist/backends/local-jsonl.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl.test.js +1638 -0
- package/dist/backends/local-jsonl.test.js.map +1 -0
- package/dist/backends/signoz-api.d.ts +9 -2
- package/dist/backends/signoz-api.d.ts.map +1 -1
- package/dist/backends/signoz-api.integration.test.d.ts +8 -0
- package/dist/backends/signoz-api.integration.test.d.ts.map +1 -0
- package/dist/backends/signoz-api.integration.test.js +137 -0
- package/dist/backends/signoz-api.integration.test.js.map +1 -0
- package/dist/backends/signoz-api.js +206 -115
- package/dist/backends/signoz-api.js.map +1 -1
- package/dist/backends/signoz-api.test.d.ts +2 -0
- package/dist/backends/signoz-api.test.d.ts.map +1 -0
- package/dist/backends/signoz-api.test.js +1080 -0
- package/dist/backends/signoz-api.test.js.map +1 -0
- package/dist/lib/constants.d.ts +28 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +73 -0
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/constants.test.d.ts +5 -0
- package/dist/lib/constants.test.d.ts.map +1 -0
- package/dist/lib/constants.test.js +381 -0
- package/dist/lib/constants.test.js.map +1 -0
- package/dist/lib/file-utils.d.ts +53 -1
- package/dist/lib/file-utils.d.ts.map +1 -1
- package/dist/lib/file-utils.js +142 -3
- package/dist/lib/file-utils.js.map +1 -1
- package/dist/lib/file-utils.test.d.ts +2 -0
- package/dist/lib/file-utils.test.d.ts.map +1 -0
- package/dist/lib/file-utils.test.js +649 -0
- package/dist/lib/file-utils.test.js.map +1 -0
- package/dist/server.js +50 -63
- package/dist/server.js.map +1 -1
- package/dist/server.test.d.ts +5 -0
- package/dist/server.test.d.ts.map +1 -0
- package/dist/server.test.js +547 -0
- package/dist/server.test.js.map +1 -0
- package/dist/tools/context-stats.d.ts +2 -2
- package/dist/tools/context-stats.d.ts.map +1 -1
- package/dist/tools/context-stats.js +2 -1
- package/dist/tools/context-stats.js.map +1 -1
- package/dist/tools/context-stats.test.d.ts +5 -0
- package/dist/tools/context-stats.test.d.ts.map +1 -0
- package/dist/tools/context-stats.test.js +465 -0
- package/dist/tools/context-stats.test.js.map +1 -0
- package/dist/tools/get-trace-url.d.ts.map +1 -1
- package/dist/tools/get-trace-url.js +5 -1
- package/dist/tools/get-trace-url.js.map +1 -1
- package/dist/tools/get-trace-url.test.d.ts +5 -0
- package/dist/tools/get-trace-url.test.d.ts.map +1 -0
- package/dist/tools/get-trace-url.test.js +429 -0
- package/dist/tools/get-trace-url.test.js.map +1 -0
- package/dist/tools/health-check.d.ts +9 -2
- package/dist/tools/health-check.d.ts.map +1 -1
- package/dist/tools/health-check.js +66 -27
- package/dist/tools/health-check.js.map +1 -1
- package/dist/tools/health-check.test.d.ts +5 -0
- package/dist/tools/health-check.test.d.ts.map +1 -0
- package/dist/tools/health-check.test.js +386 -0
- package/dist/tools/health-check.test.js.map +1 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/query-llm-events.d.ts +82 -0
- package/dist/tools/query-llm-events.d.ts.map +1 -0
- package/dist/tools/query-llm-events.js +60 -0
- package/dist/tools/query-llm-events.js.map +1 -0
- package/dist/tools/query-llm-events.test.d.ts +5 -0
- package/dist/tools/query-llm-events.test.d.ts.map +1 -0
- package/dist/tools/query-llm-events.test.js +111 -0
- package/dist/tools/query-llm-events.test.js.map +1 -0
- package/dist/tools/query-logs.d.ts +15 -8
- package/dist/tools/query-logs.d.ts.map +1 -1
- package/dist/tools/query-logs.js +11 -10
- package/dist/tools/query-logs.js.map +1 -1
- package/dist/tools/query-logs.test.d.ts +5 -0
- package/dist/tools/query-logs.test.d.ts.map +1 -0
- package/dist/tools/query-logs.test.js +688 -0
- package/dist/tools/query-logs.test.js.map +1 -0
- package/dist/tools/query-metrics.d.ts +13 -15
- package/dist/tools/query-metrics.d.ts.map +1 -1
- package/dist/tools/query-metrics.js +12 -13
- package/dist/tools/query-metrics.js.map +1 -1
- package/dist/tools/query-metrics.test.d.ts +5 -0
- package/dist/tools/query-metrics.test.d.ts.map +1 -0
- package/dist/tools/query-metrics.test.js +597 -0
- package/dist/tools/query-metrics.test.js.map +1 -0
- package/dist/tools/query-traces.d.ts +19 -14
- package/dist/tools/query-traces.d.ts.map +1 -1
- package/dist/tools/query-traces.js +14 -14
- package/dist/tools/query-traces.js.map +1 -1
- package/dist/tools/query-traces.test.d.ts +5 -0
- package/dist/tools/query-traces.test.d.ts.map +1 -0
- package/dist/tools/query-traces.test.js +643 -0
- package/dist/tools/query-traces.test.js.map +1 -0
- package/dist/tools/setup-claudeignore.d.ts +36 -10
- package/dist/tools/setup-claudeignore.d.ts.map +1 -1
- package/dist/tools/setup-claudeignore.js +193 -33
- package/dist/tools/setup-claudeignore.js.map +1 -1
- package/dist/tools/setup-claudeignore.test.d.ts +2 -0
- package/dist/tools/setup-claudeignore.test.d.ts.map +1 -0
- package/dist/tools/setup-claudeignore.test.js +481 -0
- package/dist/tools/setup-claudeignore.test.js.map +1 -0
- package/dist/tools/signoz.integration.test.d.ts +8 -0
- package/dist/tools/signoz.integration.test.d.ts.map +1 -0
- package/dist/tools/signoz.integration.test.js +141 -0
- package/dist/tools/signoz.integration.test.js.map +1 -0
- package/package.json +6 -3
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert';
|
|
3
|
+
import { setupClaudeignore, setupClaudeignoreTool } from './setup-claudeignore.js';
|
|
4
|
+
describe('setupClaudeignore', () => {
|
|
5
|
+
describe('file creation', () => {
|
|
6
|
+
it('should create .claudeignore file with dry run mode', async () => {
|
|
7
|
+
const result = await setupClaudeignore({
|
|
8
|
+
path: '/tmp/.claudeignore-test-' + Date.now(),
|
|
9
|
+
entry: 'telemetry/',
|
|
10
|
+
includeDefaults: false,
|
|
11
|
+
dryRun: true,
|
|
12
|
+
});
|
|
13
|
+
assert.strictEqual(result.global.action, 'dry_run');
|
|
14
|
+
assert(result.global.entries.includes('telemetry/'));
|
|
15
|
+
assert(result.global.message.includes('Would create'));
|
|
16
|
+
});
|
|
17
|
+
it('should create file with custom entry', async () => {
|
|
18
|
+
const result = await setupClaudeignore({
|
|
19
|
+
path: '/tmp/custom-path/.claudeignore',
|
|
20
|
+
entry: 'custom-entry/',
|
|
21
|
+
includeDefaults: false,
|
|
22
|
+
dryRun: true,
|
|
23
|
+
});
|
|
24
|
+
assert.strictEqual(result.global.action, 'dry_run');
|
|
25
|
+
assert(result.global.entries.includes('custom-entry/'));
|
|
26
|
+
assert(result.global.message.includes('Would create'));
|
|
27
|
+
});
|
|
28
|
+
it('should create file with default entries when includeDefaults is true', async () => {
|
|
29
|
+
const result = await setupClaudeignore({
|
|
30
|
+
path: '/tmp/.claudeignore-defaults-' + Date.now(),
|
|
31
|
+
dryRun: true,
|
|
32
|
+
});
|
|
33
|
+
assert.strictEqual(result.global.action, 'dry_run');
|
|
34
|
+
assert(result.global.entries.includes('telemetry/'));
|
|
35
|
+
assert(result.global.entries.includes('*.test.ts'));
|
|
36
|
+
assert(result.global.entries.includes('*.test.js'));
|
|
37
|
+
assert(result.global.entries.includes('coverage/'));
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe('file appending', () => {
|
|
41
|
+
it('should handle append scenario in dry run', async () => {
|
|
42
|
+
const result = await setupClaudeignore({
|
|
43
|
+
path: '/tmp/existing/.claudeignore',
|
|
44
|
+
entry: 'telemetry/',
|
|
45
|
+
includeDefaults: false,
|
|
46
|
+
dryRun: true,
|
|
47
|
+
});
|
|
48
|
+
// With dry run, we can test the logic without actual file operations
|
|
49
|
+
// Result is dry_run if file doesn't exist, unchanged if entry already exists
|
|
50
|
+
assert(['dry_run', 'unchanged'].includes(result.global.action));
|
|
51
|
+
});
|
|
52
|
+
it('should handle entry that already exists in file', async () => {
|
|
53
|
+
// This test verifies the logic for detecting existing entries
|
|
54
|
+
const result = await setupClaudeignore({
|
|
55
|
+
path: '/tmp/.claudeignore-nonexistent-' + Date.now(),
|
|
56
|
+
entry: 'telemetry/',
|
|
57
|
+
includeDefaults: false,
|
|
58
|
+
dryRun: false,
|
|
59
|
+
});
|
|
60
|
+
// Since file doesn't exist in test env, it will create
|
|
61
|
+
assert(['created', 'unchanged'].includes(result.global.action));
|
|
62
|
+
});
|
|
63
|
+
it('should recognize entry with trailing slash', async () => {
|
|
64
|
+
const result = await setupClaudeignore({
|
|
65
|
+
path: '/tmp/.claudeignore-test-slash-' + Date.now(),
|
|
66
|
+
entry: 'telemetry/',
|
|
67
|
+
includeDefaults: false,
|
|
68
|
+
dryRun: true,
|
|
69
|
+
});
|
|
70
|
+
// File doesn't exist so dry_run is returned
|
|
71
|
+
assert.strictEqual(result.global.action, 'dry_run');
|
|
72
|
+
});
|
|
73
|
+
it('should recognize entry without trailing slash', async () => {
|
|
74
|
+
const result = await setupClaudeignore({
|
|
75
|
+
path: '/tmp/.claudeignore-test-noslash-' + Date.now(),
|
|
76
|
+
entry: 'telemetry',
|
|
77
|
+
includeDefaults: false,
|
|
78
|
+
dryRun: true,
|
|
79
|
+
});
|
|
80
|
+
// File doesn't exist so dry_run is returned
|
|
81
|
+
assert.strictEqual(result.global.action, 'dry_run');
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe('dry run mode', () => {
|
|
85
|
+
it('should not modify files when dryRun is true for file creation', async () => {
|
|
86
|
+
const result = await setupClaudeignore({
|
|
87
|
+
path: '/tmp/nonexistent-dryrun/.claudeignore',
|
|
88
|
+
entry: 'telemetry/',
|
|
89
|
+
includeDefaults: false,
|
|
90
|
+
dryRun: true,
|
|
91
|
+
});
|
|
92
|
+
assert.strictEqual(result.global.action, 'dry_run');
|
|
93
|
+
assert(result.global.message.includes('Would'));
|
|
94
|
+
});
|
|
95
|
+
it('should not modify files when dryRun is true for appending', async () => {
|
|
96
|
+
const result = await setupClaudeignore({
|
|
97
|
+
path: '/tmp/existing/.claudeignore',
|
|
98
|
+
entry: 'telemetry/',
|
|
99
|
+
includeDefaults: false,
|
|
100
|
+
dryRun: true,
|
|
101
|
+
});
|
|
102
|
+
assert.strictEqual(result.global.action, 'dry_run');
|
|
103
|
+
assert(result.global.message.includes('Would add') || result.global.message.includes('Would create'));
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
describe('custom paths', () => {
|
|
107
|
+
it('should use custom path when provided', async () => {
|
|
108
|
+
const customPath = '/tmp/custom-location/.claudeignore';
|
|
109
|
+
const result = await setupClaudeignore({
|
|
110
|
+
path: customPath,
|
|
111
|
+
entry: 'telemetry/',
|
|
112
|
+
includeDefaults: false,
|
|
113
|
+
dryRun: true,
|
|
114
|
+
});
|
|
115
|
+
assert.strictEqual(result.global.path, customPath);
|
|
116
|
+
});
|
|
117
|
+
it('should reject paths outside allowed directories', async () => {
|
|
118
|
+
const result = await setupClaudeignore({
|
|
119
|
+
path: '/custom/forbidden/.claudeignore',
|
|
120
|
+
entry: 'telemetry/',
|
|
121
|
+
includeDefaults: false,
|
|
122
|
+
dryRun: true,
|
|
123
|
+
});
|
|
124
|
+
assert.strictEqual(result.global.action, 'skipped');
|
|
125
|
+
assert(result.global.message.includes('Invalid path'));
|
|
126
|
+
});
|
|
127
|
+
it('should reject invalid filenames', async () => {
|
|
128
|
+
const result = await setupClaudeignore({
|
|
129
|
+
path: '/tmp/config.json',
|
|
130
|
+
entry: 'telemetry/',
|
|
131
|
+
includeDefaults: false,
|
|
132
|
+
dryRun: true,
|
|
133
|
+
});
|
|
134
|
+
assert.strictEqual(result.global.action, 'skipped');
|
|
135
|
+
assert(result.global.message.includes('must start with .claudeignore'));
|
|
136
|
+
});
|
|
137
|
+
it('should use default global path when not provided', async () => {
|
|
138
|
+
const result = await setupClaudeignore({
|
|
139
|
+
entry: 'telemetry/',
|
|
140
|
+
includeDefaults: false,
|
|
141
|
+
includeLocal: false,
|
|
142
|
+
dryRun: true,
|
|
143
|
+
});
|
|
144
|
+
assert(result.global.path.includes('.claudeignore'));
|
|
145
|
+
assert(result.global.path.includes('.claude'));
|
|
146
|
+
});
|
|
147
|
+
it('should handle paths with trailing slashes', async () => {
|
|
148
|
+
const result = await setupClaudeignore({
|
|
149
|
+
path: '/tmp/project/.claudeignore',
|
|
150
|
+
entry: 'telemetry/',
|
|
151
|
+
includeDefaults: false,
|
|
152
|
+
dryRun: true,
|
|
153
|
+
});
|
|
154
|
+
assert.strictEqual(result.global.path, '/tmp/project/.claudeignore');
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
describe('default values', () => {
|
|
158
|
+
it('should use default entries when includeDefaults is true', async () => {
|
|
159
|
+
const result = await setupClaudeignore({
|
|
160
|
+
path: '/tmp/.claudeignore',
|
|
161
|
+
dryRun: true,
|
|
162
|
+
});
|
|
163
|
+
assert(result.global.entries.includes('telemetry/'));
|
|
164
|
+
assert(result.global.entries.includes('*.test.ts'));
|
|
165
|
+
});
|
|
166
|
+
it('should use dryRun false by default', async () => {
|
|
167
|
+
const result = await setupClaudeignore({
|
|
168
|
+
path: '/tmp/.claudeignore-default-test-' + Date.now(),
|
|
169
|
+
entry: 'telemetry/',
|
|
170
|
+
includeDefaults: false,
|
|
171
|
+
});
|
|
172
|
+
// Result action should be created (new file) since path is unique per test
|
|
173
|
+
assert(['created', 'unchanged'].includes(result.global.action));
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
describe('response structure', () => {
|
|
177
|
+
it('should return correct response structure for creation', async () => {
|
|
178
|
+
const result = await setupClaudeignore({
|
|
179
|
+
path: '/tmp/new/.claudeignore',
|
|
180
|
+
entry: 'telemetry/',
|
|
181
|
+
includeDefaults: false,
|
|
182
|
+
dryRun: true,
|
|
183
|
+
});
|
|
184
|
+
assert(typeof result === 'object');
|
|
185
|
+
assert('global' in result);
|
|
186
|
+
assert('summary' in result);
|
|
187
|
+
assert('action' in result.global);
|
|
188
|
+
assert('path' in result.global);
|
|
189
|
+
assert('entries' in result.global);
|
|
190
|
+
assert('added' in result.global);
|
|
191
|
+
assert('skipped' in result.global);
|
|
192
|
+
assert('message' in result.global);
|
|
193
|
+
assert(['created', 'updated', 'unchanged', 'dry_run', 'skipped'].includes(result.global.action));
|
|
194
|
+
});
|
|
195
|
+
it('should include meaningful message in response', async () => {
|
|
196
|
+
const result = await setupClaudeignore({
|
|
197
|
+
path: '/tmp/.claudeignore',
|
|
198
|
+
entry: 'logs/',
|
|
199
|
+
includeDefaults: false,
|
|
200
|
+
dryRun: true,
|
|
201
|
+
});
|
|
202
|
+
assert.strictEqual(typeof result.global.message, 'string');
|
|
203
|
+
assert(result.global.message.length > 0);
|
|
204
|
+
});
|
|
205
|
+
it('should include summary in response', async () => {
|
|
206
|
+
const result = await setupClaudeignore({
|
|
207
|
+
path: '/tmp/.claudeignore',
|
|
208
|
+
entry: 'logs/',
|
|
209
|
+
includeDefaults: false,
|
|
210
|
+
dryRun: true,
|
|
211
|
+
});
|
|
212
|
+
assert.strictEqual(typeof result.summary, 'string');
|
|
213
|
+
assert(result.summary.length > 0);
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
describe('tool definition', () => {
|
|
217
|
+
it('should have correct tool name', () => {
|
|
218
|
+
assert.strictEqual(setupClaudeignoreTool.name, 'obs_setup_claudeignore');
|
|
219
|
+
});
|
|
220
|
+
it('should have description', () => {
|
|
221
|
+
assert(typeof setupClaudeignoreTool.description === 'string');
|
|
222
|
+
assert(setupClaudeignoreTool.description.length > 0);
|
|
223
|
+
assert(setupClaudeignoreTool.description.includes('.claudeignore'));
|
|
224
|
+
});
|
|
225
|
+
it('should have inputSchema', () => {
|
|
226
|
+
assert(setupClaudeignoreTool.inputSchema);
|
|
227
|
+
assert(typeof setupClaudeignoreTool.inputSchema === 'object');
|
|
228
|
+
});
|
|
229
|
+
it('should have handler function', () => {
|
|
230
|
+
assert.strictEqual(typeof setupClaudeignoreTool.handler, 'function');
|
|
231
|
+
assert.strictEqual(setupClaudeignoreTool.handler, setupClaudeignore);
|
|
232
|
+
});
|
|
233
|
+
it('should have valid schema with optional path', () => {
|
|
234
|
+
const schema = setupClaudeignoreTool.inputSchema;
|
|
235
|
+
// Schema should allow empty input (all fields are optional with defaults)
|
|
236
|
+
const emptyValidation = schema.safeParse({});
|
|
237
|
+
assert(emptyValidation.success || !emptyValidation.success);
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
describe('entry variations', () => {
|
|
241
|
+
it('should handle entry with trailing slash', async () => {
|
|
242
|
+
const result = await setupClaudeignore({
|
|
243
|
+
path: '/tmp/.claudeignore',
|
|
244
|
+
entry: 'telemetry/',
|
|
245
|
+
includeDefaults: false,
|
|
246
|
+
dryRun: true,
|
|
247
|
+
});
|
|
248
|
+
assert(result.global.entries.includes('telemetry/'));
|
|
249
|
+
});
|
|
250
|
+
it('should handle entry without trailing slash', async () => {
|
|
251
|
+
const result = await setupClaudeignore({
|
|
252
|
+
path: '/tmp/.claudeignore',
|
|
253
|
+
entry: 'logs',
|
|
254
|
+
includeDefaults: false,
|
|
255
|
+
dryRun: true,
|
|
256
|
+
});
|
|
257
|
+
assert(result.global.entries.includes('logs'));
|
|
258
|
+
});
|
|
259
|
+
it('should handle nested directory entries', async () => {
|
|
260
|
+
const result = await setupClaudeignore({
|
|
261
|
+
path: '/tmp/.claudeignore',
|
|
262
|
+
entry: 'build/dist/',
|
|
263
|
+
includeDefaults: false,
|
|
264
|
+
dryRun: true,
|
|
265
|
+
});
|
|
266
|
+
assert(result.global.entries.includes('build/dist/'));
|
|
267
|
+
});
|
|
268
|
+
it('should handle wildcard entries', async () => {
|
|
269
|
+
const result = await setupClaudeignore({
|
|
270
|
+
path: '/tmp/.claudeignore',
|
|
271
|
+
entry: '*.log',
|
|
272
|
+
includeDefaults: false,
|
|
273
|
+
dryRun: true,
|
|
274
|
+
});
|
|
275
|
+
assert(result.global.entries.includes('*.log'));
|
|
276
|
+
});
|
|
277
|
+
it('should handle multiple entries via entries array', async () => {
|
|
278
|
+
const result = await setupClaudeignore({
|
|
279
|
+
path: '/tmp/.claudeignore',
|
|
280
|
+
entries: ['logs/', 'tmp/', '*.bak'],
|
|
281
|
+
includeDefaults: false,
|
|
282
|
+
dryRun: true,
|
|
283
|
+
});
|
|
284
|
+
assert(result.global.entries.includes('logs/'));
|
|
285
|
+
assert(result.global.entries.includes('tmp/'));
|
|
286
|
+
assert(result.global.entries.includes('*.bak'));
|
|
287
|
+
});
|
|
288
|
+
it('should combine entries array with defaults', async () => {
|
|
289
|
+
const result = await setupClaudeignore({
|
|
290
|
+
path: '/tmp/.claudeignore',
|
|
291
|
+
entries: ['custom/'],
|
|
292
|
+
includeDefaults: true,
|
|
293
|
+
dryRun: true,
|
|
294
|
+
});
|
|
295
|
+
assert(result.global.entries.includes('telemetry/'));
|
|
296
|
+
assert(result.global.entries.includes('custom/'));
|
|
297
|
+
assert(result.global.entries.includes('*.test.ts'));
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
describe('action responses', () => {
|
|
301
|
+
it('should return created action for new file', async () => {
|
|
302
|
+
const result = await setupClaudeignore({
|
|
303
|
+
path: '/tmp/unique-nonexistent-' + Date.now() + '/.claudeignore',
|
|
304
|
+
entry: 'telemetry/',
|
|
305
|
+
includeDefaults: false,
|
|
306
|
+
dryRun: true,
|
|
307
|
+
});
|
|
308
|
+
assert.strictEqual(result.global.action, 'dry_run');
|
|
309
|
+
});
|
|
310
|
+
it('should return appropriate message for dry run', async () => {
|
|
311
|
+
const result = await setupClaudeignore({
|
|
312
|
+
path: '/tmp/.claudeignore-msg-test-' + Date.now(),
|
|
313
|
+
entry: 'telemetry/',
|
|
314
|
+
includeDefaults: false,
|
|
315
|
+
dryRun: true,
|
|
316
|
+
});
|
|
317
|
+
// Use a unique path to ensure we get a dry_run response
|
|
318
|
+
assert(['Would create', 'Would add'].some(msg => result.global.message.includes(msg)));
|
|
319
|
+
});
|
|
320
|
+
it('should track added and skipped entries separately', async () => {
|
|
321
|
+
const result = await setupClaudeignore({
|
|
322
|
+
path: '/tmp/.claudeignore-track-' + Date.now(),
|
|
323
|
+
entries: ['a/', 'b/'],
|
|
324
|
+
includeDefaults: false,
|
|
325
|
+
dryRun: true,
|
|
326
|
+
});
|
|
327
|
+
assert(Array.isArray(result.global.added));
|
|
328
|
+
assert(Array.isArray(result.global.skipped));
|
|
329
|
+
assert.strictEqual(result.global.added.length + result.global.skipped.length, result.global.entries.length);
|
|
330
|
+
});
|
|
331
|
+
it('should fallback to defaults when includeDefaults false and no entries', async () => {
|
|
332
|
+
const result = await setupClaudeignore({
|
|
333
|
+
path: '/tmp/.claudeignore-fallback-' + Date.now(),
|
|
334
|
+
includeDefaults: false,
|
|
335
|
+
dryRun: true,
|
|
336
|
+
});
|
|
337
|
+
// Should fallback to default entries
|
|
338
|
+
assert(result.global.entries.includes('telemetry/'));
|
|
339
|
+
assert(result.global.entries.includes('*.test.ts'));
|
|
340
|
+
});
|
|
341
|
+
it('should append to existing file without dry run', async () => {
|
|
342
|
+
const fs = await import('fs');
|
|
343
|
+
const testPath = '/tmp/.claudeignore-append-' + Date.now();
|
|
344
|
+
// Create initial file
|
|
345
|
+
fs.writeFileSync(testPath, '# Existing content\nnode_modules/\n');
|
|
346
|
+
const result = await setupClaudeignore({
|
|
347
|
+
path: testPath,
|
|
348
|
+
entry: 'new-entry/',
|
|
349
|
+
includeDefaults: false,
|
|
350
|
+
dryRun: false,
|
|
351
|
+
});
|
|
352
|
+
assert.strictEqual(result.global.action, 'updated');
|
|
353
|
+
assert(result.global.added.includes('new-entry/'));
|
|
354
|
+
// Verify file was actually updated
|
|
355
|
+
const content = fs.readFileSync(testPath, 'utf-8');
|
|
356
|
+
assert(content.includes('new-entry/'));
|
|
357
|
+
assert(content.includes('node_modules/'));
|
|
358
|
+
// Cleanup
|
|
359
|
+
fs.unlinkSync(testPath);
|
|
360
|
+
});
|
|
361
|
+
it('should skip entries that already exist in file', async () => {
|
|
362
|
+
const fs = await import('fs');
|
|
363
|
+
const testPath = '/tmp/.claudeignore-skip-' + Date.now();
|
|
364
|
+
// Create file with existing entry
|
|
365
|
+
fs.writeFileSync(testPath, 'telemetry/\n');
|
|
366
|
+
const result = await setupClaudeignore({
|
|
367
|
+
path: testPath,
|
|
368
|
+
entries: ['telemetry/', 'new-entry/'],
|
|
369
|
+
includeDefaults: false,
|
|
370
|
+
dryRun: false,
|
|
371
|
+
});
|
|
372
|
+
assert.strictEqual(result.global.action, 'updated');
|
|
373
|
+
assert(result.global.skipped.includes('telemetry/'));
|
|
374
|
+
assert(result.global.added.includes('new-entry/'));
|
|
375
|
+
// Cleanup
|
|
376
|
+
fs.unlinkSync(testPath);
|
|
377
|
+
});
|
|
378
|
+
it('should return unchanged when all entries already exist', async () => {
|
|
379
|
+
const fs = await import('fs');
|
|
380
|
+
const testPath = '/tmp/.claudeignore-unchanged-' + Date.now();
|
|
381
|
+
// Create file with all entries
|
|
382
|
+
fs.writeFileSync(testPath, 'telemetry/\ncoverage/\n');
|
|
383
|
+
const result = await setupClaudeignore({
|
|
384
|
+
path: testPath,
|
|
385
|
+
entries: ['telemetry/', 'coverage/'],
|
|
386
|
+
includeDefaults: false,
|
|
387
|
+
dryRun: false,
|
|
388
|
+
});
|
|
389
|
+
assert.strictEqual(result.global.action, 'unchanged');
|
|
390
|
+
assert.strictEqual(result.global.added.length, 0);
|
|
391
|
+
assert.strictEqual(result.global.skipped.length, 2);
|
|
392
|
+
// Cleanup
|
|
393
|
+
fs.unlinkSync(testPath);
|
|
394
|
+
});
|
|
395
|
+
it('should handle file without trailing newline when appending', async () => {
|
|
396
|
+
const fs = await import('fs');
|
|
397
|
+
const testPath = '/tmp/.claudeignore-nonewline-' + Date.now();
|
|
398
|
+
// Create file without trailing newline
|
|
399
|
+
fs.writeFileSync(testPath, 'existing/');
|
|
400
|
+
const result = await setupClaudeignore({
|
|
401
|
+
path: testPath,
|
|
402
|
+
entry: 'new/',
|
|
403
|
+
includeDefaults: false,
|
|
404
|
+
dryRun: false,
|
|
405
|
+
});
|
|
406
|
+
assert.strictEqual(result.global.action, 'updated');
|
|
407
|
+
// Verify proper formatting
|
|
408
|
+
const content = fs.readFileSync(testPath, 'utf-8');
|
|
409
|
+
assert(content.includes('existing/\nnew/'));
|
|
410
|
+
// Cleanup
|
|
411
|
+
fs.unlinkSync(testPath);
|
|
412
|
+
});
|
|
413
|
+
});
|
|
414
|
+
describe('local telemetry detection', () => {
|
|
415
|
+
it('should include local result when local telemetry exists', async () => {
|
|
416
|
+
const fs = await import('fs');
|
|
417
|
+
const testDir = '/tmp/claudeignore-local-test-' + Date.now();
|
|
418
|
+
const telemetryDir = `${testDir}/telemetry`;
|
|
419
|
+
// Create test directory with telemetry subdirectory
|
|
420
|
+
fs.mkdirSync(telemetryDir, { recursive: true });
|
|
421
|
+
// Change to test directory
|
|
422
|
+
const originalCwd = process.cwd();
|
|
423
|
+
process.chdir(testDir);
|
|
424
|
+
try {
|
|
425
|
+
const result = await setupClaudeignore({
|
|
426
|
+
includeLocal: true,
|
|
427
|
+
dryRun: true,
|
|
428
|
+
});
|
|
429
|
+
// Should have local result because telemetry/ exists
|
|
430
|
+
assert(result.local !== undefined);
|
|
431
|
+
assert(result.local.entries.includes('telemetry/'));
|
|
432
|
+
assert(result.summary.includes('local telemetry'));
|
|
433
|
+
}
|
|
434
|
+
finally {
|
|
435
|
+
process.chdir(originalCwd);
|
|
436
|
+
fs.rmSync(testDir, { recursive: true });
|
|
437
|
+
}
|
|
438
|
+
});
|
|
439
|
+
it('should not include local result when no local telemetry', async () => {
|
|
440
|
+
const result = await setupClaudeignore({
|
|
441
|
+
includeLocal: true,
|
|
442
|
+
dryRun: true,
|
|
443
|
+
});
|
|
444
|
+
// In the test environment (observability-toolkit dir), there may or may not be
|
|
445
|
+
// local telemetry. Just check the structure is correct.
|
|
446
|
+
assert('global' in result);
|
|
447
|
+
assert('summary' in result);
|
|
448
|
+
});
|
|
449
|
+
it('should respect includeLocal: false', async () => {
|
|
450
|
+
const result = await setupClaudeignore({
|
|
451
|
+
includeLocal: false,
|
|
452
|
+
dryRun: true,
|
|
453
|
+
});
|
|
454
|
+
// Should not have local result
|
|
455
|
+
assert(result.local === undefined);
|
|
456
|
+
assert(!result.summary.includes('Local'));
|
|
457
|
+
});
|
|
458
|
+
it('should detect .claude/telemetry directory', async () => {
|
|
459
|
+
const fs = await import('fs');
|
|
460
|
+
const testDir = '/tmp/claudeignore-dotclaude-test-' + Date.now();
|
|
461
|
+
const telemetryDir = `${testDir}/.claude/telemetry`;
|
|
462
|
+
// Create test directory with .claude/telemetry subdirectory
|
|
463
|
+
fs.mkdirSync(telemetryDir, { recursive: true });
|
|
464
|
+
const originalCwd = process.cwd();
|
|
465
|
+
process.chdir(testDir);
|
|
466
|
+
try {
|
|
467
|
+
const result = await setupClaudeignore({
|
|
468
|
+
includeLocal: true,
|
|
469
|
+
dryRun: true,
|
|
470
|
+
});
|
|
471
|
+
assert(result.local !== undefined);
|
|
472
|
+
assert(result.local.entries.includes('.claude/telemetry/'));
|
|
473
|
+
}
|
|
474
|
+
finally {
|
|
475
|
+
process.chdir(originalCwd);
|
|
476
|
+
fs.rmSync(testDir, { recursive: true });
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
});
|
|
480
|
+
});
|
|
481
|
+
//# sourceMappingURL=setup-claudeignore.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-claudeignore.test.js","sourceRoot":"","sources":["../../src/tools/setup-claudeignore.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration tests for SigNoz-dependent tools
|
|
3
|
+
*
|
|
4
|
+
* These tests connect to a real SigNoz instance when configured.
|
|
5
|
+
* They skip gracefully when SIGNOZ_URL and SIGNOZ_API_KEY are not set.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=signoz.integration.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signoz.integration.test.d.ts","sourceRoot":"","sources":["../../src/tools/signoz.integration.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|