diff --git a/scripts/docker/ubuntu24.04-xvfb.Dockerfile b/scripts/docker/ubuntu24.04-xvfb.Dockerfile index 0ce7d46a8..47c1545d9 100644 --- a/scripts/docker/ubuntu24.04-xvfb.Dockerfile +++ b/scripts/docker/ubuntu24.04-xvfb.Dockerfile @@ -7,7 +7,7 @@ RUN if [ -z "$NODE_JS_VERSION" ]; then echo "Error: NODE_JS_VERSION is not defin ENV NODE_JS_VERSION=${NODE_JS_VERSION} ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update -RUN apt-get -y -qq install git curl apt-transport-https ca-certificates apt-utils software-properties-common +RUN apt-get -y -qq install git curl apt-transport-https ca-certificates apt-utils software-properties-common jq # Install Node.js using nvm (reusing pattern from .evergreen/install-node.sh) ENV NVM_DIR="/root/.nvm" @@ -20,6 +20,9 @@ RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | b # Set PATH so node/npm are available in all contexts ENV PATH="$NVM_DIR/versions/node/v${NODE_JS_VERSION}/bin:$PATH" +# Install pnpm globally +RUN npm install -g pnpm + # Install vscode dependencies RUN apt-get -y -qq install libnss3 gnupg libxkbfile1 libsecret-1-0 libsecret-1-dev libgtk-3-0t64 libxss1 libgbm1 libasound2t64 xvfb build-essential pkg-config diff --git a/testing/test-vscode.sh b/testing/test-vscode.sh index d6b858d4b..edb1788fd 100755 --- a/testing/test-vscode.sh +++ b/testing/test-vscode.sh @@ -3,7 +3,7 @@ set -x set -e # just to make sure: we are in the mongosh root dir test -x packages && grep -q '"name": "mongosh"' package.json -npm -v +pnpm -v # we pick a target directory that is not affected by the mongosh node_modules directory mongosh_root_dir=$PWD test_root_dir=/tmp/mongosh-vscode-test @@ -12,15 +12,24 @@ rm -rf "$test_root_dir" && mkdir -p "$test_root_dir" cd "$test_root_dir" git clone --depth=10 https://github.com/mongodb-js/vscode.git cd vscode -npm install --force -rm -rf node_modules/@mongosh node_modules/mongodb node_modules/@mongodb-js/devtools-connect node_modules/@mongodb-js/devtools-proxy-support -(cd node_modules && \ - ln -s "$mongosh_root_dir/packages" @mongosh && \ - ln -s "$mongosh_root_dir/node_modules/mongodb" mongodb && \ - cd @mongodb-js && \ - ln -s "$mongosh_root_dir/node_modules/@mongodb-js/devtools-connect" devtools-connect && \ - ln -s "$mongosh_root_dir/node_modules/@mongodb-js/devtools-proxy-support" devtools-proxy-support) +# Build overrides object for all local mongosh packages +overrides="{" +for pkg_dir in "$mongosh_root_dir"/packages/*/; do + if [ -f "$pkg_dir/package.json" ]; then + pkg_name=$(jq -r '.name' "$pkg_dir/package.json") + overrides="$overrides\"$pkg_name\":\"file:$pkg_dir\"," + fi +done +# Add other required packages +overrides="$overrides\"mongodb\":\"file:$mongosh_root_dir/node_modules/mongodb\"," +overrides="$overrides\"@mongodb-js/devtools-connect\":\"file:$mongosh_root_dir/node_modules/@mongodb-js/devtools-connect\"," +overrides="$overrides\"@mongodb-js/devtools-proxy-support\":\"file:$mongosh_root_dir/node_modules/@mongodb-js/devtools-proxy-support\"" +overrides="$overrides}" + +# Add pnpm overrides to package.json +jq --argjson overrides "$overrides" '.pnpm.overrides = $overrides' package.json > package.json.tmp && mv package.json.tmp package.json +pnpm install # This test can require a lot of memory so we bump the maximum size. -NODE_OPTIONS='--max-old-space-size=4096 --no-experimental-strip-types' npm test +NODE_OPTIONS='--max-old-space-size=4096 --no-experimental-strip-types' pnpm test cd /tmp rm -rf "$test_root_dir"