Improve file operations, layout memory, and drive status.
Add a sequential file-operations queue with pause, reorder, and optional auto-clear; persist window size and tree width; show free space; and clear leftover indexing status. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -136,6 +136,39 @@ public class SourceManagerTests
|
||||
Assert.Null(await store.Entries.GetRootAsync(source.Id));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Stale_scanning_status_clears_when_no_job_is_running()
|
||||
{
|
||||
var db = Path.Combine(Path.GetTempPath(), "ew-app", Guid.NewGuid().ToString("N"), "index.db");
|
||||
await using var store = new SqliteIndexStore(db, NullLogger<SqliteIndexStore>.Instance);
|
||||
await store.OpenAsync();
|
||||
var volumes = new FakeVolumes
|
||||
{
|
||||
Online =
|
||||
[
|
||||
new VolumeFingerprint
|
||||
{
|
||||
Kind = SourceKind.NtfsLocal,
|
||||
RootPath = @"D:\",
|
||||
DisplayName = "Games (D:)",
|
||||
VolumeSerial = 42,
|
||||
CapacityBytes = 1000
|
||||
}
|
||||
]
|
||||
};
|
||||
var env = new FakeEnv(Path.GetDirectoryName(db)!);
|
||||
var mgr = new SourceManager(store, volumes, env, new SystemClock(), NullLogger<SourceManager>.Instance);
|
||||
await mgr.InitializeAsync();
|
||||
var source = (await store.Sources.GetAllAsync()).Single();
|
||||
await store.Sources.UpdateStatusAsync(source.Id, SourceStatus.Scanning, null);
|
||||
await store.Sources.UpdateIndexedAsync(source.Id, DateTimeOffset.UtcNow, 1);
|
||||
|
||||
await mgr.RefreshOnlineStateAsync();
|
||||
source = (await store.Sources.GetAllAsync()).Single();
|
||||
Assert.Equal(SourceStatus.Online, source.Status);
|
||||
Assert.True(source.IsIndexed);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Forget_removes_unc_from_recents()
|
||||
{
|
||||
@@ -166,6 +199,11 @@ file sealed class FakeVolumes : IVolumeService
|
||||
|| v.RootPath.Equals(path, StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
public bool IsPathReachable(string path) => Online.Any(v => path.StartsWith(v.RootPath.TrimEnd('\\'), StringComparison.OrdinalIgnoreCase));
|
||||
public VolumeSpace GetSpace(string path)
|
||||
{
|
||||
var fp = Probe(path);
|
||||
return new VolumeSpace(fp?.CapacityBytes, fp?.FreeBytes);
|
||||
}
|
||||
}
|
||||
|
||||
file sealed class FakeEnv : IAppEnvironment
|
||||
|
||||
Reference in New Issue
Block a user