Skip to content

Make SQLite fallback reliable when Docker is unavailable#1072

Closed
MartinHock wants to merge 19 commits into
ardalis:mainfrom
MartinHock:main
Closed

Make SQLite fallback reliable when Docker is unavailable#1072
MartinHock wants to merge 19 commits into
ardalis:mainfrom
MartinHock:main

Conversation

@MartinHock

Copy link
Copy Markdown
Contributor

Summary

  • Make the functional test database provider explicitly selectable.
  • Keep SQL Server through Testcontainers as the preferred provider.
  • Fall back to SQLite only when Docker is unavailable.
  • Avoid failing the complete test run when Docker-specific coverage cannot run.
  • Use an isolated temporary SQLite database for each test factory.
  • Clean up the temporary SQLite database files after the test run.
  • Expose the active database provider for diagnostics and assertions.
  • Add tests that verify the SQLite provider and a functional endpoint using SQLite.

Behavior

When Docker is available:

  • SQL Server Testcontainers are used.
  • All functional tests run with SQL Server.
  • The Docker-specific test runs normally.

When Docker is unavailable:

  • The functional test factory falls back to SQLite.
  • The Docker-specific test is skipped.
  • The remaining functional tests continue to pass.

Only DockerUnavailableException triggers the fallback or skipped test. Other container or SQL Server startup errors remain visible as test failures.

Verification

With Docker running:

Total tests: 6
Passed: 6
Failed: 0
Skipped: 0

With Docker stopped:

Total tests: 6
Passed: 5
Failed: 0
Skipped: 1

Closes #1028

MartinHock and others added 19 commits June 9, 2026 07:53
Added .localpilot/ to .gitignore to prevent local pilot-related files and directories from being tracked by Git. This helps keep the repository clean from environment-specific or temporary files.
Added SQLitePCLRaw.bundle_e_sqlite3 version 3.0.3 to Directory.Packages.props for centralized package management. No other changes were made.
Signed-off-by: Martin Hock <martin.hock@icloud.com>
Bumps Microsoft.Extensions.Configuration from 10.0.7 to 10.0.10
Bumps Microsoft.Extensions.Http.Resilience from 10.5.0 to 10.8.0
Bumps Microsoft.Extensions.Logging.Abstractions from 10.0.7 to 10.0.10
Bumps Microsoft.Extensions.Options.ConfigurationExtensions from 10.0.7 to 10.0.10
Bumps Microsoft.Extensions.ServiceDiscovery from 10.5.0 to 10.8.0
Bumps Microsoft.NET.Test.Sdk from 18.6.0 to 18.8.1

---
updated-dependencies:
- dependency-name: Microsoft.Extensions.Configuration
  dependency-version: 10.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-packages
- dependency-name: Microsoft.Extensions.Http.Resilience
  dependency-version: 10.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: microsoft-packages
- dependency-name: Microsoft.Extensions.Logging.Abstractions
  dependency-version: 10.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-packages
- dependency-name: Microsoft.Extensions.Options.ConfigurationExtensions
  dependency-version: 10.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-packages
- dependency-name: Microsoft.Extensions.ServiceDiscovery
  dependency-version: 10.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: microsoft-packages
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-version: 18.8.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: microsoft-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
updated-dependencies:
- dependency-name: coverlet.collector
  dependency-version: 10.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-packages
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-version: 18.8.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: test-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps FastEndpoints from 8.1.0 to 8.2.0
Bumps FastEndpoints.Swagger from 8.1.0 to 8.2.0
Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.15.3 to 1.16.0
Bumps OpenTelemetry.Instrumentation.AspNetCore from 1.15.2 to 1.16.0
Bumps OpenTelemetry.Instrumentation.Http from 1.15.1 to 1.16.0
Bumps OpenTelemetry.Instrumentation.Runtime from 1.15.1 to 1.16.0
Bumps ReportGenerator from 5.5.9 to 5.5.10
Bumps Scalar.AspNetCore from 2.16.4 to 2.16.13
Bumps Vogen from 8.0.5 to 8.0.6

---
updated-dependencies:
- dependency-name: FastEndpoints
  dependency-version: 8.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: FastEndpoints.Swagger
  dependency-version: 8.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol
  dependency-version: 1.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: OpenTelemetry.Instrumentation.AspNetCore
  dependency-version: 1.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: OpenTelemetry.Instrumentation.Http
  dependency-version: 1.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: OpenTelemetry.Instrumentation.Runtime
  dependency-version: 1.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: ReportGenerator
  dependency-version: 5.5.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-other-non-major
- dependency-name: Scalar.AspNetCore
  dependency-version: 2.16.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-other-non-major
- dependency-name: Vogen
  dependency-version: 8.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-other-non-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
updated-dependencies:
- dependency-name: NSubstitute
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Martin Hock <martin.hock@icloud.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Hock <martin.hock@icloud.com>
Bumps FastEndpoints from 8.1.0 to 8.2.0
Bumps FastEndpoints.Swagger from 8.1.0 to 8.2.0
Bumps MessagePack from 3.1.7 to 3.1.8
Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.15.3 to 1.16.0
Bumps OpenTelemetry.Instrumentation.AspNetCore from 1.15.2 to 1.16.0
Bumps OpenTelemetry.Instrumentation.Http from 1.15.1 to 1.16.0
Bumps OpenTelemetry.Instrumentation.Runtime from 1.15.1 to 1.16.0
Bumps ReportGenerator from 5.5.9 to 5.5.10
Bumps Scalar.AspNetCore from 2.16.4 to 2.16.13
Bumps Vogen from 8.0.5 to 8.0.6

---
updated-dependencies:
- dependency-name: FastEndpoints
  dependency-version: 8.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: FastEndpoints.Swagger
  dependency-version: 8.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: MessagePack
  dependency-version: 3.1.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-other-non-major
- dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol
  dependency-version: 1.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: OpenTelemetry.Instrumentation.AspNetCore
  dependency-version: 1.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: OpenTelemetry.Instrumentation.Http
  dependency-version: 1.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: OpenTelemetry.Instrumentation.Runtime
  dependency-version: 1.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: ReportGenerator
  dependency-version: 5.5.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-other-non-major
- dependency-name: Scalar.AspNetCore
  dependency-version: 2.16.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-other-non-major
- dependency-name: Vogen
  dependency-version: 8.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-other-non-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Martin Hock <martin.hock@icloud.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Hock <martin.hock@icloud.com>
---
updated-dependencies:
- dependency-name: NSubstitute
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps Microsoft.EntityFrameworkCore.Design from 10.0.7 to 10.0.10
Bumps Microsoft.EntityFrameworkCore.InMemory from 10.0.7 to 10.0.10
Bumps Microsoft.EntityFrameworkCore.Relational from 10.0.7 to 10.0.10
Bumps Microsoft.EntityFrameworkCore.Sqlite from 10.0.7 to 10.0.10
Bumps Microsoft.EntityFrameworkCore.SqlServer from 10.0.7 to 10.0.10
Bumps Microsoft.Extensions.Http.Resilience from 10.5.0 to 10.8.0
Bumps Microsoft.Extensions.Logging from 10.0.7 to 10.0.10
Bumps Microsoft.Extensions.ServiceDiscovery from 10.5.0 to 10.8.0

---
updated-dependencies:
- dependency-name: Microsoft.EntityFrameworkCore.Design
  dependency-version: 10.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-packages
- dependency-name: Microsoft.EntityFrameworkCore.Relational
  dependency-version: 10.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-packages
- dependency-name: Microsoft.Extensions.Logging
  dependency-version: 10.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-packages
- dependency-name: Microsoft.EntityFrameworkCore.InMemory
  dependency-version: 10.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-packages
- dependency-name: Microsoft.EntityFrameworkCore.Sqlite
  dependency-version: 10.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-packages
- dependency-name: Microsoft.EntityFrameworkCore.SqlServer
  dependency-version: 10.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-packages
- dependency-name: Microsoft.Extensions.Http.Resilience
  dependency-version: 10.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: microsoft-packages
- dependency-name: Microsoft.Extensions.ServiceDiscovery
  dependency-version: 10.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: microsoft-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.16.0 to 1.17.0
Bumps OpenTelemetry.Extensions.Hosting from 1.16.0 to 1.17.0
Bumps Testcontainers from 4.11.0 to 4.13.0
Bumps Testcontainers.MsSql from 4.11.0 to 4.13.0

---
updated-dependencies:
- dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: OpenTelemetry.Extensions.Hosting
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: Testcontainers
  dependency-version: 4.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: Testcontainers.MsSql
  dependency-version: 4.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Martin Hock <martin.hock@icloud.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Hock <martin.hock@icloud.com>
Bumps Aspire.Hosting.SqlServer from 13.3.5 to 13.4.6
Bumps OpenTelemetry.Instrumentation.AspNetCore from 1.16.0 to 1.17.0
Bumps OpenTelemetry.Instrumentation.Http from 1.16.0 to 1.17.0
Bumps OpenTelemetry.Instrumentation.Runtime from 1.16.0 to 1.17.0
Bumps Scalar.AspNetCore from 2.16.13 to 2.16.15

---
updated-dependencies:
- dependency-name: Aspire.Hosting.SqlServer
  dependency-version: 13.4.6
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: OpenTelemetry.Instrumentation.AspNetCore
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: OpenTelemetry.Instrumentation.Http
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: OpenTelemetry.Instrumentation.Runtime
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-other-non-major
- dependency-name: Scalar.AspNetCore
  dependency-version: 2.16.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-other-non-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps Microsoft.AspNetCore.Mvc.Testing from 10.0.7 to 10.0.10

---
updated-dependencies:
- dependency-name: Microsoft.AspNetCore.Mvc.Testing
  dependency-version: 10.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Hock <martin.hock@icloud.com>
@MartinHock MartinHock closed this Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make the existing SQLite fallback reliable and testable when Docker is unavailable

1 participant