diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index b564103c08..874332d463 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -1,47 +1,77 @@ -name: tests +name: Pytest, Ruff on: pull_request: - branches: ["main", "major-release"] + paths: + - .github/workflows/lint-and-test.yml + - requirements*.txt + - "**.py" + - setup.py push: - branches: ["main", "major-release"] + paths: + - .github/workflows/lint-and-test.yml + - requirements*.txt + - "**.py" + - setup.py + workflow_dispatch: env: TESTING: 1 jobs: - build: + test_and_lint: strategy: + fail-fast: false matrix: - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] - limited-dependencies: ['','TRUE'] - os: [ubuntu-latest] # add in windows-latest to add windows testing + python-version: + - "3.12" + - "3.11" + - "3.10" + - "3.9" + - "3.8" + limited-dependencies: + - "" + - "TRUE" + os: + - ubuntu-latest + include: + - os: macos-latest + python-version: "3.12" + - os: macos-latest + python-version: "3.12" + limited-dependencies: true + - os: macos-latest + python-version: "3.8" + - os: macos-latest + python-version: "3.8" + limited-dependencies: true runs-on: ${{ matrix.os }} steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: pip - - uses: actions/checkout@v4 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - cache: "pip" - - - name: Install dependencies - env: - PARSONS_LIMITED_DEPENDENCIES: ${{ matrix.limited-dependencies }} - run: | - python -m pip install -U pip - python -m pip install .[all] - python -m pip install -r requirements-dev.txt - - - name: Run tests - run: pytest -rf test/ - - - name: Check linting - run: | - # E203 and W503 don't work well with black - flake8 parsons/ test/ useful_resources/ - black --diff parsons/ test/ useful_resources/ + - name: Install uv + run: | + pip install -U uv + + - name: Install dependencies + env: + PARSONS_LIMITED_DEPENDENCIES: ${{ matrix.limited-dependencies }} + run: | + uv pip install --system -U pip + uv pip install --system -e .[all] + uv pip install --system -r requirements-dev.txt + + - name: Run tests + run: pytest -rf test/ + + - name: Check linting + run: | + ruff check parsons/ test/ useful_resources/ + ruff format --diff parsons/ test/ useful_resources/