fix(tests): skip container integration tests on transient Docker/registry failures#174
Merged
Conversation
…stry failures
CI failed when Docker Hub returned a transient InternalServerError pulling
mysql:8.0 ("Head https://registry-1.docker.io/.../manifests/8.0: unknown"),
hard-failing the run. Only one of eight MySQL scenarios failed in the same
run, confirming an infrastructure flake rather than a product defect.
Add ContainerStartup.StartOrSkipAsync which starts the container and converts
transient Docker daemon/registry failures into a SkipException (following the
existing Xunit.SkippableFact pattern used by the Snowflake tests). The skip is
thrown eagerly in the test method body (before the TinyBDD pipeline, which
would otherwise wrap it in BddStepException), so SkippableFact reports a skip
instead of a failure. Genuine assertion/product failures still fail the build.
Convert all Testcontainers-backed integration tests (MySQL, PostgreSQL,
SQL Server, Oracle, Firebird, end-to-end, query-schema) to [SkippableFact]
and eager container start. Add unit tests for the failure-detection logic.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Contributor
Code Coverage |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #174 +/- ##
==========================================
+ Coverage 80.32% 88.61% +8.29%
==========================================
Files 61 61
Lines 3848 3848
Branches 558 470 -88
==========================================
+ Hits 3091 3410 +319
+ Misses 511 438 -73
+ Partials 246 0 -246
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CI failed when Docker Hub returned a transient InternalServerError pulling
mysql:8.0 ("Head https://registry-1.docker.io/.../manifests/8.0: unknown"),
hard-failing the run. Only one of eight MySQL scenarios failed in the same
run, confirming an infrastructure flake rather than a product defect.
Add ContainerStartup.StartOrSkipAsync which starts the container and converts
transient Docker daemon/registry failures into a SkipException (following the
existing Xunit.SkippableFact pattern used by the Snowflake tests). The skip is
thrown eagerly in the test method body (before the TinyBDD pipeline, which
would otherwise wrap it in BddStepException), so SkippableFact reports a skip
instead of a failure. Genuine assertion/product failures still fail the build.
Convert all Testcontainers-backed integration tests (MySQL, PostgreSQL,
SQL Server, Oracle, Firebird, end-to-end, query-schema) to [SkippableFact]
and eager container start. Add unit tests for the failure-detection logic.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com