Cyberduck Cyberduck Mountain Duck Mountain Duck Cyberduck CLI CLI

Testing against real servers: much extended test coverage with Testcontainers

· David Kocher · Posted in Cyberduck

Cyberduck speaks to a lot of servers, and every server interprets a protocol slightly differently. To catch incompatibilities before you do, we have greatly extended the automated test coverage. Integration tests now run against disposable containers started with Testcontainers, instead of a handful of hosted accounts and embedded test servers.

Why Containers

Tests against hosted services depend on shared credentials, network access and the state of someone else's server. Containers are reproducible: each server is started on first use, shared for the lifetime of the test run and thrown away afterwards. Anyone can run the same tests on their own machine with Docker.

What Is Covered

The same test is run once per server implementation, and the Cryptomator vault tests additionally per vault version. Where a server legitimately does not implement a feature, such as server side copy, symbolic links or partial uploads, the test is skipped with a stated reason rather than silently passing.

Get Involved

The tests are part of the source code. If a server you rely on is missing, or you see a difference in behavior between implementations, open an issue or send a pull request.