Skip to content

Releases: testcontainers/testcontainers-dotnet

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

3.2.0

23 May 06:47
12571d7
Compare
Choose a tag to compare

What's Changed

🚀 Features

🐛 Bug Fixes

  • fix: Do not create a Port Forwarding Container instance if auto-discovery does not detect Docker host (#900) @HofmeisterAn
  • fix: Replace CLI command to detect open ports in Linux containers (#883) @HofmeisterAn
  • fix: Remove trailing slash from rootless Docker socket path (#881) @HofmeisterAn

📖 Documentation

🧹 Housekeeping

3.1.0

28 Apr 13:49
90a3006
Compare
Choose a tag to compare

What's Changed

⚠️ Breaking Changes

  • As mentioned in the two previous releases, we replaced the legacy extension method modules with a dedicated API. We recommend moving forward to the new API. In this release, all classes and interfaces related to the legacy extension method approach have been removed.

🚀 Features

🐛 Bug Fixes

📖 Documentation

🧹 Housekeeping

3.0.0

08 Mar 09:37
b3fb3cc
Compare
Choose a tag to compare

What's Changed

We have added and replaced the modules mentioned below. Each module contains its own builder and configuration type, making it much easier to support various test cases. Currently, the modules are designed to quickly spin up common configurations of real dependencies to establish a connection to the application or service running inside it.

We are interested in your opinions and requirements in regards of the module's capabilities. Creating great modules is a community effort, so please consider sharing your thoughts with us and other Testcontainers users in this discussion or in our Slack workspace.

We will continuously add module features and documentation. Currently, information on how to configure and run modules can be found in the tests. If you are already familiar with Testcontainers, you should have no trouble understanding it as the experience is very similar as before. Here is a quick example using xUnit.net:

public sealed class ModuleSupport : IAsyncLifetime
{
    private readonly MsSqlContainer _msSqlContainer = new MsSqlBuilder().Build();

    public Task InitializeAsync()
    {
        return _msSqlContainer.StartAsync();
    }

    public Task DisposeAsync()
    {
        return _msSqlContainer.DisposeAsync().AsTask();
    }

    [Fact]
    public void ConnectionStateReturnsOpen()
    {
        // Given
        using DbConnection connection = new SqlConnection(_msSqlContainer.GetConnectionString());

        // When
        connection.Open();

        // Then
        Assert.Equal(ConnectionState.Open, connection.State);
    }
}

⚠️ Breaking Changes

Old name New name
ITestcontainersContainer, IDockerContainer, IRunningDockerContainer IContainer
IDockerImage IImage
IDockerNetwork INetwork
IDockerVolume IVolume
TestcontainersBuilder ContainerBuilder
TestcontainersContainer DockerContainer
TestcontainersNetworkBuilder NetworkBuilder
TestcontainersVolumeBuilder VolumeBuilder
WithCreateContainerParametersModifier WithCreateParameterModifier

🚀 Features

🐛 Bug Fixes

📖 Documentation

🧹 Housekeeping

2.4.0

01 Feb 13:22
af7f253
Compare
Choose a tag to compare

What's Changed

⚠️ Breaking Changes

We made a concerted effort to avoid breaking changes as much as possible. Our goal was to provide a smooth transition to the new version for our users. To achieve this, we have flagged all upcoming breaking changes as obsolete, which means that they will still work for now but will be removed in the next version.

However, there may be cases where we are unable to maintain backwards compatibility. In such instances, we will do our best to provide clear documentation and guidance on how to update your code to work with the new version. We apologize in advance for any inconvenience this may cause and we appreciate your understanding.

  1. The interface member IWaitUntil.Until(ITestcontainersContainer, ILogger) has been changed to IWaitUntil.UntilAsync(IContainer). The container instance now holds the instance of ILogger.

  2. The member ImageFromDockerfileBuilder.Build() does not return a Task<string> anymore. It returns an implementation of IFutureDockerImage. To finally build the image call CreateAsync(CancellationToken).

  3. Use the ContainerBuilder instead of TestcontainersBuilder<TestcontainersContainer> or ContainerBuilder<DockerContainer> for generic (non module) configurations. If you rely on the module builder, please be aware of #750 (comment) for now.

  4. Following interfaces and classes has been renamed (the old interfaces and classes are still supported in 2.4.0):

    Old name New name
    ITestcontainersContainer, IDockerContainer, IRunningDockerContainer IContainer
    IDockerImage IImage
    IDockerNetwork INetwork
    IDockerVolume IVolume
    TestcontainersBuilder ContainerBuilder
    TestcontainersNetworkBuilder NetworkBuilder
    TestcontainersVolumeBuilder VolumeBuilder
    TestcontainersContainer DockerContainer

🚀 Features

🐛 Bug Fixes

📖 Documentation

🧹 Housekeeping