From 7f4fe22a987e33cb2d2ef5976080f6f9a1da7024 Mon Sep 17 00:00:00 2001 From: Yuya Nishihara Date: Sat, 7 Oct 2023 22:27:53 +0900 Subject: [PATCH] tests: disable parsing of system CA certificates in CLI tests On my Debian laptop, openssl_init() takes ~30ms to load the default CA certificates serialized in PEM format, and the cost is added to each jj invocation. This change saves 20s (of 50s) on my machine. % wc -l /usr/lib/ssl/cert.pem 3517 /usr/lib/ssl/cert.pem --- cli/tests/common/mod.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cli/tests/common/mod.rs b/cli/tests/common/mod.rs index c04b18ae2b..93d0ec1b3d 100644 --- a/cli/tests/common/mod.rs +++ b/cli/tests/common/mod.rs @@ -107,6 +107,14 @@ impl TestEnvironment { cmd.env("JJ_TIMESTAMP", timestamp.to_rfc3339()); cmd.env("JJ_OP_TIMESTAMP", timestamp.to_rfc3339()); + // libgit2 always initializes OpenSSL, and it takes a few tens of milliseconds + // to load the system CA certificates in X509_load_cert_crl_file_ex(). As we + // don't use HTTPS in our tests, we can disable the cert loading to speed up the + // CLI tests. If we migrated to gitoxide, maybe we can remove this hack. + if cfg!(unix) { + cmd.env("SSL_CERT_FILE", "/dev/null"); + } + if cfg!(all(windows, target_env = "gnu")) { // MinGW executables cannot run without `mingw\bin` in the PATH (which we're // clearing above), so we add it again here.