Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .github/actions/uv-setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Setup UV and Sync
description: 'Install uv and sync the dependencies'
inputs:
sync:
description: 'Whether to run `uv sync` after setting up.'
required: false
default: 'true'
type: boolean
dev:
description: 'Whether to use `--no-dev` with `uv sync`.'
required: false
default: 'true'
type: boolean
activate-environment:
description: 'Wether to activate the virtual env or not'
required: false
default: true
type: boolean
runs:
using: 'composite'
steps:
- uses: astral-sh/setup-uv@bd01e18f51369d5a26f1651c3cb451d3417e3bba # v6.3.1
with:
version: "0.7.x"
activate-environment: ${{ inputs.activate-environment }}
- if: inputs.sync == 'true' && inputs.dev == 'false'
run: uv sync --frozen --no-dev
shell: bash
env:
FORCE_COLOR: "1"
- if: inputs.sync == 'true' && inputs.dev == 'true'
run: uv sync --frozen
shell: bash
env:
FORCE_COLOR: "1"
67 changes: 34 additions & 33 deletions .github/workflows/code-checkers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,48 +2,49 @@ name: Static code checkers

on: [push]

permissions: {}

jobs:
mypy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
version: "0.7.x"
- name: Install dependencies
run: uv sync --frozen
- name: Create a dummy data.py
run: cp data.py-dist data.py
- name: Install additional typing data and check with mypy
run: uv run mypy --install-types --non-interactive lib/ conftest.py pkgfixtures.py tests/
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/uv-setup
- name: Create a dummy data.py
run: cp data.py-dist data.py
- run: mypy --install-types --non-interactive lib/ conftest.py pkgfixtures.py tests/

pyright:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
version: "0.7.x"
- name: Install dependencies
run: uv sync --frozen
- name: Create a dummy data.py
run: cp data.py-dist data.py
- name: Check with pyright
run: uv run pyright lib/ conftest.py pkgfixtures.py # tests/
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/uv-setup/
- name: Create a dummy data.py
run: cp data.py-dist data.py
- run: pyright lib/ conftest.py pkgfixtures.py # tests/

ruff:
runs-on: ubuntu-latest
env:
FORCE_COLOR: "1"
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/uv-setup/
- name: Create a dummy data.py
run: cp data.py-dist data.py
- run: ruff check lib/ tests/

flake8:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
version: "0.7.x"
- name: Install dependencies
run: uv sync --frozen
- name: Create a dummy data.py
run: cp data.py-dist data.py
- name: Check with ruff
run: uv run ruff check lib/ tests/
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/uv-setup/
- run: flake8
30 changes: 0 additions & 30 deletions .github/workflows/format.yml

This file was deleted.

22 changes: 11 additions & 11 deletions .github/workflows/jobs-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@ name: Check jobs consistency

on: [push]

permissions: {}

jobs:
jobs-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
version: "0.7.x"
- name: Install dependencies
run: uv sync --frozen
- name: Create a dummy data.py
run: cp data.py-dist data.py
- name: jobs-check
run: uv run ./jobs.py check
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/uv-setup/
with:
dev: false
- name: Create a dummy data.py
run: cp data.py-dist data.py
- run: ./jobs.py check
19 changes: 10 additions & 9 deletions .github/workflows/requirements-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@ name: Check requirements file consistency

on: [push]

permissions: {}

jobs:
requirements-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
version: "0.7.x"
- name: Install dependencies
run: uv sync --frozen
- run: uv run ./requirements/update_requirements.py
- run: git diff --exit-code
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/uv-setup/
with:
dev: false
- run: ./requirements/update_requirements.py
- run: git diff --exit-code
37 changes: 19 additions & 18 deletions .github/workflows/test-sequences.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,26 @@ name: Check test-sequences consistency

on: [push]

permissions: {}

jobs:
jobs-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
version: "0.7.x"
- name: Install dependencies
run: uv sync --frozen
- name: Create a dummy data.py
run: cp data.py-dist data.py
- name: jobs-check
run: |
FAILURES=""
for seq in $(find -name "*.lst"); do
if ! uv run pytest @$seq --collect-only --quiet; then
FAILURES="$FAILURES $seq"
fi
done
[ -z "$FAILURES" ] || { echo >&2 "ERROR: test sequences failed consistency check: $FAILURES"; exit 1; }
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/uv-setup/
with:
dev: false
- name: Create a dummy data.py
run: cp data.py-dist data.py
- name: jobs-check
run: |
FAILURES=""
for seq in $(find -name "*.lst"); do
if ! pytest @$seq --collect-only --quiet; then
FAILURES="$FAILURES $seq"
fi
done
[ -z "$FAILURES" ] || { echo >&2 "ERROR: test sequences failed consistency check: $FAILURES"; exit 1; }
20 changes: 20 additions & 0 deletions .github/workflows/zizmor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: GitHub Actions Security Analysis with zizmor 🌈

on: [push]

permissions: {}

jobs:
zizmor:
name: zizmor latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/uv-setup/
with:
sync: false
- run: uvx zizmor --color=always .
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39 changes: 37 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name = "xcp-ng-tests"
version = "0.1.0"
description = "Testing scripts for XCP-ng"
readme = "README.md"
requires-python = "~=3.11"
requires-python = ">=3.11"
dependencies = [
"cryptography>=3.3.1",
"gitpython",
Expand All @@ -21,6 +21,7 @@ dev = [
"bs4>=0.0.1",
"mypy",
"flake8",
"flake8-pyproject",
"pydocstyle",
"pyright",
"pyyaml>=6.0",
Expand All @@ -42,17 +43,38 @@ quote-style = "preserve"

[tool.ruff.lint]
select = [
"D", # pydocstyle
"F", # Pyflakes
"I", # isort
"SLF", # flake8-self
"SIM", # flake8-simplify
]
# don't use some of the SIM rules
# don't use some of the default D and SIM rules
ignore = [
"D100", # undocumented-public-module
"D101", # undocumented-public-class
"D102", # undocumented-public-method
"D103", # undocumented-public-function
"D104", # undocumented-public-package
"D105", # undocumented-magic-method
"D106", # undocumented-public-nested-class
"D107", # undocumented-public-init
"D200", # unnecessary-multiline-docstring
"D203", # incorrect-blank-line-before-class
"D204", # incorrect-blank-line-after-class
"D205", # missing-blank-line-after-summary
"D210", # surrounding-whitespace
"D212", # incorrect-blank-line-before-class
"D400", # missing-trailing-period
"D401", # non-imperative-mood
"D403", # first-word-uncapitalized
"SIM105", # suppressible-exception
"SIM108", # if-else-block-instead-of-if-exp
]

# restrict to the PEP 257 rules
pydocstyle.convention = "pep257"

[tool.ruff.lint.extend-per-file-ignores]
# pytest requires some import and function arguments to match, but
# the linter doesn't know that
Expand All @@ -76,3 +98,16 @@ section-order = [
"local-folder",
"typing",
]

# ruff doesn't provide all the pycodestyle rules, and pycodestyle is not well
# supported by some IDEs, so we use flake8 for that
[tool.flake8]
max-line-length = 120
ignore = [
"E261", # At least two spaces before inline comment
"E302", # Expected 2 blank lines, found 0
"E305", # Expected 2 blank lines after end of function or class
"W503", # Line break occurred before a binary operator
"F", # already done by ruff
]
exclude=[".git", ".venv", "data.py", "vm_data.py"]
1 change: 1 addition & 0 deletions requirements/dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ ansible>=5.0.1
bs4>=0.0.1
mypy
flake8
flake8-pyproject
pydocstyle
pyright
pyyaml>=6.0
Expand Down
7 changes: 0 additions & 7 deletions setup.cfg

This file was deleted.

Loading