diff --git a/src/settings-ui/Settings.UI/PowerToys.Settings.csproj b/src/settings-ui/Settings.UI/PowerToys.Settings.csproj index 45650ecb26..49ecf138f1 100644 --- a/src/settings-ui/Settings.UI/PowerToys.Settings.csproj +++ b/src/settings-ui/Settings.UI/PowerToys.Settings.csproj @@ -227,4 +227,23 @@ + + + + + <_SparseRootDir>$([System.IO.Path]::GetFullPath('$(OutputPath)..\')) + <_SparseSettingsAssetsDir>$(_SparseRootDir)Assets\Settings\ + + + <_SettingsAssetsFiles Include="$(MSBuildProjectDirectory)\Assets\Settings\**\*" /> + + + diff --git a/tools/SettingsSearchEvaluation.Tests/EvaluatorTests.cs b/tools/SettingsSearchEvaluation.Tests/EvaluatorTests.cs index 463a15009e..ce4e0c13ed 100644 --- a/tools/SettingsSearchEvaluation.Tests/EvaluatorTests.cs +++ b/tools/SettingsSearchEvaluation.Tests/EvaluatorTests.cs @@ -66,4 +66,64 @@ public class EvaluatorTests Assert.IsTrue(engine.CaseResults[0].HitAtK); Assert.AreEqual(1, engine.CaseResults[0].BestRank); } + + [TestMethod] + public async Task RunAsync_SemanticEngine_ReturnsReportWithoutThrowing() + { + const string json = """ +[ + { + "type": 0, + "header": "Fancy Zones", + "pageTypeName": "FancyZonesPage", + "elementName": "", + "elementUid": "FancyZones", + "parentElementName": "", + "description": "", + "icon": null + } +] +"""; + + var (entries, diagnostics) = EvaluationDataLoader.LoadEntriesFromJson(json); + var cases = new[] + { + new EvaluationCase + { + Query = "Fancy Zones", + ExpectedIds = new[] { "FancyZones" }, + Notes = "Semantic smoke test.", + }, + }; + + var options = new RunnerOptions + { + IndexJsonPath = "test-index.json", + CasesJsonPath = null, + Engines = new[] { SearchEngineKind.Semantic }, + MaxResults = 5, + TopK = 5, + Iterations = 1, + WarmupIterations = 0, + SemanticIndexTimeout = TimeSpan.FromSeconds(3), + OutputJsonPath = null, + }; + + var report = await Evaluator.RunAsync(options, entries, diagnostics, cases); + + Assert.AreEqual(1, report.Engines.Count); + var engine = report.Engines[0]; + Assert.AreEqual(SearchEngineKind.Semantic, engine.Engine); + + if (!engine.IsAvailable) + { + Assert.IsFalse(string.IsNullOrWhiteSpace(engine.AvailabilityError)); + Assert.AreEqual(0, engine.QueryCount); + } + else + { + Assert.AreEqual(1, engine.QueryCount); + Assert.AreEqual(1, engine.CaseResults.Count); + } + } } diff --git a/tools/SettingsSearchEvaluation/SettingsSearchEvaluation.csproj b/tools/SettingsSearchEvaluation/SettingsSearchEvaluation.csproj index 789903a625..ac2618528c 100644 --- a/tools/SettingsSearchEvaluation/SettingsSearchEvaluation.csproj +++ b/tools/SettingsSearchEvaluation/SettingsSearchEvaluation.csproj @@ -6,6 +6,7 @@ Exe SettingsSearchEvaluation SettingsSearchEvaluation + None enable enable $(DefaultItemExcludes);artifacts\**\*;bin\**\*;obj\**\*