Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit53272c1

Browse files
jaggederestclaude
andcommitted
test: add Logger integration tests for headers.ts
- Add tests verifying headers.ts works with Logger through interface- Test error logging when header command fails- Verify compatibility with Storage instance that has Logger set- No code changes needed - headers.ts already uses Logger interfaceThe headers.ts module already supports Logger through its Loggerinterface which matches Storage's writeToCoderOutputChannel method.Since Storage now has Logger set (from extension.ts changes),headers.ts automatically benefits from structured logging.🤖 Generated with Claude CodeCo-Authored-By: Claude <noreply@anthropic.com>
1 parent2629397 commit53272c1

File tree

2 files changed

+66
-2
lines changed

2 files changed

+66
-2
lines changed

‎TODO.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
1.**Replace writeToCoderOutputChannel calls** (43 instances across 10 files)
2323
- ✅ remote.ts (18) - Completed with Logger integration test
2424
- ✅ extension.ts (8) - Completed with Logger initialization and test
25-
- Priority: headers.ts (4)
25+
- ✅ headers.ts (4) - Completed via Logger interface compatibility
26+
- Remaining: workspaceMonitor.ts (3), inbox.ts (3), error.ts (2), workspacesProvider.ts (1), commands.ts (1)
2627
- Use TDD approach: write test → implement → verify
2728
2.**Add structured logging to high-value areas**
2829
- API calls and responses
@@ -58,7 +59,7 @@
5859
| ------------------------| ------| -------| -----------|
5960
| Unit test coverage| 80%+| 74.38%| 🔄 Progress|
6061
| Integration tests| 60+| 69| ✅ Complete|
61-
| Logger adoption| 100%|20%| 🔄 Progress|
62+
| Logger adoption| 100%|30%| 🔄 Progress|
6263
| Files with <50% coverage| 0| 3| 🔄 Progress|
6364

6465
##Immediate Next Steps

‎src/headers.test.ts

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import * as os from "os";
22
import{it,expect,describe,beforeEach,afterEach,vi}from"vitest";
33
import{WorkspaceConfiguration}from"vscode";
44
import{getHeaderArgs,getHeaderCommand,getHeaders}from"./headers";
5+
import{createMockOutputChannelWithLogger}from"./test-helpers";
56

67
constlogger={
78
writeToCoderOutputChannel(){
@@ -189,3 +190,65 @@ describe("getHeaderArgs", () => {
189190
expect(result[1]).toContain("hello world");
190191
});
191192
});
193+
194+
describe("Logger integration",()=>{
195+
it("should log errors through Logger when header command fails",async()=>{
196+
const{ mockOutputChannel,logger:realLogger}=
197+
createMockOutputChannelWithLogger();
198+
199+
// Use the backward compatibility method
200+
constloggerWrapper={
201+
writeToCoderOutputChannel:(msg:string)=>
202+
realLogger.writeToCoderOutputChannel(msg),
203+
};
204+
205+
// Test with a failing command
206+
awaitexpect(
207+
getHeaders("localhost","exit 42",loggerWrapper),
208+
).rejects.toThrow("Header command exited unexpectedly with code 42");
209+
210+
// Verify error was logged through Logger
211+
constlogs=realLogger.getLogs();
212+
expect(logs).toHaveLength(3);// Main error + stdout + stderr
213+
214+
constlogMessages=logs.map((log)=>log.message);
215+
expect(logMessages[0]).toBe(
216+
"Header command exited unexpectedly with code 42",
217+
);
218+
expect(logMessages[1]).toContain("stdout:");
219+
expect(logMessages[2]).toContain("stderr:");
220+
221+
// Verify output channel received formatted messages
222+
expect(mockOutputChannel.appendLine).toHaveBeenCalledWith(
223+
expect.stringMatching(
224+
/\[.*\]\[INFO\]Headercommandexitedunexpectedlywithcode42/,
225+
),
226+
);
227+
});
228+
229+
it("should work with Storage instance that has Logger set",async()=>{
230+
const{logger:realLogger}=createMockOutputChannelWithLogger();
231+
232+
// Simulate Storage with Logger
233+
constmockStorage={
234+
writeToCoderOutputChannel:(msg:string)=>{
235+
realLogger.info(msg);
236+
},
237+
};
238+
239+
// Test with a failing command
240+
awaitexpect(
241+
getHeaders("localhost","command-not-found",mockStorage),
242+
).rejects.toThrow(/Headercommandexitedunexpectedly/);
243+
244+
// Verify error was logged
245+
constlogs=realLogger.getLogs();
246+
expect(logs.length).toBeGreaterThan(0);
247+
248+
// At least the main error should be logged
249+
consthasMainError=logs.some((log)=>
250+
log.message.includes("Header command exited unexpectedly"),
251+
);
252+
expect(hasMainError).toBe(true);
253+
});
254+
});

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp