From 632b4baa4585fe6a58b36a4cafdbeeca8080f988 Mon Sep 17 00:00:00 2001 From: Raschid Jimenez Date: Wed, 8 Apr 2026 09:29:31 -0400 Subject: [PATCH 1/3] chore: add Windows Node Latest to smoke test configuration --- .evergreen/config.yml | 41 ++++++++++++++++++++++++++ .evergreen/generate_evergreen_tasks.js | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index b72797dffe..60abc97995 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -3868,6 +3868,47 @@ buildvariants: - test-tls-support-5.0 - test-tls-support-4.4 - test-tls-support-4.2 + - name: windows-2022-latest-large-node-latest + display_name: Windows Node Latest + run_on: windows-2022-latest-large + expansions: + NODE_LTS_VERSION: latest + tasks: + - test-latest-server + - test-latest-replica_set + - test-latest-sharded_cluster + - test-rapid-server + - test-rapid-replica_set + - test-rapid-sharded_cluster + - test-8.0-server + - test-8.0-replica_set + - test-8.0-sharded_cluster + - test-7.0-server + - test-7.0-replica_set + - test-7.0-sharded_cluster + - test-6.0-server + - test-6.0-replica_set + - test-6.0-sharded_cluster + - test-5.0-server + - test-5.0-replica_set + - test-5.0-sharded_cluster + - test-4.4-server + - test-4.4-replica_set + - test-4.4-sharded_cluster + - test-4.2-server + - test-4.2-replica_set + - test-4.2-sharded_cluster + - test-latest-server-v1-api + - test-socks5-tls + - test-snappy-compression + - test-zstd-compression + - test-tls-support-latest + - test-tls-support-8.0 + - test-tls-support-7.0 + - test-tls-support-6.0 + - test-tls-support-5.0 + - test-tls-support-4.4 + - test-tls-support-4.2 - name: rhel8-node20.19.0-test-csfle-mongocryptd display_name: rhel 8 Node20.19.0 test mongocryptd run_on: rhel80-large diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index a866e26ff0..c4138e7821 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -417,7 +417,7 @@ for (const { BUILD_VARIANTS.push({ name, display_name, run_on, expansions, tasks: taskNames }); } - const configureLatestNodeSmokeTest = os.match(/^rhel/); + const configureLatestNodeSmokeTest = os.match(/^(rhel|windows)/); if (configureLatestNodeSmokeTest) { const buildVariantData = { name: `${osName}-node-latest`, From ac6efd8035f97ad13204a432290574e849b7ddf3 Mon Sep 17 00:00:00 2001 From: Sergey Zelenov Date: Thu, 21 May 2026 10:55:53 +0200 Subject: [PATCH 2/3] fix(NODE-7512): set CLIENT_ENCRYPTION expansion for Windows node-latest variant The node-latest smoke test build variant was missing CLIENT_ENCRYPTION from its expansions when clientEncryption is false (as it is on Windows per NODE-3401). run-tests.sh requires the var to be exactly "true" or "false" and exits 1 otherwise, causing all Windows node-latest tasks to fail before any tests run. Align with the regular variant loop by always emitting String(!!clientEncryption) instead of conditionally setting it only when truthy. --- .evergreen/config.yml | 5 ++++- .evergreen/generate_evergreen_tasks.js | 9 +++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 40925288f0..6bff2e19f1 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -3687,7 +3687,8 @@ buildvariants: run_on: rhel80-large expansions: NODE_LTS_VERSION: latest - CLIENT_ENCRYPTION: true + CLIENT_ENCRYPTION: 'true' + TEST_CSFLE: 'true' tasks: - test-latest-server - test-latest-replica_set @@ -3873,6 +3874,8 @@ buildvariants: run_on: windows-2022-latest-large expansions: NODE_LTS_VERSION: latest + CLIENT_ENCRYPTION: 'false' + TEST_CSFLE: 'false' tasks: - test-latest-server - test-latest-replica_set diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 2dacfa4216..a075a5d679 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -424,12 +424,13 @@ for (const { name: `${osName}-node-latest`, display_name: `${osDisplayName} Node Latest`, run_on, - expansions: { NODE_LTS_VERSION: 'latest' }, + expansions: { + NODE_LTS_VERSION: 'latest', + CLIENT_ENCRYPTION: String(!!clientEncryption), + TEST_CSFLE: String(!!clientEncryption) + }, tasks: tasks.map(({ name }) => name) }; - if (clientEncryption) { - buildVariantData.expansions.CLIENT_ENCRYPTION = true; - } BUILD_VARIANTS.push(buildVariantData); } } From cd4f8900ae1c7143e20898d1b1615b4bb0cdaf18 Mon Sep 17 00:00:00 2001 From: Sergey Zelenov Date: Thu, 21 May 2026 14:07:45 +0200 Subject: [PATCH 3/3] fix(NODE-7512): work around Windows C:/Z: NTFS junction in CI scripts On some Windows Evergreen hosts, install-node.sh resolves NODE_ARTIFACTS_PATH to Z: (via realpath following an NTFS junction) but DRIVERS_TOOLS is always set to C: by prepare-shell.sh. When run-tests.sh later calls init-node-and-npm-env.sh via the C: path, NODE_ARTIFACTS_PATH gets recomputed to C: and npm is not found. Fix by persisting the correctly-resolved NODE_ARTIFACTS_PATH to $DRIVERS_TOOLS/.env in install-dependencies.sh, and restoring it in run-tests.sh if npm is inaccessible after init-node-and-npm-env.sh runs. --- .evergreen/install-dependencies.sh | 16 ++++++++++++++++ .evergreen/run-tests.sh | 12 ++++++++++++ 2 files changed, 28 insertions(+) diff --git a/.evergreen/install-dependencies.sh b/.evergreen/install-dependencies.sh index 70cfa98487..7b0842b5c2 100644 --- a/.evergreen/install-dependencies.sh +++ b/.evergreen/install-dependencies.sh @@ -12,6 +12,15 @@ if [ -z ${NODE_LTS_VERSION+omitted} ]; then echo "NODE_LTS_VERSION is unset" && # be handled by this script in drivers tools. source $DRIVERS_TOOLS/.evergreen/install-node.sh +# On Windows, install-node.sh resolves SCRIPT_DIR via realpath which may follow an NTFS +# junction (e.g. C: -> Z:), so NODE_ARTIFACTS_PATH is now correctly set to the real drive. +# Persist it to .env so that subsequent shells (e.g. run-tests.sh) can recover it even +# when they call init-node-and-npm-env.sh via the C: DRIVERS_TOOLS path. +if [ "${OS:-}" = "Windows_NT" ] && [ -n "${NODE_ARTIFACTS_PATH:-}" ]; then + echo "NODE_ARTIFACTS_PATH=${NODE_ARTIFACTS_PATH}" >> "${DRIVERS_TOOLS}/.env" +fi +_INSTALL_DEPS_NODE_ARTIFACTS_PATH="${NODE_ARTIFACTS_PATH:-}" + if [ "$NATIVE" = "true" ]; then # https://github.com/nodejs/node-gyp#configuring-python-dependency . $DRIVERS_TOOLS/.evergreen/find-python3.sh @@ -22,3 +31,10 @@ fi npm install "${NPM_OPTIONS}" source $DRIVERS_TOOLS/.evergreen/init-node-and-npm-env.sh +# On Windows, the init call above may have overwritten NODE_ARTIFACTS_PATH with the wrong +# drive letter. Restore the previously resolved path if npm is no longer accessible. +if [ "${OS:-}" = "Windows_NT" ] && [ -n "$_INSTALL_DEPS_NODE_ARTIFACTS_PATH" ] && ! command -v npm >/dev/null 2>&1; then + export NODE_ARTIFACTS_PATH="$_INSTALL_DEPS_NODE_ARTIFACTS_PATH" + export PATH="$NODE_ARTIFACTS_PATH/nodejs/bin:$PATH" + hash -r +fi diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index 667f5cfc46..b87e57d605 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -36,7 +36,19 @@ echo "Running $AUTH tests over $SSL, connecting to $MONGODB_URI" if [[ -z "${SKIP_DEPS}" ]]; then source "${PROJECT_DIRECTORY}/.evergreen/install-dependencies.sh" else + # On Windows, DRIVERS_TOOLS is a C: path but Node may have been installed on Z: (NTFS + # junction). Load NODE_ARTIFACTS_PATH written by install-dependencies.sh before calling + # init so we can restore it if init resolves to the wrong drive. + _RUN_TESTS_SAVED_NODE_PATH="" + if [ "${OS:-}" = "Windows_NT" ] && [ -f "${DRIVERS_TOOLS}/.env" ]; then + _RUN_TESTS_SAVED_NODE_PATH=$(grep '^NODE_ARTIFACTS_PATH=' "${DRIVERS_TOOLS}/.env" | tail -1 | cut -d= -f2-) + fi source $DRIVERS_TOOLS/.evergreen/init-node-and-npm-env.sh + if [ "${OS:-}" = "Windows_NT" ] && [ -n "$_RUN_TESTS_SAVED_NODE_PATH" ] && ! command -v npm >/dev/null 2>&1; then + export NODE_ARTIFACTS_PATH="$_RUN_TESTS_SAVED_NODE_PATH" + export PATH="$NODE_ARTIFACTS_PATH/nodejs/bin:$PATH" + hash -r + fi fi if [ "$COMPRESSOR" != "" ]; then