Skip to content

Releases: testcontainers/testcontainers-dotnet

4.1.0

09 Dec 19:38
0d86bda
Compare
Choose a tag to compare

What's Changed

This is likely the last release for this year, unless urgent fixes become necessary.

I want to mention a change introduced in the last major release, where we refactored the IImage interface. As part of this update, we removed obsolete properties and overloaded constructors. If you previously used an overload other than DockerImage(string), please ensure you pass the correct values to the constructor.

Additionally, we replaced Docker.DotNet with our own fork to keep the Docker Engine API up to date. Our goal is to improve reliability and performance while offering a more developer-friendly and convenient client. If you depend on a Docker client for .NET, we encourage you to contribute to this project ❤️.

On a personal note, I wish everyone a peaceful and lovely holiday season. Take this time to rest, connect with loved ones, and recharge for the new year. Take care.

🚀 Features

🐛 Bug Fixes

  • fix: Postpone exception in DbContainerFixture to match the behavior of ContainerFixture (#1310) @0xced
  • fix: Do not pre-pull scratch image (#1304) @HofmeisterAn
  • fix: Add HTTP wait strategy to prevent race-condition in WaitUntilHttpRequestIsSucceededTest (#1299) @HofmeisterAn
  • fix: Add HTTP wait strategy to prevent race-condition in TarOutputMemoryStreamTest (#1297) @HofmeisterAn
  • fix: Prepend Docker Hub namespace to repository (#1287) @HofmeisterAn

📖 Documentation

🧹 Housekeeping

4.0.0

01 Nov 09:16
1a78654
Compare
Choose a tag to compare

What's Changed

Thanks so much for all the effort you put into this release 🙌. We are continuing to align Testcontainers for .NET with other language implementations and working on improving the domain-specific language.

We have updated the IImage interface to follow the domain-specific language with the correct property names. The table below shows the changes. We tried to make the transition as smooth as possible, but be aware that relying on the Repository property might cause issues since it now resolves a different value than before. We have kept the old properties, marked them as obsolete, and provided guidance on how to migrate.

Actual Expected (New)
Registry - myregistryhost:5000
Repository myregistryhost:5000/fedora fedora/httpd
Name httpd -
Tag version1.0 version1.0
Digest - sha256:37a3b014d320...
GetHostname() myregistryhost:5000 myregistryhost:5000

⚠️ Breaking Changes

🚀 Features

  • feat: Use exec to replace current shell with the Kafka process (as ENTRYPOINT) (#1282) @jasoncouture
  • feat: Add getter for Azurite blob, queue and table endpoint (#1278) @pregress
  • feat: Reintroduce Papercut module (#1268) @TechLiam
  • feat: Add Neo4j Enterprise Edition support (WithEnterpriseEdition(bool)) (#1269) @Sossenbinder
  • feat: Support digest in IImage, DockerImage and in the WithImage(string) implementation (#1249) @Kielek
  • feat: Align IImage properties with Docker DSL (#1256) @HofmeisterAn
  • feat: Change visibility of AccountName and AccountKey to public, move to AzuriteBuilder (#1258) @mikecole
  • feat: Get Docker endpoint from Docker context (#1235) @0xced

🐛 Bug Fixes

  • fix: Bump MSSQL image version, remove Azure SQL Edge and Papercut module (#1265) @HofmeisterAn
  • fix: Throw exception if Docker resource does not exist instead of silently ignoring it (#1254) @0xced

🧹 Housekeeping

3.10.0

03 Sep 18:26
934d7f0
Compare
Choose a tag to compare

Hey everyone, just wanted to say a huge thanks to all of you who helped with this version — whether through contributions, reporting issues, or discussions. I've been very busy lately, and your support has been a huge help. I really appreciate it!

What's Changed

🚀 Features

🐛 Bug Fixes

📖 Documentation

🧹 Housekeeping

3.9.0

17 Jun 04:56
b1ad245
Compare
Choose a tag to compare

Thank you to everyone whose contributions made this release possible.

What's Changed

⚠️ Breaking Changes

The UntilOperationIsSucceeded(Func<bool>, int, Action<IWaitStrategy>) wait strategy is obsolete. Instead of this wait strategy, use any other wait strategy that matches your use case and configure the retry behavior accordingly (wait strategy options).

Using reuse together with the container builder method WithName(string) will generate a new reuse hash the first time you use the configuration. The container name was not included in calculating the reuse hash previously.

🚀 Features

🐛 Bug Fixes

  • fix: Add default file permission (755 for image build) (#1176) @HofmeisterAn
  • fix(MySql): Create an empty /var/lib/mysql-files directory to prevent older versions from failing to start (#1144) @0xced

📖 Documentation

🧹 Housekeeping

📦 Dependency Updates

3.8.0

19 Mar 15:14
14f9ad9
Compare
Choose a tag to compare

Thank you very much to all contributors once again. This version contains really great features and important fixes. Awesome increment 🙏.

What's Changed

⚠️ Breaking Changes

If you have overwritten the default logger previously (setting TestcontainersSettings.Logger), please be aware that each builder now offers a dedicated API to configure the actual logger. This has several advantages; among others, it integrates very nicely into xUnit.net's scoped loggers.

  • feat: Add WithLogger(ILogger) builder API (#1100) @0xced

🚀 Features

🐛 Bug Fixes

  • fix: Prevent a NullReferenceException when pulling uncached base images to build an image (#1126) @tom-englert
  • fix: Prevent .dockerignore entry from matching everything if it ends with globstart (#1122) @HofmeisterAn
  • fix: Consider the timestamp in the log message wait strategy (read the correct log message chunk) (#1110) @HofmeisterAn
  • fix(CosmosDb): SSL connection could not be established (#1109) @WakaToa

🧹 Housekeeping

  • chore: Ensure that stderr is empty after executing scripts (#1116) @0xced
  • chore: Use the pg_isready command to assess whether PostgreSQL is ready or not (#1111) @0xced
  • chore: Switch to the SDK's included Central Package Management (#1106) @HofmeisterAn
  • chore: Use relative ProjectReference paths instead of $(SolutionDir) (#1094) @0xced
  • chore: Update xUnit.net (#1087) @HofmeisterAn

📦 Dependency Updates

  • chore(deps): Bump Microsoft.Data.SqlClient from 5.1.0 to 5.1.3 in /tests/Testcontainers.SqlEdge.Tests (#1088) @dependabot
  • chore(deps): Bump Microsoft.Data.SqlClient from 5.1.0 to 5.1.3 in /tests/Testcontainers.MsSql.Tests (#1089) @dependabot

3.7.0

09 Jan 14:39
Compare
Choose a tag to compare

Happy New Year and a massive thank you to all the contributors who made the new version of Testcontainers for .NET possible 🙌!

What's Changed

🚀 Features

🐛 Bug Fixes

  • fix: Retry configuring Couchbase on HttpIOException (#1064) @mgroves

📖 Documentation

🧹 Housekeeping

  • chore: Update Ryuk image from version 0.5.1 to 0.6.0 (#1084) @HofmeisterAn
  • chore: Improve the Base64Provider resilience to malformed configuration files (#1081) @0xced
  • chore: Invert #if NETSTANDARD* conditional compilation conditions (#1079) @0xced
  • chore: Rename the file CouchDbContainerTest.cs to CouchbaseContainerTest.cs (#1067) @mgroves
  • chore: Replace custom wait strategy with default strategies (#1059) @ShirAvneri
  • chore: Remove Microsoft.SourceLink.GitHub (#1057) @HofmeisterAn
  • chore: Update .NET SDK to version 8 (LTS) (#1054) @HofmeisterAn

3.6.0

10 Nov 19:49
46c05d7
Compare
Choose a tag to compare

A heartfelt thank you to each contributor. Your contributions, whether through sharing ideas for improvements, identifying issues, submitting pull requests, or writing articles, are immensely appreciated and help me a lot. THANK YOU for your support.

What's Changed

⚠️ Breaking Changes

The members of the container and image builder, WithImagePullPolicy and WithImageBuildPolicy, previously received a callback argument of type ImagesListResponse. We've now updated these callbacks, and they will receive an argument of type ImageInspectResponse. This change was implemented to offer more detailed information regarding the actual cached image.

🚀 Features

🐛 Bug Fixes

  • fix: Retain the internal Couchbase builder configuration if the user overrides the default configuration (#1040) @HofmeisterAn
  • fix: Prevent invalid negative timestamps getting container logs (#1038) @mausch

📖 Documentation

🧹 Housekeeping

3.5.0

07 Sep 17:01
59991ec
Compare
Choose a tag to compare

What's Changed

🚀 Features

  • feat: Allow MongoDb module configuration without credentials (#983) @the-avid-engineer
  • feat: Add support for RSA private key (RsaPrivateCrtKeyParameters) TLS authentication with protected Docker daemon sockets (#978) @zuntio
  • feat: Add InfluxDb module (#975) @MelomanG

🐛 Bug Fixes

  • fix: Do not pre pull Dockerfile build stages that do not correspond to base images (#979) @HofmeisterAn

📖 Documentation

  • docs: Add documentation on enabling debug log messages for the default logger (#991) @HofmeisterAn
  • docs: Add global Testcontainers header (#967) @leocross

🧹 Housekeeping

  • chore: Improve error message when Docker is not running (#987) @0xced
  • chore: Update BouncyCastle.Cryptography to 2.2.1 (previous Portable.BouncyCastle) (#985) @jcmrva
  • chore: Add User-Agent HTTP header to Docker.DotNet client (#970) @eddumelendez
  • chore: Remove CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT env var (#971) @eddumelendez

3.4.0

10 Aug 17:55
b2b743b
Compare
Choose a tag to compare

Thank you to all contributors for your valuable efforts towards this release. Your contributions are greatly appreciated ❤️.

What's Changed

⚠️ Breaking Changes

🚀 Features

🐛 Bug Fixes

  • fix(CosmosDb): Wait until all partitions are started (#961) @jacobjmarks
  • fix: Do not dispose a custom HTTP message handler in an HTTP wait strategy (#958) @jacobjmarks
  • fix(MySql): Rename default database to test (do not use MySQL system schema) (#949) @benjaminoerskovtryg
  • fix: Replace mysql with mariadb binary in MariaDB module (#942) @FlorianHockmann
  • fix: Copy files to container without removing first character from filename (#938) @HofmeisterAn

📖 Documentation

  • docs: Provide instructions for copying directories or files to the container (#939) @HofmeisterAn

🧹 Housekeeping

3.3.0

27 Jun 11:19
402df92
Compare
Choose a tag to compare

What's Changed

🚀 Features

  • feat: Add support for copying directories and files to a container (#913) @HofmeisterAn
  • feat: Change access modifier of OracleBuilder.WithUsername(string) to public (#923) @0xced
  • feat: Add UsingHttpMessageHandler(HttpMessageHandler) to HttpWaitStrategy (#910) @mkstephenson

🐛 Bug Fixes

  • fix: Use the actual Docker endpoint to extract the socket path for the Resource Reaper (#930) @HofmeisterAn
  • fix: Ensure site_url is set in the MkDocs config to prevent None in sitemap generation (#927) @leocross
  • fix: Remove cref from inheritdoc (#922) @HofmeisterAn
  • fix: Add Docker Desktop (for Linux / macOS) authentication provider (#911) @HofmeisterAn

📖 Documentation

  • docs: Fix typo in Testcontainers properties file path (#935) @HofmeisterAn
  • docs: Update Testcontainers for Java docs url (#916) @leocross
  • docs: Add RabbitMQ module documentation incl. an example (#918) @annaerdi
  • docs: Replace "mess up" with "clutter up" in the best practices (#905) @gurry

🧹 Housekeeping