feat: add WORKON_HOME and XDG_DATA_HOME support for pipenv (Fixes #11… #2004
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: PR/CI Check | |
| on: | |
| pull_request: | |
| push: | |
| branches-ignore: | |
| - main | |
| - release* | |
| env: | |
| NODE_VERSION: '22.21.1' | |
| jobs: | |
| build-vsix: | |
| name: Create VSIX | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Build VSIX | |
| uses: ./.github/actions/build-vsix | |
| with: | |
| node_version: ${{ env.NODE_VERSION }} | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install Dependencies | |
| run: npm ci | |
| - name: Run Linter | |
| run: npm run lint | |
| ts-unit-tests: | |
| name: TypeScript Unit Tests | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install Dependencies | |
| run: npm ci | |
| - name: Compile Tests | |
| run: npm run pretest | |
| - name: Localization | |
| run: npx @vscode/l10n-dev@latest export ./src | |
| - name: Run Tests | |
| run: npm run unittest | |
| smoke-tests: | |
| name: Smoke Tests | |
| runs-on: ${{ matrix.os }} | |
| needs: [build-vsix] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| python-version: ['3.9', '3.12', '3.14'] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Checkout Python Environment Tools | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: 'microsoft/python-environment-tools' | |
| path: 'python-env-tools-src' | |
| sparse-checkout: | | |
| crates | |
| Cargo.toml | |
| Cargo.lock | |
| sparse-checkout-cone-mode: false | |
| - name: Install Rust Toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust build | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| python-env-tools-src/target | |
| key: ${{ runner.os }}-cargo-pet-${{ hashFiles('python-env-tools-src/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-pet- | |
| - name: Build Python Environment Tools | |
| run: cargo build --release --package pet | |
| working-directory: python-env-tools-src | |
| - name: Copy pet binary (Unix) | |
| if: runner.os != 'Windows' | |
| run: | | |
| mkdir -p python-env-tools/bin | |
| cp python-env-tools-src/target/release/pet python-env-tools/bin/ | |
| chmod +x python-env-tools/bin/pet | |
| - name: Copy pet binary (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| mkdir -p python-env-tools/bin | |
| cp python-env-tools-src/target/release/pet.exe python-env-tools/bin/ | |
| shell: bash | |
| - name: Install Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Dependencies | |
| run: npm ci | |
| - name: Compile Extension | |
| run: npm run compile | |
| - name: Compile Tests | |
| run: npm run compile-tests | |
| - name: Configure Test Settings | |
| run: | | |
| mkdir -p .vscode-test/user-data/User | |
| echo '{"python.useEnvironmentsExtension": true}' > .vscode-test/user-data/User/settings.json | |
| shell: bash | |
| - name: Run Smoke Tests (Linux) | |
| if: runner.os == 'Linux' | |
| uses: GabrielBB/xvfb-action@v1 | |
| with: | |
| run: npm run smoke-test | |
| - name: Run Smoke Tests (non-Linux) | |
| if: runner.os != 'Linux' | |
| run: npm run smoke-test | |
| e2e-tests: | |
| name: E2E Tests | |
| runs-on: ${{ matrix.os }} | |
| needs: [smoke-tests] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| python-version: ['3.10', '3.12', '3.14'] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Checkout Python Environment Tools | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: 'microsoft/python-environment-tools' | |
| path: 'python-env-tools-src' | |
| sparse-checkout: | | |
| crates | |
| Cargo.toml | |
| Cargo.lock | |
| sparse-checkout-cone-mode: false | |
| - name: Install Rust Toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust build | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| python-env-tools-src/target | |
| key: ${{ runner.os }}-cargo-pet-${{ hashFiles('python-env-tools-src/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-pet- | |
| - name: Build Python Environment Tools | |
| run: cargo build --release --package pet | |
| working-directory: python-env-tools-src | |
| - name: Copy pet binary (Unix) | |
| if: runner.os != 'Windows' | |
| run: | | |
| mkdir -p python-env-tools/bin | |
| cp python-env-tools-src/target/release/pet python-env-tools/bin/ | |
| chmod +x python-env-tools/bin/pet | |
| - name: Copy pet binary (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| mkdir -p python-env-tools/bin | |
| cp python-env-tools-src/target/release/pet.exe python-env-tools/bin/ | |
| shell: bash | |
| - name: Install Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Dependencies | |
| run: npm ci | |
| - name: Compile Extension | |
| run: npm run compile | |
| - name: Compile Tests | |
| run: npm run compile-tests | |
| - name: Configure Test Settings | |
| run: | | |
| mkdir -p .vscode-test/user-data/User | |
| echo '{"python.useEnvironmentsExtension": true}' > .vscode-test/user-data/User/settings.json | |
| shell: bash | |
| - name: Run E2E Tests (Linux) | |
| if: runner.os == 'Linux' | |
| uses: GabrielBB/xvfb-action@v1 | |
| with: | |
| run: npm run e2e-test | |
| - name: Run E2E Tests (non-Linux) | |
| if: runner.os != 'Linux' | |
| run: npm run e2e-test | |
| integration-tests: | |
| name: Integration Tests | |
| runs-on: ${{ matrix.os }} | |
| needs: [smoke-tests] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| python-version: ['3.10', '3.12', '3.14'] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Checkout Python Environment Tools | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: 'microsoft/python-environment-tools' | |
| path: 'python-env-tools-src' | |
| sparse-checkout: | | |
| crates | |
| Cargo.toml | |
| Cargo.lock | |
| sparse-checkout-cone-mode: false | |
| - name: Install Rust Toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust build | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| python-env-tools-src/target | |
| key: ${{ runner.os }}-cargo-pet-${{ hashFiles('python-env-tools-src/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-pet- | |
| - name: Build Python Environment Tools | |
| run: cargo build --release --package pet | |
| working-directory: python-env-tools-src | |
| - name: Copy pet binary (Unix) | |
| if: runner.os != 'Windows' | |
| run: | | |
| mkdir -p python-env-tools/bin | |
| cp python-env-tools-src/target/release/pet python-env-tools/bin/ | |
| chmod +x python-env-tools/bin/pet | |
| - name: Copy pet binary (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| mkdir -p python-env-tools/bin | |
| cp python-env-tools-src/target/release/pet.exe python-env-tools/bin/ | |
| shell: bash | |
| - name: Install Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Dependencies | |
| run: npm ci | |
| - name: Compile Extension | |
| run: npm run compile | |
| - name: Compile Tests | |
| run: npm run compile-tests | |
| - name: Configure Test Settings | |
| run: | | |
| mkdir -p .vscode-test/user-data/User | |
| echo '{"python.useEnvironmentsExtension": true}' > .vscode-test/user-data/User/settings.json | |
| shell: bash | |
| - name: Run Integration Tests (Linux) | |
| if: runner.os == 'Linux' | |
| uses: GabrielBB/xvfb-action@v1 | |
| with: | |
| run: npm run integration-test | |
| - name: Run Integration Tests (non-Linux) | |
| if: runner.os != 'Linux' | |
| run: npm run integration-test | |
| integration-tests-multiroot: | |
| name: Integration Tests (Multi-Root) | |
| runs-on: ${{ matrix.os }} | |
| needs: [smoke-tests] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| python-version: ['3.10', '3.12', '3.14'] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Dependencies | |
| run: npm ci | |
| - name: Compile Extension | |
| run: npm run compile | |
| - name: Compile Tests | |
| run: npm run compile-tests | |
| - name: Configure Test Settings | |
| run: | | |
| mkdir -p .vscode-test/user-data/User | |
| echo '{"python.useEnvironmentsExtension": true}' > .vscode-test/user-data/User/settings.json | |
| shell: bash | |
| - name: Run Integration Tests Multi-Root (Linux) | |
| if: runner.os == 'Linux' | |
| uses: GabrielBB/xvfb-action@v1 | |
| with: | |
| run: npm run integration-test-multiroot | |
| - name: Run Integration Tests Multi-Root (non-Linux) | |
| if: runner.os != 'Linux' | |
| run: npm run integration-test-multiroot |