fix(ui): failureReason "usage_limit" nachziehen + Worktree-Gate prüft die Platte
Zwei liegengebliebene Consumer aus den letzten beiden Commits:
- TaskRunner klassifiziert seit 07dd7570 "usage_limit", aber weder
TaskRowViewModel.FailureReasonLabel noch vm.failureReason (de/en) noch
die get_task-Tool-Beschreibung kannten den Wert — die UI zeigte
"Grund unbekannt", das MCP-Doc listete weiterhin max_turns|timeout|error.
- TaskRowViewModel.CanOpenWorktree prüfte nur auf einen nicht-leeren
String. Die Zeile behält den Path eines gemergten/verworfenen Worktrees,
also war der Menüpunkt aktiv und Process.Start warf in den Footer.
Jetzt zusätzlich Directory.Exists — dieselbe Prüfung, die
WorktreesOverviewModalViewModel und MergeSectionViewModel schon machen.
This commit is contained in:
@@ -65,13 +65,19 @@ public class TaskRowViewModelTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CanOpenWorktree_True_And_ReasonNull_When_Path_Present()
|
||||
public void CanOpenWorktree_True_And_ReasonNull_When_Folder_Exists()
|
||||
{
|
||||
var vm = new TaskRowViewModel { Id = "t" };
|
||||
vm.WorktreePath = @"C:\repo\worktrees\t";
|
||||
var dir = Path.Combine(Path.GetTempPath(), $"cd_wt_{Guid.NewGuid():N}");
|
||||
Directory.CreateDirectory(dir);
|
||||
try
|
||||
{
|
||||
var vm = new TaskRowViewModel { Id = "t" };
|
||||
vm.WorktreePath = dir;
|
||||
|
||||
Assert.True(vm.CanOpenWorktree);
|
||||
Assert.Null(vm.OpenWorktreeDisabledReason);
|
||||
Assert.True(vm.CanOpenWorktree);
|
||||
Assert.Null(vm.OpenWorktreeDisabledReason);
|
||||
}
|
||||
finally { Directory.Delete(dir, true); }
|
||||
}
|
||||
|
||||
[Theory]
|
||||
@@ -87,6 +93,18 @@ public class TaskRowViewModelTests
|
||||
Assert.NotNull(vm.OpenWorktreeDisabledReason);
|
||||
}
|
||||
|
||||
// A merged/discarded worktree leaves its recorded Path on the row long after the folder is
|
||||
// gone — the menu entry has to gray out, not throw inside Process.Start.
|
||||
[Fact]
|
||||
public void CanOpenWorktree_False_When_Recorded_Folder_Is_Gone()
|
||||
{
|
||||
var vm = new TaskRowViewModel { Id = "t" };
|
||||
vm.WorktreePath = Path.Combine(Path.GetTempPath(), $"cd_wt_gone_{Guid.NewGuid():N}");
|
||||
|
||||
Assert.False(vm.CanOpenWorktree);
|
||||
Assert.NotNull(vm.OpenWorktreeDisabledReason);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void OpenWorktreeGate_Raises_PropertyChanged_On_WorktreePath_Change()
|
||||
{
|
||||
@@ -115,7 +133,6 @@ public class TaskRowViewModelTests
|
||||
var vm = TaskRowViewModel.FromEntity(entity);
|
||||
|
||||
Assert.Equal(@"C:\repo\worktrees\t", vm.WorktreePath);
|
||||
Assert.True(vm.CanOpenWorktree);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
Reference in New Issue
Block a user