name: Testing on: push: branches: [ develop, release ] paths: - 'jrnl/**' - 'features/**' - 'tests/**' - 'poetry.lock' - 'pyproject.toml' - '.github/workflows/testing.yaml' pull_request: branches: [ develop ] paths: - 'jrnl/**' - 'features/**' - 'tests/**' - 'poetry.lock' - 'pyproject.toml' - '.github/workflows/testing.yaml' defaults: run: shell: bash # needed to prevent Windows from using PowerShell jobs: test: if: > ! contains(github.event.head_commit.message, '[ci skip]') runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.python-version == '3.10-dev' }} strategy: fail-fast: false matrix: python-version: [ 3.7, 3.8, 3.9, 3.10-dev ] os: [ ubuntu-latest, macos-latest, windows-latest ] steps: - run: git config --global core.autocrlf false - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: poetry cache # Change CACHE_STRING secret to bust the cache. Useful with minor Python version changes. uses: actions/cache@v2 with: path: .venv key: ${{ runner.os }}-${{ hashFiles('poetry.lock') }}-${{ matrix.python-version }}-${{ secrets.CACHE_STRING }} - name: Install dependencies if: ${{ matrix.python-version != '3.10-dev' }} run: | echo '::group::poetry' pip --disable-pip-version-check install poetry poetry config --local virtualenvs.in-project true echo '::endgroup::' echo '::group::Other dependencies' poetry install --remove-untracked echo '::endgroup::' echo 'DEPS_INSTALLED=true' >> $GITHUB_ENV - name: Install dependencies (Prerelease) if: ${{ matrix.python-version == '3.10-dev' }} run: | echo '::group::poetry' pip --disable-pip-version-check install poetry==1.2.0a2 poetry config --local virtualenvs.in-project true echo '::endgroup::' echo '::group::Other dependencies' poetry install --remove-untracked --no-dev --extras testing echo '::endgroup::' echo 'DEPS_INSTALLED=true' >> $GITHUB_ENV - name: Code formatting (Black) if: ${{ matrix.python-version != '3.10-dev' && env.DEPS_INSTALLED == 'true' }} run: | poetry run black --version poetry run black --check --diff . - name: Code Style (flake8) if: ${{ matrix.python-version != '3.10-dev' && env.DEPS_INSTALLED == 'true' }} run: | poetry run pflake8 --version poetry run pflake8 jrnl tests - name: Test with pytest if: ${{ env.DEPS_INSTALLED == 'true' }} run: poetry run pytest --junitxml=reports/pytest/results.xml