Skip to content

Commit a1bb511

Browse files
committed
fix: audit sweep to fix linting errors and test failures
1 parent d476f11 commit a1bb511

16 files changed

Lines changed: 123 additions & 86 deletions

src/GsdOrchestrator.Tests/GitHubPatProviderTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
namespace GsdOrchestrator.Tests;
77

88
/// <summary>
9-
/// Tests for GitHubPatProvider — reads GitHub PAT from IConfiguration.
9+
/// Tests for GitHubPatProvider — reads GitHub PAT from IConfiguration.
1010
/// </summary>
1111
public class GitHubPatProviderTests
1212
{

src/GsdOrchestrator.Tests/GoalControlPlaneTests.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,13 @@ public async Task StartInspectCancel_PersistsExplicitLifecycle()
1515
var aggregate = GoalFixtures.CompleteAggregate() with
1616
{
1717
Goal = GoalFixtures.CompleteAggregate().Goal with { Status = GoalStatus.Planned },
18-
Transitions = [], Events = [], Evidence = [], Leases = [], BudgetReservations = [], Attempts = [], IdempotencyKeys = []
18+
Transitions = [],
19+
Events = [],
20+
Evidence = [],
21+
Leases = [],
22+
BudgetReservations = [],
23+
Attempts = [],
24+
IdempotencyKeys = []
1925
};
2026

2127
await sut.StartAsync(aggregate);

src/GsdOrchestrator.Tests/GoalSchedulerTests.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,10 @@ private static GoalAggregate AggregateWithTwoItems(WorkItemStatus dependencyStat
9696
new WorkItemRecord("work-2", "goal-1", "org/repo", "local", WorkItemStatus.Ready, 3, "idem-2")
9797
],
9898
Dependencies = [new DependencyRecord("goal-1", "work-2", "work-1")],
99-
Attempts = [], Leases = [], BudgetReservations = [], IdempotencyKeys = []
99+
Attempts = [],
100+
Leases = [],
101+
BudgetReservations = [],
102+
IdempotencyKeys = []
100103
};
101104
}
102105

@@ -110,7 +113,11 @@ private static GoalAggregate IndependentAggregate()
110113
new WorkItemRecord("work-1", "goal-1", "org/repo", "local", WorkItemStatus.Ready, 3, "idem-1"),
111114
new WorkItemRecord("work-2", "goal-1", "org/repo", "local", WorkItemStatus.Ready, 3, "idem-2")
112115
],
113-
Dependencies = [], Attempts = [], Leases = [], BudgetReservations = [], IdempotencyKeys = []
116+
Dependencies = [],
117+
Attempts = [],
118+
Leases = [],
119+
BudgetReservations = [],
120+
IdempotencyKeys = []
114121
};
115122
}
116123

src/GsdOrchestrator.Tests/McpToolDispatcherTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public async Task CallAsync_CircuitBreakerOpen_ThrowsWrappedNonTransientMcpExcep
8383
try { await sut.CallAsync("tool", new JsonObject()); } catch { }
8484
try { await sut.CallAsync("tool", new JsonObject()); } catch { }
8585

86-
// Circuit is now open — next call should get the wrapped McpException
86+
// Circuit is now open — next call should get the wrapped McpException
8787
var ex = await Assert.ThrowsAsync<McpException>(
8888
() => sut.CallAsync("tool", new JsonObject(), CancellationToken.None));
8989
Assert.False(ex.IsTransient);

src/GsdOrchestrator.Tests/ReviewingStateErrorPathTests.cs

Lines changed: 47 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ private static IConfiguration Cfg(string rev = "")
2525
private static ReviewingState Sut(IMcpClient m, IChatClient l, string rev = "") =>
2626
new(MkD(m), l, Cfg(rev), NullLogger<ReviewingState>.Instance);
2727
private static GsdWorkflowContext PrCtx(string diff = "d") =>
28-
new() { PrReview = new PrReviewContext(7,"o","r",diff), CurrentState = WorkflowState.Reviewing };
28+
new() { PrReview = new PrReviewContext(7, "o", "r", diff), CurrentState = WorkflowState.Reviewing };
2929
private static IChatClient LlmApprove()
3030
{
3131
var l = Substitute.For<IChatClient>();
32-
l.GetResponseAsync(Arg.Any<IEnumerable<ChatMessage>>(),Arg.Any<ChatOptions?>(),Arg.Any<CancellationToken>())
32+
l.GetResponseAsync(Arg.Any<IEnumerable<ChatMessage>>(), Arg.Any<ChatOptions?>(), Arg.Any<CancellationToken>())
3333
.Returns(Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant,
3434
"{\"verdict\":\"APPROVE\",\"summary\":\"ok\",\"comments\":[]}"))));
3535
return l;
@@ -39,96 +39,98 @@ private static IChatClient LlmApprove()
3939
public async Task GetPr_ReturnsError_FallsBackAndCompletes()
4040
{
4141
var m = Substitute.For<IMcpClient>();
42-
m.CallToolAsync(Arg.Is<string>("get_pull_request"),Arg.Any<JsonObject>(),Arg.Any<CancellationToken>())
43-
.Returns(Task.FromResult(new McpToolResult("err",true)));
44-
m.CallToolAsync(Arg.Is<string>("create_pull_request_review"),Arg.Any<JsonObject>(),Arg.Any<CancellationToken>())
45-
.Returns(Task.FromResult(new McpToolResult("{}",false)));
46-
var res = await Sut(m,LlmApprove()).ExecuteAsync(PrCtx(),CancellationToken.None);
47-
Assert.Equal(WorkflowState.Done,res.CurrentState);
42+
m.CallToolAsync(Arg.Is<string>("get_pull_request"), Arg.Any<JsonObject>(), Arg.Any<CancellationToken>())
43+
.Returns(Task.FromResult(new McpToolResult("err", true)));
44+
m.CallToolAsync(Arg.Is<string>("create_pull_request_review"), Arg.Any<JsonObject>(), Arg.Any<CancellationToken>())
45+
.Returns(Task.FromResult(new McpToolResult("{}", false)));
46+
var res = await Sut(m, LlmApprove()).ExecuteAsync(PrCtx(), CancellationToken.None);
47+
Assert.Equal(WorkflowState.Done, res.CurrentState);
4848
}
4949

5050
[Fact]
5151
public async Task GetPr_ThrowsMcpException_FallsBackAndCompletes()
5252
{
5353
var m = Substitute.For<IMcpClient>();
54-
m.CallToolAsync(Arg.Is<string>("get_pull_request"),Arg.Any<JsonObject>(),Arg.Any<CancellationToken>())
55-
.ThrowsAsync(new McpException("notfound",isTransient:false));
56-
m.CallToolAsync(Arg.Is<string>("create_pull_request_review"),Arg.Any<JsonObject>(),Arg.Any<CancellationToken>())
57-
.Returns(Task.FromResult(new McpToolResult("{}",false)));
58-
var res = await Sut(m,LlmApprove()).ExecuteAsync(PrCtx(),CancellationToken.None);
59-
Assert.Equal(WorkflowState.Done,res.CurrentState);
54+
m.CallToolAsync(Arg.Is<string>("get_pull_request"), Arg.Any<JsonObject>(), Arg.Any<CancellationToken>())
55+
.ThrowsAsync(new McpException("notfound", isTransient: false));
56+
m.CallToolAsync(Arg.Is<string>("create_pull_request_review"), Arg.Any<JsonObject>(), Arg.Any<CancellationToken>())
57+
.Returns(Task.FromResult(new McpToolResult("{}", false)));
58+
var res = await Sut(m, LlmApprove()).ExecuteAsync(PrCtx(), CancellationToken.None);
59+
Assert.Equal(WorkflowState.Done, res.CurrentState);
6060
}
6161

6262
[Fact]
6363
public async Task LlmThrows_AllAttempts_ThrowsInvalidOperationException()
6464
{
6565
var m = Substitute.For<IMcpClient>();
66-
m.CallToolAsync(Arg.Is<string>("get_pull_request"),Arg.Any<JsonObject>(),Arg.Any<CancellationToken>())
67-
.Returns(Task.FromResult(new McpToolResult("{\"title\":\"T\",\"body\":\"\"}",false)));
66+
m.CallToolAsync(Arg.Is<string>("get_pull_request"), Arg.Any<JsonObject>(), Arg.Any<CancellationToken>())
67+
.Returns(Task.FromResult(new McpToolResult("{\"title\":\"T\",\"body\":\"\"}", false)));
6868
var l = Substitute.For<IChatClient>();
69-
l.GetResponseAsync(Arg.Any<IEnumerable<ChatMessage>>(),Arg.Any<ChatOptions?>(),Arg.Any<CancellationToken>())
69+
l.GetResponseAsync(Arg.Any<IEnumerable<ChatMessage>>(), Arg.Any<ChatOptions?>(), Arg.Any<CancellationToken>())
7070
.ThrowsAsync(new HttpRequestException("down"));
71-
await Assert.ThrowsAsync<InvalidOperationException>(()=>Sut(m,l).ExecuteAsync(PrCtx(),CancellationToken.None));
71+
await Assert.ThrowsAsync<InvalidOperationException>(() => Sut(m, l).ExecuteAsync(PrCtx(), CancellationToken.None));
7272
}
7373

7474
[Fact]
7575
public async Task LlmCanceled_PropagatesImmediately()
7676
{
7777
var m = Substitute.For<IMcpClient>();
78-
m.CallToolAsync(Arg.Is<string>("get_pull_request"),Arg.Any<JsonObject>(),Arg.Any<CancellationToken>())
79-
.Returns(Task.FromResult(new McpToolResult("{\"title\":\"T\",\"body\":\"\"}",false)));
78+
m.CallToolAsync(Arg.Is<string>("get_pull_request"), Arg.Any<JsonObject>(), Arg.Any<CancellationToken>())
79+
.Returns(Task.FromResult(new McpToolResult("{\"title\":\"T\",\"body\":\"\"}", false)));
8080
using var cts = new CancellationTokenSource();
8181
var l = Substitute.For<IChatClient>();
82-
l.GetResponseAsync(Arg.Any<IEnumerable<ChatMessage>>(),Arg.Any<ChatOptions?>(),Arg.Any<CancellationToken>())
83-
.Returns<Task<ChatResponse>>(ci=>{
82+
l.GetResponseAsync(Arg.Any<IEnumerable<ChatMessage>>(), Arg.Any<ChatOptions?>(), Arg.Any<CancellationToken>())
83+
.Returns<Task<ChatResponse>>(ci =>
84+
{
8485
cts.Cancel();
8586
ci.Arg<CancellationToken>().ThrowIfCancellationRequested();
86-
return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant,"")));
87+
return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "")));
8788
});
88-
await Assert.ThrowsAsync<OperationCanceledException>(()=>Sut(m,l).ExecuteAsync(PrCtx(),cts.Token));
89+
await Assert.ThrowsAsync<OperationCanceledException>(() => Sut(m, l).ExecuteAsync(PrCtx(), cts.Token));
8990
}
9091

9192
[Fact]
9293
public async Task SubmitReview_ReturnsError_ThrowsMcpException()
9394
{
9495
var m = Substitute.For<IMcpClient>();
95-
m.CallToolAsync(Arg.Is<string>("get_pull_request"),Arg.Any<JsonObject>(),Arg.Any<CancellationToken>())
96-
.Returns(Task.FromResult(new McpToolResult("{\"title\":\"T\",\"body\":\"\"}",false)));
97-
m.CallToolAsync(Arg.Is<string>("create_pull_request_review"),Arg.Any<JsonObject>(),Arg.Any<CancellationToken>())
98-
.Returns(Task.FromResult(new McpToolResult("fail",true)));
99-
await Assert.ThrowsAsync<McpException>(()=>Sut(m,LlmApprove()).ExecuteAsync(PrCtx(),CancellationToken.None));
96+
m.CallToolAsync(Arg.Is<string>("get_pull_request"), Arg.Any<JsonObject>(), Arg.Any<CancellationToken>())
97+
.Returns(Task.FromResult(new McpToolResult("{\"title\":\"T\",\"body\":\"\"}", false)));
98+
m.CallToolAsync(Arg.Is<string>("create_pull_request_review"), Arg.Any<JsonObject>(), Arg.Any<CancellationToken>())
99+
.Returns(Task.FromResult(new McpToolResult("fail", true)));
100+
await Assert.ThrowsAsync<McpException>(() => Sut(m, LlmApprove()).ExecuteAsync(PrCtx(), CancellationToken.None));
100101
}
101102

102103
[Fact]
103104
public async Task WithReviewers_CompletesNormally()
104105
{
105106
var m = Substitute.For<IMcpClient>();
106-
m.CallToolAsync(Arg.Is<string>("get_pull_request"),Arg.Any<JsonObject>(),Arg.Any<CancellationToken>())
107-
.Returns(Task.FromResult(new McpToolResult("{\"title\":\"T\",\"body\":\"\"}",false)));
108-
m.CallToolAsync(Arg.Is<string>("create_pull_request_review"),Arg.Any<JsonObject>(),Arg.Any<CancellationToken>())
109-
.Returns(Task.FromResult(new McpToolResult("{}",false)));
110-
var res = await Sut(m,LlmApprove(),rev:"alice,bob").ExecuteAsync(PrCtx(),CancellationToken.None);
111-
Assert.Equal(WorkflowState.Done,res.CurrentState);
107+
m.CallToolAsync(Arg.Is<string>("get_pull_request"), Arg.Any<JsonObject>(), Arg.Any<CancellationToken>())
108+
.Returns(Task.FromResult(new McpToolResult("{\"title\":\"T\",\"body\":\"\"}", false)));
109+
m.CallToolAsync(Arg.Is<string>("create_pull_request_review"), Arg.Any<JsonObject>(), Arg.Any<CancellationToken>())
110+
.Returns(Task.FromResult(new McpToolResult("{}", false)));
111+
var res = await Sut(m, LlmApprove(), rev: "alice,bob").ExecuteAsync(PrCtx(), CancellationToken.None);
112+
Assert.Equal(WorkflowState.Done, res.CurrentState);
112113
}
113114

114115
[Fact]
115116
public async Task LargeDiff_TruncatedBeforeLlm()
116117
{
117118
var m = Substitute.For<IMcpClient>();
118-
m.CallToolAsync(Arg.Is<string>("get_pull_request"),Arg.Any<JsonObject>(),Arg.Any<CancellationToken>())
119-
.Returns(Task.FromResult(new McpToolResult("{\"title\":\"T\",\"body\":\"\"}",false)));
120-
m.CallToolAsync(Arg.Is<string>("create_pull_request_review"),Arg.Any<JsonObject>(),Arg.Any<CancellationToken>())
121-
.Returns(Task.FromResult(new McpToolResult("{}",false)));
122-
var big = new string('+',50_000);
119+
m.CallToolAsync(Arg.Is<string>("get_pull_request"), Arg.Any<JsonObject>(), Arg.Any<CancellationToken>())
120+
.Returns(Task.FromResult(new McpToolResult("{\"title\":\"T\",\"body\":\"\"}", false)));
121+
m.CallToolAsync(Arg.Is<string>("create_pull_request_review"), Arg.Any<JsonObject>(), Arg.Any<CancellationToken>())
122+
.Returns(Task.FromResult(new McpToolResult("{}", false)));
123+
var big = new string('+', 50_000);
123124
var seen = new List<string>();
124125
var l = Substitute.For<IChatClient>();
125-
l.GetResponseAsync(Arg.Any<IEnumerable<ChatMessage>>(),Arg.Any<ChatOptions?>(),Arg.Any<CancellationToken>())
126-
.Returns(ci=>{
127-
foreach(var msg in ci.Arg<IEnumerable<ChatMessage>>()) if(msg.Text!=null)seen.Add(msg.Text);
126+
l.GetResponseAsync(Arg.Any<IEnumerable<ChatMessage>>(), Arg.Any<ChatOptions?>(), Arg.Any<CancellationToken>())
127+
.Returns(ci =>
128+
{
129+
foreach (var msg in ci.Arg<IEnumerable<ChatMessage>>()) if (msg.Text != null) seen.Add(msg.Text);
128130
return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant,
129131
"{\"verdict\":\"APPROVE\",\"summary\":\"ok\",\"comments\":[]}")));
130132
});
131-
await Sut(m,l).ExecuteAsync(PrCtx(big),CancellationToken.None);
132-
Assert.Contains(seen,s=>s.Contains("[diff truncated"));
133+
await Sut(m, l).ExecuteAsync(PrCtx(big), CancellationToken.None);
134+
Assert.Contains(seen, s => s.Contains("[diff truncated"));
133135
}
134136
}

src/GsdOrchestrator.Tests/SqliteGoalStoreTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
using System.Text.Json;
12
using GsdOrchestrator.Scheduling;
23
using Microsoft.Extensions.Logging.Abstractions;
3-
using System.Text.Json;
44
using Xunit;
55

66
namespace GsdOrchestrator.Tests;

src/GsdOrchestrator.Tests/States/CheckpointStoreAdditionalTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
using System.Text.Json;
12
using GsdOrchestrator.Checkpointing;
23
using GsdOrchestrator.Workflows.Models;
34
using Microsoft.Extensions.Logging.Abstractions;
4-
using System.Text.Json;
55
using Xunit;
66

77
namespace GsdOrchestrator.Tests.States;
@@ -87,7 +87,7 @@ public async Task SaveAsync_WithOwnerAndRepo_LoadAsync_ByWorkflowId_ReturnsConte
8787
var ctx = BuildContext("namespaced-wf", owner: "myorg", repo: "myrepo");
8888
await _store.SaveAsync(ctx);
8989

90-
// Load by just the workflowId — should find via namespaced scan
90+
// Load by just the workflowId — should find via namespaced scan
9191
var loaded = await _store.LoadAsync("namespaced-wf");
9292

9393
Assert.NotNull(loaded);

src/GsdOrchestrator.Tests/States/CheckpointStoreSchemaVersionTests.cs

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
using System.Text.Json;
12
using GsdOrchestrator.Checkpointing;
23
using GsdOrchestrator.Workflows.Models;
34
using Microsoft.Extensions.Logging.Abstractions;
4-
using System.Text.Json;
55
using Xunit;
66

77
namespace GsdOrchestrator.Tests.States;
@@ -16,8 +16,12 @@ public class CheckpointStoreSchemaVersionTests : IDisposable
1616
public async Task Load_ExactPath_UnsupportedSchema_ThrowsInvalidDataException()
1717
{
1818
var sut = Sut();
19-
var ctx = new GsdWorkflowContext { WorkflowId = "wf1",
20-
Issue = new IssueContext(1,"t","b",[],"o","r","main"), CurrentState = WorkflowState.Idle };
19+
var ctx = new GsdWorkflowContext
20+
{
21+
WorkflowId = "wf1",
22+
Issue = new IssueContext(1, "t", "b", [], "o", "r", "main"),
23+
CurrentState = WorkflowState.Idle
24+
};
2125
await sut.SaveAsync(ctx);
2226
var stateDir = Path.Combine(_tmp, ".gsd", "state");
2327
var file = Directory.GetFiles(stateDir, "*wf1*.json").First();
@@ -52,8 +56,12 @@ public async Task Load_LegacyNonFailedCheckpoint_UpgradesSchema()
5256
public async Task Load_NamespacedPath_SingleCandidate_Loads()
5357
{
5458
var sut = Sut();
55-
var ctx = new GsdWorkflowContext { WorkflowId = "wfns",
56-
Issue = new IssueContext(2,"t","b",[],"owner","repo","main"), CurrentState = WorkflowState.Branching };
59+
var ctx = new GsdWorkflowContext
60+
{
61+
WorkflowId = "wfns",
62+
Issue = new IssueContext(2, "t", "b", [], "owner", "repo", "main"),
63+
CurrentState = WorkflowState.Branching
64+
};
5765
await sut.SaveAsync(ctx);
5866
var loaded = await sut.LoadAsync("wfns");
5967
Assert.NotNull(loaded);
@@ -67,10 +75,14 @@ public async Task Load_LegacyExactPath_Loads()
6775
var sut = Sut();
6876
var stateDir = Path.Combine(_tmp, ".gsd", "state");
6977
Directory.CreateDirectory(stateDir);
70-
var ctx = new GsdWorkflowContext { WorkflowId = "legacywf",
71-
Issue = new IssueContext(3,"t","b",[],"o","r","main"), CurrentState = WorkflowState.Analyzing };
72-
var opts = new JsonSerializerOptions { WriteIndented=true, PropertyNamingPolicy=JsonNamingPolicy.CamelCase };
73-
await File.WriteAllTextAsync(Path.Combine(stateDir,"legacywf.json"), JsonSerializer.Serialize(ctx, opts));
78+
var ctx = new GsdWorkflowContext
79+
{
80+
WorkflowId = "legacywf",
81+
Issue = new IssueContext(3, "t", "b", [], "o", "r", "main"),
82+
CurrentState = WorkflowState.Analyzing
83+
};
84+
var opts = new JsonSerializerOptions { WriteIndented = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase };
85+
await File.WriteAllTextAsync(Path.Combine(stateDir, "legacywf.json"), JsonSerializer.Serialize(ctx, opts));
7486
var loaded = await sut.LoadAsync("legacywf");
7587
Assert.NotNull(loaded);
7688
Assert.Equal(WorkflowState.Analyzing, loaded!.CurrentState);
@@ -81,14 +93,18 @@ public async Task Load_LegacyExactPath_Loads()
8193
public async Task Archive_NamespacedFile_MovesToArchive()
8294
{
8395
var sut = Sut();
84-
var ctx = new GsdWorkflowContext { WorkflowId = "wfarch",
85-
Issue = new IssueContext(4,"t","b",[],"ao","ar","main"), CurrentState = WorkflowState.Done };
96+
var ctx = new GsdWorkflowContext
97+
{
98+
WorkflowId = "wfarch",
99+
Issue = new IssueContext(4, "t", "b", [], "ao", "ar", "main"),
100+
CurrentState = WorkflowState.Done
101+
};
86102
await sut.SaveAsync(ctx);
87103
await sut.ArchiveAsync("wfarch");
88104
var stateDir = Path.Combine(_tmp, ".gsd", "state");
89-
Assert.Empty(Directory.GetFiles(stateDir,"*wfarch*.json"));
105+
Assert.Empty(Directory.GetFiles(stateDir, "*wfarch*.json"));
90106
var archDir = Path.Combine(_tmp, ".gsd", "archive");
91-
Assert.Single(Directory.GetFiles(archDir,"*wfarch*.json"));
107+
Assert.Single(Directory.GetFiles(archDir, "*wfarch*.json"));
92108
}
93109

94110
// ArchiveAsync non-existent workflowId is a no-op
@@ -101,6 +117,6 @@ public async Task Archive_NonExistent_NoOp()
101117

102118
public void Dispose()
103119
{
104-
if (Directory.Exists(_tmp)) Directory.Delete(_tmp, recursive:true);
120+
if (Directory.Exists(_tmp)) Directory.Delete(_tmp, recursive: true);
105121
}
106122
}

src/GsdOrchestrator.Tests/States/SdlcProfileTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void GsdWorkflowContext_DefaultsToCasSdlcProfile()
2525
{
2626
var ctx = new GsdWorkflowContext();
2727

28-
Assert.Equal("1.0", ctx.SchemaVersion);
28+
Assert.Equal("1.1", ctx.SchemaVersion);
2929
Assert.Equal(SdlcProfile.CasSdlcV1, ctx.SdlcProfile);
3030
}
3131

src/GsdOrchestrator.Tests/TestGeneratingStateTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ private static IChatClient BuildLlmNoToolCall()
6363
{
6464
var llm = Substitute.For<IChatClient>();
6565
var stopResponse = new ChatResponse(
66-
new ChatMessage(ChatRole.Assistant, "no tests needed")) { FinishReason = ChatFinishReason.Stop };
66+
new ChatMessage(ChatRole.Assistant, "no tests needed"))
67+
{ FinishReason = ChatFinishReason.Stop };
6768
llm.GetResponseAsync(
6869
Arg.Any<IEnumerable<ChatMessage>>(),
6970
Arg.Any<ChatOptions?>(),

0 commit comments

Comments
 (0)