Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions changelog.d/unreleased/2953.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
category: fixed
issues:
- 2953
affected:
- tests/CodeIndex.Tests/DbPathResolverTests.cs
---

## English

- **DbPathResolver query data-dir tests no longer depend on the active workspace state (#2953)** — `ResolveDataDirForQuery` tests now isolate `CDIDX_ACTIVE_WORKSPACE` and `XDG_CONFIG_HOME`, so developer-local active workspace configuration cannot redirect expected test database paths.

## 日本語

- **DbPathResolver の query data-dir テストが active workspace 状態に依存しないようになりました (#2953)** — `ResolveDataDirForQuery` テストで `CDIDX_ACTIVE_WORKSPACE` と `XDG_CONFIG_HOME` を隔離することで、開発者ローカルの active workspace 設定が期待するテスト用 DB パスを上書きしないようにしました。
17 changes: 17 additions & 0 deletions tests/CodeIndex.Tests/DbPathResolverTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,11 @@ public void ResolveDataDir_UsesStableXdgWorkspaceHashBeforeWorkspaceDefault()
public void ResolveDataDirForQuery_WithXdgPrefersAncestorWorkspaceDataDir()
{
var projectRoot = TestProjectHelper.CreateTempProject("cdidx_query_xdg_root_db");
var configHome = TestProjectHelper.CreateTempProject("cdidx_query_xdg_config");
var xdgDir = Path.Combine(Path.GetTempPath(), $"cdidx_xdg_dir_{Guid.NewGuid():N}");
try
{
using var env = IsolateActiveWorkspace(configHome);
var child = Path.Combine(projectRoot, "src", "App");
Directory.CreateDirectory(child);
var indexedRootResolution = DbPathResolver.ResolveDataDir(projectRoot, explicitDataDir: null, environmentDataDir: null, xdgDataHome: xdgDir);
Expand All @@ -98,6 +100,7 @@ public void ResolveDataDirForQuery_WithXdgPrefersAncestorWorkspaceDataDir()
finally
{
TestProjectHelper.DeleteDirectory(projectRoot);
TestProjectHelper.DeleteDirectory(configHome);
TestProjectHelper.DeleteDirectory(xdgDir);
}
}
Expand All @@ -106,8 +109,10 @@ public void ResolveDataDirForQuery_WithXdgPrefersAncestorWorkspaceDataDir()
public void ResolveDataDirForQuery_PrefersOutermostAncestorCdidx()
{
var projectRoot = TestProjectHelper.CreateTempProject("cdidx_query_root_db");
var configHome = TestProjectHelper.CreateTempProject("cdidx_query_root_config");
try
{
using var env = IsolateActiveWorkspace(configHome);
var child = Path.Combine(projectRoot, "src", "App");
Directory.CreateDirectory(child);
Directory.CreateDirectory(Path.Combine(projectRoot, ".cdidx"));
Expand All @@ -121,15 +126,18 @@ public void ResolveDataDirForQuery_PrefersOutermostAncestorCdidx()
finally
{
TestProjectHelper.DeleteDirectory(projectRoot);
TestProjectHelper.DeleteDirectory(configHome);
}
}

[Fact]
public void ResolveDataDirForQuery_FallsBackToCurrentDirectoryWhenNoAncestorCdidxExists()
{
var projectRoot = TestProjectHelper.CreateTempProject("cdidx_query_no_root_db");
var configHome = TestProjectHelper.CreateTempProject("cdidx_query_no_root_config");
try
{
using var env = IsolateActiveWorkspace(configHome);
var child = Path.Combine(projectRoot, "src", "App");
Directory.CreateDirectory(child);

Expand All @@ -141,6 +149,7 @@ public void ResolveDataDirForQuery_FallsBackToCurrentDirectoryWhenNoAncestorCdid
finally
{
TestProjectHelper.DeleteDirectory(projectRoot);
TestProjectHelper.DeleteDirectory(configHome);
}
}

Expand Down Expand Up @@ -700,4 +709,12 @@ public void ResolveProjectRootForQuery_ReturnsNullForExplicitDbWithoutMetadata()
TestProjectHelper.DeleteFile(dbPath);
}
}

private static EnvironmentVariableScope IsolateActiveWorkspace(string configHome)
{
var env = EnvironmentVariableScope.Capture(ActiveWorkspace.EnvironmentVariable, "XDG_CONFIG_HOME");
env.Set(ActiveWorkspace.EnvironmentVariable, null);
env.Set("XDG_CONFIG_HOME", configHome);
return env;
}
}
Loading