From 2f746bd55ff9ff6210f2e74f00d234703f46b71d Mon Sep 17 00:00:00 2001 From: Gabe Pearhill Date: Fri, 6 Mar 2026 14:58:17 -0800 Subject: [PATCH 01/10] chore: replace pnpm with bun for performance test. --- .github/workflows/presubmit.yaml | 4 +--- .github/workflows/windows-presubmit.yaml | 4 +--- ci/run_single_test.sh | 16 +++++++++------- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/.github/workflows/presubmit.yaml b/.github/workflows/presubmit.yaml index 9c37deef21d..a908025cdc5 100644 --- a/.github/workflows/presubmit.yaml +++ b/.github/workflows/presubmit.yaml @@ -15,9 +15,7 @@ jobs: uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} - - uses: pnpm/action-setup@v4 - with: - version: ^10.0.0 + - uses: oven-sh/setup-bun@v2 - run: node --version - run: ci/run_conditional_tests.sh name: Run unit tests diff --git a/.github/workflows/windows-presubmit.yaml b/.github/workflows/windows-presubmit.yaml index 624c0f32a7c..24de01bf176 100644 --- a/.github/workflows/windows-presubmit.yaml +++ b/.github/workflows/windows-presubmit.yaml @@ -15,9 +15,7 @@ jobs: uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} - - uses: pnpm/action-setup@v4 - with: - version: ^10.0.0 + - uses: oven-sh/setup-bun@v2 - run: node --version - run: bash ci/run_conditional_tests.sh name: Run windows unit tests diff --git a/ci/run_single_test.sh b/ci/run_single_test.sh index 31ce0206111..72c3a714e3c 100755 --- a/ci/run_single_test.sh +++ b/ci/run_single_test.sh @@ -40,29 +40,31 @@ if [ ${BUILD_TYPE} != "presubmit" ]; then fi # Install dependencies -echo "pnpm install --ignore-scripts --engine-strict --prod; pnpm install" -pnpm install --ignore-scripts --engine-strict --prod; pnpm install +echo "bun install --ignore-scripts --prod; bun install" +bun install --ignore-scripts --prod; bun install retval=0 +# We use `npm run` here so that the test run respects the Node version +# configured for this test run. set +e case ${TEST_TYPE} in lint) - pnpm prelint - pnpm lint + npm run prelint + npm run lint retval=$? ;; samples) - pnpm samples-test + npm run samples-test retval=$? ;; system) - pnpm system-test + npm run system-test retval=$? ;; units) - pnpm test + npm run test retval=$? ;; *) From 65cd11f7b49860a1ca70b25296fb5ffafc1f85c0 Mon Sep 17 00:00:00 2001 From: Gabe Pearhill Date: Fri, 6 Mar 2026 15:49:38 -0800 Subject: [PATCH 02/10] chore: specific git bash as windows unit test shell for compatibility --- .github/workflows/windows-presubmit.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/windows-presubmit.yaml b/.github/workflows/windows-presubmit.yaml index 24de01bf176..7c8dc468bde 100644 --- a/.github/workflows/windows-presubmit.yaml +++ b/.github/workflows/windows-presubmit.yaml @@ -23,3 +23,4 @@ jobs: env: BUILD_TYPE: presubmit TEST_TYPE: units + SHELL: C:\Program Files\Git\bin\bash.exe From 36aa158826a2c7d1da3fe4656b1ef979e8739845 Mon Sep 17 00:00:00 2001 From: Gabe Pearhill Date: Fri, 6 Mar 2026 16:14:14 -0800 Subject: [PATCH 03/10] chore: add bun install filter to prevent root package inspection --- ci/run_single_test.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ci/run_single_test.sh b/ci/run_single_test.sh index 72c3a714e3c..3ba06ee8f94 100755 --- a/ci/run_single_test.sh +++ b/ci/run_single_test.sh @@ -40,8 +40,13 @@ if [ ${BUILD_TYPE} != "presubmit" ]; then fi # Install dependencies -echo "bun install --ignore-scripts --prod; bun install" -bun install --ignore-scripts --prod; bun install +# +# The filter is needed to prevent bun from installing all packages in the repo +# from the root. By default it prefers to analyze, install, and at the root +# so dependencies can be deduplicated. We will try that in a separate PR for +# comparison. +echo "bun install --ignore-scripts --prod --filter .; bun install --filter ." +bun install --ignore-scripts --prod --filter . ; bun install --filter . retval=0 From 87225ca84be526a5961dc19d35227d20249cedb0 Mon Sep 17 00:00:00 2001 From: Gabe Pearhill Date: Fri, 6 Mar 2026 16:33:36 -0800 Subject: [PATCH 04/10] chore: fix windows CI by pointing npm at git bash --- .github/workflows/windows-presubmit.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/windows-presubmit.yaml b/.github/workflows/windows-presubmit.yaml index 7c8dc468bde..4a75ff5c74f 100644 --- a/.github/workflows/windows-presubmit.yaml +++ b/.github/workflows/windows-presubmit.yaml @@ -24,3 +24,5 @@ jobs: BUILD_TYPE: presubmit TEST_TYPE: units SHELL: C:\Program Files\Git\bin\bash.exe + npm_config_script_shell: bash + From 0756fbcf7b7be5d2bcd6810d4bc921a8bb23780c Mon Sep 17 00:00:00 2001 From: Gabe Pearhill Date: Mon, 9 Mar 2026 13:54:35 -0700 Subject: [PATCH 05/10] chore: update script to use bun run to fix binary path --- ci/run_single_test.sh | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/ci/run_single_test.sh b/ci/run_single_test.sh index 3ba06ee8f94..76da42228ff 100755 --- a/ci/run_single_test.sh +++ b/ci/run_single_test.sh @@ -51,25 +51,23 @@ bun install --ignore-scripts --prod --filter . ; bun install --filter . retval=0 -# We use `npm run` here so that the test run respects the Node version -# configured for this test run. set +e case ${TEST_TYPE} in lint) - npm run prelint - npm run lint + bun run prelint + bun run lint retval=$? ;; samples) - npm run samples-test + bun run samples-test retval=$? ;; system) - npm run system-test + bun run system-test retval=$? ;; units) - npm run test + bun run test retval=$? ;; *) From 0c503e89571bc261e31f03b60fa1f5948a62cf9c Mon Sep 17 00:00:00 2001 From: Gabe Pearhill Date: Tue, 10 Mar 2026 09:21:22 -0700 Subject: [PATCH 06/10] chore: try setting path explictly to fix windows builds --- .github/workflows/windows-presubmit.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/windows-presubmit.yaml b/.github/workflows/windows-presubmit.yaml index 4a75ff5c74f..67455cb40e4 100644 --- a/.github/workflows/windows-presubmit.yaml +++ b/.github/workflows/windows-presubmit.yaml @@ -11,6 +11,13 @@ jobs: - uses: actions/checkout@v6 with: fetch-depth: 300 + - name: Update Windows path to use Linux/MacOS compatible binaries from Git Bash + run: echo "C:\Program Files\Git\usr\bin" >> $GITHUB_PATH + shell: bash + - name: Check which cp is being used + run: where cp + run: echo %PATH% + shell: cmd - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v6 with: From 5fd542a704e89961d5344e51f3417776c0f614a5 Mon Sep 17 00:00:00 2001 From: Gabe Pearhill Date: Tue, 10 Mar 2026 10:57:21 -0700 Subject: [PATCH 07/10] chore: update scripts to use pnpm runner to test script compatibility --- ci/run_single_test.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ci/run_single_test.sh b/ci/run_single_test.sh index 76da42228ff..6e6435c90c1 100755 --- a/ci/run_single_test.sh +++ b/ci/run_single_test.sh @@ -54,20 +54,20 @@ retval=0 set +e case ${TEST_TYPE} in lint) - bun run prelint - bun run lint + pnpm prelint + pnpm lint retval=$? ;; samples) - bun run samples-test + pnpm samples-test retval=$? ;; system) - bun run system-test + pnpm system-test retval=$? ;; units) - bun run test + pnpm test retval=$? ;; *) From f2c67542d81208709b49f544f5b9056f8068ec2d Mon Sep 17 00:00:00 2001 From: Gabe Pearhill Date: Tue, 10 Mar 2026 11:15:34 -0700 Subject: [PATCH 08/10] chore: restore testall behavior for benchmarking --- ci/run_conditional_tests.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ci/run_conditional_tests.sh b/ci/run_conditional_tests.sh index a7902ed6ca9..3e962d0e476 100755 --- a/ci/run_conditional_tests.sh +++ b/ci/run_conditional_tests.sh @@ -61,11 +61,11 @@ set -e if [[ "${changed}" -eq 0 ]]; then echo "no change detected in ci" else - echo "skipping trigger of tests for now: tracking in #7540" - # echo "change detected in ci, we should test everything" - # echo "result of git diff ${GIT_DIFF_ARG} ci:" - # git diff ${GIT_DIFF_ARG} ci - # GIT_DIFF_ARG="" + #echo "skipping trigger of tests for now: tracking in #7540" + echo "change detected in ci, we should test everything" + echo "result of git diff ${GIT_DIFF_ARG} ci:" + git diff ${GIT_DIFF_ARG} ci + GIT_DIFF_ARG="" fi # Now we have a fixed list, but we can change it to autodetect if From fd19b3c6bb805f8af2e006f949355d3760eacb8b Mon Sep 17 00:00:00 2001 From: Gabe Pearhill Date: Tue, 10 Mar 2026 11:28:44 -0700 Subject: [PATCH 09/10] chore: test with pnpm added back to the presubmit yamls --- .github/workflows/presubmit.yaml | 3 +++ .github/workflows/windows-presubmit.yaml | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/presubmit.yaml b/.github/workflows/presubmit.yaml index a908025cdc5..2cfb65ad4b2 100644 --- a/.github/workflows/presubmit.yaml +++ b/.github/workflows/presubmit.yaml @@ -15,6 +15,9 @@ jobs: uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} + - uses: pnpm/action-setup@v4 + with: + version: ^10.0.0 - uses: oven-sh/setup-bun@v2 - run: node --version - run: ci/run_conditional_tests.sh diff --git a/.github/workflows/windows-presubmit.yaml b/.github/workflows/windows-presubmit.yaml index 67455cb40e4..8795e6362d3 100644 --- a/.github/workflows/windows-presubmit.yaml +++ b/.github/workflows/windows-presubmit.yaml @@ -22,6 +22,9 @@ jobs: uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} + - uses: pnpm/action-setup@v4 + with: + version: ^10.0.0 - uses: oven-sh/setup-bun@v2 - run: node --version - run: bash ci/run_conditional_tests.sh From 49177e7447dbf853a6304aaaf0ff1de97e01dde0 Mon Sep 17 00:00:00 2001 From: Gabe Pearhill Date: Tue, 10 Mar 2026 13:34:07 -0700 Subject: [PATCH 10/10] chore: try using npm directly rather than pnpm --- ci/run_single_test.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ci/run_single_test.sh b/ci/run_single_test.sh index 6e6435c90c1..d1ab68a38f7 100755 --- a/ci/run_single_test.sh +++ b/ci/run_single_test.sh @@ -54,20 +54,20 @@ retval=0 set +e case ${TEST_TYPE} in lint) - pnpm prelint - pnpm lint + npm run prelint + npm run lint retval=$? ;; samples) - pnpm samples-test + npm run samples-test retval=$? ;; system) - pnpm system-test + npm run system-test retval=$? ;; units) - pnpm test + npm run test retval=$? ;; *)