From d1e6a0858e741d073a3dd8ccdf03db4e4b18be57 Mon Sep 17 00:00:00 2001 From: Anthony Shew Date: Sun, 9 Nov 2025 14:50:14 -0700 Subject: [PATCH 1/6] ci: Matrix for integration tests --- .github/workflows/turborepo-test.yml | 15 ++++++++++++--- turborepo-tests/integration/package.json | 18 +++++++++++++++++- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/.github/workflows/turborepo-test.yml b/.github/workflows/turborepo-test.yml index 1f64de74621e4..d5c42a3b640de 100644 --- a/.github/workflows/turborepo-test.yml +++ b/.github/workflows/turborepo-test.yml @@ -105,7 +105,7 @@ jobs: fi integration: - name: Turborepo Integration + name: Turborepo Integration (${{ matrix.test-group }} on ${{ matrix.os.runner }}) needs: - find-changes runs-on: ${{ matrix.os.runner }} @@ -117,6 +117,15 @@ jobs: - runner: ubuntu-latest - runner: macos-latest - runner: windows-latest + test-group: + - basic + - run + - prune + - caching + - logging + - env-vars + - configs + - advanced steps: # On Windows, set autocrlf to input so that when the repo is cloned down # the fixtures retain their line endings and don't get updated to CRLF. @@ -180,13 +189,13 @@ jobs: with: tool: nextest - - name: Integration Tests + - name: Integration Tests (${{ matrix.test-group }}) timeout-minutes: 45 run: | if [ -z "${RUSTC_WRAPPER}" ]; then unset RUSTC_WRAPPER fi - turbo run test --filter=turborepo-tests-integration --color --env-mode=strict --token=${{ secrets.TURBO_TOKEN }} --team=${{ vars.TURBO_TEAM }} + turbo run test:${{ matrix.test-group }} --filter=turborepo-tests-integration --color --env-mode=strict --token=${{ secrets.TURBO_TOKEN }} --team=${{ vars.TURBO_TEAM }} shell: bash env: SCCACHE_BUCKET: turborepo-sccache diff --git a/turborepo-tests/integration/package.json b/turborepo-tests/integration/package.json index 0ab6e4fad6cb6..1979d0ff5f500 100644 --- a/turborepo-tests/integration/package.json +++ b/turborepo-tests/integration/package.json @@ -5,7 +5,23 @@ "clean": "rm -rf tests/**/*.t.err", "test:interactive": "PRYSK_INTERACTIVE=true prysk tests", "test:parallel": ".cram_env/bin/pytest -n auto tests --prysk-shell=`which bash`", - "pretest:parallel": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist" + "pretest:parallel": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", + "test:basic": ".cram_env/bin/pytest -n auto tests/*.t tests/clone tests/daemon tests/edit-turbo-json tests/jsonc tests/query --prysk-shell=`which bash`", + "test:run": ".cram_env/bin/pytest -n auto tests/run --prysk-shell=`which bash`", + "test:prune": ".cram_env/bin/pytest -n auto tests/prune --prysk-shell=`which bash`", + "test:caching": ".cram_env/bin/pytest -n auto tests/run-caching tests/lockfile-aware-caching --prysk-shell=`which bash`", + "test:logging": ".cram_env/bin/pytest -n auto tests/run-logging tests/run-summary --prysk-shell=`which bash`", + "test:env-vars": ".cram_env/bin/pytest -n auto tests/strict-env-vars tests/dry-json --prysk-shell=`which bash`", + "test:configs": ".cram_env/bin/pytest -n auto tests/workspace-configs tests/task-dependencies --prysk-shell=`which bash`", + "test:advanced": ".cram_env/bin/pytest -n auto tests/persistent-dependencies tests/find-turbo tests/inference --prysk-shell=`which bash`", + "pretest:basic": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", + "pretest:run": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", + "pretest:prune": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", + "pretest:caching": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", + "pretest:logging": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", + "pretest:env-vars": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", + "pretest:configs": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", + "pretest:advanced": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist" }, "dependencies": { "turborepo-tests-helpers": "workspace:*", From 052e2bf09054dd64be758e7470836c6629c70c03 Mon Sep 17 00:00:00 2001 From: Anthony Shew Date: Sun, 9 Nov 2025 15:14:58 -0700 Subject: [PATCH 2/6] WIP b0580 --- turbo.json | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/turbo.json b/turbo.json index 254518fbe2025..74744585211c7 100644 --- a/turbo.json +++ b/turbo.json @@ -34,6 +34,54 @@ "dependsOn": ["^build"] }, + "test:basic": { + "outputs": ["coverage/**/*"], + "env": ["NODE_VERSION"], + "dependsOn": ["^build"] + }, + + "test:run": { + "outputs": ["coverage/**/*"], + "env": ["NODE_VERSION"], + "dependsOn": ["^build"] + }, + + "test:prune": { + "outputs": ["coverage/**/*"], + "env": ["NODE_VERSION"], + "dependsOn": ["^build"] + }, + + "test:caching": { + "outputs": ["coverage/**/*"], + "env": ["NODE_VERSION"], + "dependsOn": ["^build"] + }, + + "test:logging": { + "outputs": ["coverage/**/*"], + "env": ["NODE_VERSION"], + "dependsOn": ["^build"] + }, + + "test:env-vars": { + "outputs": ["coverage/**/*"], + "env": ["NODE_VERSION"], + "dependsOn": ["^build"] + }, + + "test:configs": { + "outputs": ["coverage/**/*"], + "env": ["NODE_VERSION"], + "dependsOn": ["^build"] + }, + + "test:advanced": { + "outputs": ["coverage/**/*"], + "env": ["NODE_VERSION"], + "dependsOn": ["^build"] + }, + // run prettier check before eslint "lint": { "dependsOn": ["lint:prettier", "^build"] From 494d35e13a376b12735f15ea83b07fd53eb8867e Mon Sep 17 00:00:00 2001 From: Anthony Shew Date: Sun, 9 Nov 2025 15:19:40 -0700 Subject: [PATCH 3/6] WIP 3a226 --- .github/workflows/turborepo-test.yml | 13 +++++++++++-- turborepo-tests/integration/package.json | 10 +--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/.github/workflows/turborepo-test.yml b/.github/workflows/turborepo-test.yml index d5c42a3b640de..5333e3ad1e1e0 100644 --- a/.github/workflows/turborepo-test.yml +++ b/.github/workflows/turborepo-test.yml @@ -162,8 +162,8 @@ jobs: id: cache-prysk uses: actions/cache@v4 with: - path: cli/.cram_env - key: prysk-venv-${{ matrix.os.runner }} + path: turborepo-tests/integration/.cram_env + key: prysk-venv-${{ matrix.os.runner }}-v2 - name: Run sccache-cache uses: mozilla-actions/sccache-action@v0.0.6 @@ -189,6 +189,15 @@ jobs: with: tool: nextest + - name: Setup Python virtual environment for pytest + if: steps.cache-prysk.outputs.cache-hit != 'true' + run: | + cd turborepo-tests/integration + python3 -m venv .cram_env + .cram_env/bin/pip3 install --upgrade pip + .cram_env/bin/pip3 install --quiet pytest "prysk[pytest-plugin]" pytest-xdist + shell: bash + - name: Integration Tests (${{ matrix.test-group }}) timeout-minutes: 45 run: | diff --git a/turborepo-tests/integration/package.json b/turborepo-tests/integration/package.json index 1979d0ff5f500..0980c8501533c 100644 --- a/turborepo-tests/integration/package.json +++ b/turborepo-tests/integration/package.json @@ -13,15 +13,7 @@ "test:logging": ".cram_env/bin/pytest -n auto tests/run-logging tests/run-summary --prysk-shell=`which bash`", "test:env-vars": ".cram_env/bin/pytest -n auto tests/strict-env-vars tests/dry-json --prysk-shell=`which bash`", "test:configs": ".cram_env/bin/pytest -n auto tests/workspace-configs tests/task-dependencies --prysk-shell=`which bash`", - "test:advanced": ".cram_env/bin/pytest -n auto tests/persistent-dependencies tests/find-turbo tests/inference --prysk-shell=`which bash`", - "pretest:basic": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", - "pretest:run": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", - "pretest:prune": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", - "pretest:caching": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", - "pretest:logging": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", - "pretest:env-vars": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", - "pretest:configs": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", - "pretest:advanced": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist" + "test:advanced": ".cram_env/bin/pytest -n auto tests/persistent-dependencies tests/find-turbo tests/inference --prysk-shell=`which bash`" }, "dependencies": { "turborepo-tests-helpers": "workspace:*", From 151a5dff3d70644c449612dd2487a9c2b8738b63 Mon Sep 17 00:00:00 2001 From: Anthony Shew Date: Sun, 9 Nov 2025 19:35:48 -0700 Subject: [PATCH 4/6] make sure cli gets built --- turbo.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/turbo.json b/turbo.json index 74744585211c7..d0226cc25804b 100644 --- a/turbo.json +++ b/turbo.json @@ -37,49 +37,49 @@ "test:basic": { "outputs": ["coverage/**/*"], "env": ["NODE_VERSION"], - "dependsOn": ["^build"] + "dependsOn": ["^build", "cli#build"] }, "test:run": { "outputs": ["coverage/**/*"], "env": ["NODE_VERSION"], - "dependsOn": ["^build"] + "dependsOn": ["^build", "cli#build"] }, "test:prune": { "outputs": ["coverage/**/*"], "env": ["NODE_VERSION"], - "dependsOn": ["^build"] + "dependsOn": ["^build", "cli#build"] }, "test:caching": { "outputs": ["coverage/**/*"], "env": ["NODE_VERSION"], - "dependsOn": ["^build"] + "dependsOn": ["^build", "cli#build"] }, "test:logging": { "outputs": ["coverage/**/*"], "env": ["NODE_VERSION"], - "dependsOn": ["^build"] + "dependsOn": ["^build", "cli#build"] }, "test:env-vars": { "outputs": ["coverage/**/*"], "env": ["NODE_VERSION"], - "dependsOn": ["^build"] + "dependsOn": ["^build", "cli#build"] }, "test:configs": { "outputs": ["coverage/**/*"], "env": ["NODE_VERSION"], - "dependsOn": ["^build"] + "dependsOn": ["^build", "cli#build"] }, "test:advanced": { "outputs": ["coverage/**/*"], "env": ["NODE_VERSION"], - "dependsOn": ["^build"] + "dependsOn": ["^build", "cli#build"] }, // run prettier check before eslint From 73491fdbf64e450a84a82218e54d3f9b9cca3672 Mon Sep 17 00:00:00 2001 From: Anthony Shew Date: Sun, 9 Nov 2025 19:43:21 -0700 Subject: [PATCH 5/6] WIP 3145b --- turborepo-tests/integration/package.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/turborepo-tests/integration/package.json b/turborepo-tests/integration/package.json index 0980c8501533c..8dde5f71c17c7 100644 --- a/turborepo-tests/integration/package.json +++ b/turborepo-tests/integration/package.json @@ -6,14 +6,14 @@ "test:interactive": "PRYSK_INTERACTIVE=true prysk tests", "test:parallel": ".cram_env/bin/pytest -n auto tests --prysk-shell=`which bash`", "pretest:parallel": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", - "test:basic": ".cram_env/bin/pytest -n auto tests/*.t tests/clone tests/daemon tests/edit-turbo-json tests/jsonc tests/query --prysk-shell=`which bash`", - "test:run": ".cram_env/bin/pytest -n auto tests/run --prysk-shell=`which bash`", - "test:prune": ".cram_env/bin/pytest -n auto tests/prune --prysk-shell=`which bash`", - "test:caching": ".cram_env/bin/pytest -n auto tests/run-caching tests/lockfile-aware-caching --prysk-shell=`which bash`", - "test:logging": ".cram_env/bin/pytest -n auto tests/run-logging tests/run-summary --prysk-shell=`which bash`", - "test:env-vars": ".cram_env/bin/pytest -n auto tests/strict-env-vars tests/dry-json --prysk-shell=`which bash`", - "test:configs": ".cram_env/bin/pytest -n auto tests/workspace-configs tests/task-dependencies --prysk-shell=`which bash`", - "test:advanced": ".cram_env/bin/pytest -n auto tests/persistent-dependencies tests/find-turbo tests/inference --prysk-shell=`which bash`" + "test:basic": ".cram_env/bin/pytest -n 4 tests/*.t tests/clone tests/daemon tests/edit-turbo-json tests/jsonc tests/query --prysk-shell=`which bash`", + "test:run": ".cram_env/bin/pytest -n 4 tests/run --prysk-shell=`which bash`", + "test:prune": ".cram_env/bin/pytest -n 4 tests/prune --prysk-shell=`which bash`", + "test:caching": ".cram_env/bin/pytest -n 4 tests/run-caching tests/lockfile-aware-caching --prysk-shell=`which bash`", + "test:logging": ".cram_env/bin/pytest -n 4 tests/run-logging tests/run-summary --prysk-shell=`which bash`", + "test:env-vars": ".cram_env/bin/pytest -n 4 tests/strict-env-vars tests/dry-json --prysk-shell=`which bash`", + "test:configs": ".cram_env/bin/pytest -n 4 tests/workspace-configs tests/task-dependencies --prysk-shell=`which bash`", + "test:advanced": ".cram_env/bin/pytest -n 4 tests/persistent-dependencies tests/find-turbo tests/inference --prysk-shell=`which bash`" }, "dependencies": { "turborepo-tests-helpers": "workspace:*", From 308e61ebf119cd371fe096d3c00ddc54067258f3 Mon Sep 17 00:00:00 2001 From: Anthony Shew Date: Sun, 9 Nov 2025 21:13:10 -0700 Subject: [PATCH 6/6] WIP 59212 --- turborepo-tests/integration/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/turborepo-tests/integration/package.json b/turborepo-tests/integration/package.json index 8dde5f71c17c7..07ab490b36f2e 100644 --- a/turborepo-tests/integration/package.json +++ b/turborepo-tests/integration/package.json @@ -6,14 +6,14 @@ "test:interactive": "PRYSK_INTERACTIVE=true prysk tests", "test:parallel": ".cram_env/bin/pytest -n auto tests --prysk-shell=`which bash`", "pretest:parallel": ".cram_env/bin/pip3 install --quiet pytest \"prysk[pytest-plugin]\" pytest-xdist", - "test:basic": ".cram_env/bin/pytest -n 4 tests/*.t tests/clone tests/daemon tests/edit-turbo-json tests/jsonc tests/query --prysk-shell=`which bash`", + "test:basic": ".cram_env/bin/pytest -n 4 tests/*.t tests/daemon tests/edit-turbo-json tests/jsonc tests/query --prysk-shell=`which bash` && .cram_env/bin/pytest tests/clone --prysk-shell=`which bash`", "test:run": ".cram_env/bin/pytest -n 4 tests/run --prysk-shell=`which bash`", "test:prune": ".cram_env/bin/pytest -n 4 tests/prune --prysk-shell=`which bash`", "test:caching": ".cram_env/bin/pytest -n 4 tests/run-caching tests/lockfile-aware-caching --prysk-shell=`which bash`", "test:logging": ".cram_env/bin/pytest -n 4 tests/run-logging tests/run-summary --prysk-shell=`which bash`", "test:env-vars": ".cram_env/bin/pytest -n 4 tests/strict-env-vars tests/dry-json --prysk-shell=`which bash`", "test:configs": ".cram_env/bin/pytest -n 4 tests/workspace-configs tests/task-dependencies --prysk-shell=`which bash`", - "test:advanced": ".cram_env/bin/pytest -n 4 tests/persistent-dependencies tests/find-turbo tests/inference --prysk-shell=`which bash`" + "test:advanced": ".cram_env/bin/pytest -n 4 tests/persistent-dependencies tests/inference --prysk-shell=`which bash` && .cram_env/bin/pytest tests/find-turbo --prysk-shell=`which bash`" }, "dependencies": { "turborepo-tests-helpers": "workspace:*",