From 1cc2561dd9762b8e0e2c052fc0431aeb267a134c Mon Sep 17 00:00:00 2001 From: Paul DeVito Date: Tue, 29 Sep 2026 22:42:46 +0300 Subject: [PATCH 01/13] test(integration): turn off config reload in the test fixture WebApplication.CreateBuilder watches appsettings files for changes. On macOS the FileSystemWatcher start can hang, and then the integration run hangs before the first test. The tests never change these files at run time, so the fixture turns off config reload. --- QueryKit.IntegrationTests/TestFixture.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/QueryKit.IntegrationTests/TestFixture.cs b/QueryKit.IntegrationTests/TestFixture.cs index 1f97f3c..567fb72 100644 --- a/QueryKit.IntegrationTests/TestFixture.cs +++ b/QueryKit.IntegrationTests/TestFixture.cs @@ -28,7 +28,9 @@ public async Task InitializeAsync() { var builder = WebApplication.CreateBuilder(new WebApplicationOptions { - EnvironmentName = Consts.Testing.IntegrationTestingEnvName + EnvironmentName = Consts.Testing.IntegrationTestingEnvName, + // the file watcher for config reload can hang on start on macOS + Args = ["--hostBuilder:reloadConfigOnChange=false"] }); _dbContainer = new PostgreSqlBuilder("postgres:15.1").Build(); From 05d1775bd710a2f8b4a6817582fb8d15e91c5b0e Mon Sep 17 00:00:00 2001 From: Paul DeVito Date: Tue, 29 Sep 2026 22:06:54 +0300 Subject: [PATCH 02/13] test(filter): query only its own recipes in the property-to-property test can_filter_with_property_to_property_child_properties filtered all recipes with Author.Name == Title. Other tests write recipes with random titles and random author names to the same database. When one pair matched, the test got two rows and failed. The test now queries only the two recipes that it inserts. --- QueryKit.IntegrationTests/Tests/DatabaseFilteringTests.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/QueryKit.IntegrationTests/Tests/DatabaseFilteringTests.cs b/QueryKit.IntegrationTests/Tests/DatabaseFilteringTests.cs index b126188..8846e2c 100644 --- a/QueryKit.IntegrationTests/Tests/DatabaseFilteringTests.cs +++ b/QueryKit.IntegrationTests/Tests/DatabaseFilteringTests.cs @@ -1973,7 +1973,8 @@ public async Task can_filter_with_property_to_property_child_properties() // Act var queryableRecipes = testingServiceScope.DbContext().Recipes - .Include(x => x.Author); + .Include(x => x.Author) + .Where(x => x.Id == fakeRecipe.Id || x.Id == differentRecipe.Id); var appliedQueryable = queryableRecipes.ApplyQueryKitFilter(input); var recipes = await appliedQueryable.ToListAsync(); From c99b17c9d8643ad3c66af66562523372b37561b5 Mon Sep 17 00:00:00 2001 From: Paul DeVito Date: Tue, 29 Sep 2026 21:43:56 +0300 Subject: [PATCH 03/13] test(verify-querykit): add fixtures and a culture flag to the harness The parser and conversion checks need more seed data and settings. Each recipe now has a Sku, a Serving text with commas, and a ServeTime with fractional seconds. The custom-operation preset adds sku_is, and a new hidden-price preset maps a prevented Price property to cost. The --culture flag runs the driver in a different thread culture, and the output JSON records the culture and the time zone. --- .agents/skills/verify-querykit/SKILL.md | 3 ++- .../skills/verify-querykit/features/README.md | 12 +++++------ .../verify-querykit/harness/Driver/Configs.cs | 10 +++++++++- .../verify-querykit/harness/Driver/Model.cs | 20 ++++++++++++++----- .../verify-querykit/harness/Driver/Program.cs | 17 ++++++++++++++-- 5 files changed, 47 insertions(+), 15 deletions(-) diff --git a/.agents/skills/verify-querykit/SKILL.md b/.agents/skills/verify-querykit/SKILL.md index ce7aaa4..6f60c6e 100644 --- a/.agents/skills/verify-querykit/SKILL.md +++ b/.agents/skills/verify-querykit/SKILL.md @@ -78,13 +78,14 @@ If the doctor fails and `qk rebuild` does not correct it, run `qk down` and then ## Drive ```bash -.agents/skills/verify-querykit/qk run