diff --git a/.github/actions/pytest-plugins-environment/action.yml b/.github/actions/pytest-plugins-environment/action.yml new file mode 100644 index 0000000..efa3993 --- /dev/null +++ b/.github/actions/pytest-plugins-environment/action.yml @@ -0,0 +1,59 @@ +name: "pytest-plugin-environment" +description: "This action sets up an environment for testing and building pytest plugins" + + +inputs: + + python-version: + description: 'Python version to use' + required: true + default: 3.9 + + poetry-version: + description: 'Poetry version to use' + required: true + default: 1.2.2 + + pipx-version: + description: 'Pipx version to use' + required: true + default: 1.0.0 + + ruff-version: + description: 'Ruff version to use' + required: true + default: 0.2.1 + + just-version: + description: 'Just version to use' + required: true + default: 1.16.0 + +runs: + + using: "composite" + steps: + + - name: Setup Python (${{ inputs.python-version}}) + uses: actions/setup-python@v5 + with: + python-version: ${{ inputs.python-version }} + + - name: Setup Poetry (${{ inputs.poetry-version }}) + uses: abatilo/actions-poetry@v2 + with: + poetry-version: ${{ inputs.poetry-version }} + + - name: Setup pipx (${{ inputs.pipx-version }}) + run: pip install "pipx==${{ inputs.pipx-version }}" + shell: bash + + - name: Setup ruff (${{ inputs.ruff-version }}) + run: pipx install "ruff==${{ inputs.ruff-version }}" + shell: bash + + - name: Setup just (${{ inputs.just-version }}) + uses: extractions/setup-just@v1 + with: + just-version: ${{ inputs.just-version }} + diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml new file mode 100644 index 0000000..46fb6a9 --- /dev/null +++ b/.github/workflows/checks.yml @@ -0,0 +1,26 @@ +name: Checks + +on: + workflow_call: + secrets: + ALTERNATIVE_GITHUB_TOKEN: + required: false + +jobs: + + Checks: + name: Tests + runs-on: ubuntu-latest + + steps: + - name: SCM Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Development Environment + uses: ./.github/actions/pytest-plugins-environment + + - name: Run Tests of all plugins + run: just test + diff --git a/.github/workflows/ci-main.yml b/.github/workflows/ci-main.yml new file mode 100644 index 0000000..4ac7d0e --- /dev/null +++ b/.github/workflows/ci-main.yml @@ -0,0 +1,15 @@ +name: Continues Integration (Master) + +on: + workflow_dispatch: + push: + branches: + - mainj + schedule: + # “At 00:00 on every 7th day-of-month from 1 through 31.” (https://crontab.guru) + - cron: "0 0 1/7 * *" + +jobs: + + Checks: + uses: ./.github/workflows/checks.yml diff --git a/.github/workflows/ci-pr.yml b/.github/workflows/ci-pr.yml new file mode 100644 index 0000000..450daad --- /dev/null +++ b/.github/workflows/ci-pr.yml @@ -0,0 +1,9 @@ +name: Continues Integration (PR) + +on: + pull_request: + +jobs: + + Checks: + uses: ./.github/workflows/checks.yml diff --git a/] b/] new file mode 100644 index 0000000..53e9d42 --- /dev/null +++ b/] @@ -0,0 +1,21 @@ +PROJECTS := "pytest-itde" + +# Default target +default: + just --list + +# Reformat all python files in the respository +fmt: + ruff format + ruff --fix + +# Run tests for one or multiple projects within this respository +test +projects=PROJECTS: + #!/usr/bin/env bash + echo "running test target" + for p in {{projects}}; do + echo "for loop: ${p}" + poetry --version + poetry -C ${p}/ install + poetry -C ${p}/ run pytest ${p}/test + done diff --git a/justfile b/justfile index 5fb9cde..43d846e 100644 --- a/justfile +++ b/justfile @@ -12,7 +12,11 @@ fmt: # Run tests for one or multiple projects within this respository test +projects=PROJECTS: #!/usr/bin/env bash + set -x + echo "running test target" for p in {{projects}}; do + echo "for loop: ${p}" + poetry --version poetry -C ${p}/ install poetry -C ${p}/ run pytest ${p}/test done