From 24a38863f12526a78bcd616a1686d1b3bc318330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexis=20M=C3=A9taireau?= Date: Sat, 18 Nov 2023 23:38:34 +0100 Subject: [PATCH] Integrate with Github CI --- .github/workflows/test-docs.yml | 57 +++++++++++++++++++++++++++++++++ Makefile | 26 +++++++++------ pyproject.toml | 4 ++- tox.ini | 27 ++++++++++++++++ 4 files changed, 104 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/test-docs.yml create mode 100644 tox.ini diff --git a/.github/workflows/test-docs.yml b/.github/workflows/test-docs.yml new file mode 100644 index 000000000..0618266ec --- /dev/null +++ b/.github/workflows/test-docs.yml @@ -0,0 +1,57 @@ +name: Test & Docs + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + # Use postgresql and MariaDB versions of Debian buster + services: + postgres: + image: postgres:11 + ports: + - 5432:5432 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: umap + POSTGRES_DB: umap_ci + options: + --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + + strategy: + fail-fast: false + matrix: + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + dependencies: [normal] + database: [postgresql] + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + cache-dependency-path: '**/pyproject.toml' + - name: Change dependencies to minimal supported versions + run: sed -i -e 's/>=/==/g; s/~=.*==\(.*\)/==\1/g; s/~=/==/g;' pyproject.toml + if: matrix.dependencies == 'minimal' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install tox + # Run tox using the version of Python in `PATH` + - name: Run Tox with postgresql + run: tox -e py + if: matrix.database == 'postgresql' + env: + TESTING_SQLALCHEMY_DATABASE_URI: 'postgresql+psycopg2://postgres:umap@localhost:5432/umap_ci' + - name: Run Lint & Docs + run: tox -e lint_docs + if: matrix.python-version == '3.11' diff --git a/Makefile b/Makefile index a66e462dd..529fbef48 100644 --- a/Makefile +++ b/Makefile @@ -10,13 +10,21 @@ develop: ## Install the test and dev dependencies python3 -m pip install -e .[test,dev] playwright install -.PHONY: pretty-templates -pretty-templates: ## Prettify template files - djlint umap/templates --reformat - -.PHONY: lint-templates -lint-templates: ## Lint template files - djlint umap/templates --lint +.PHONY: format +format: ## Format the code and templates files + djlint umap/templates --reformat &&\ + isort --profile black . &&\ + ruff format --target-version=py37 . + +.PHONY: lint +lint: ## Lint the code and template files + djlint umap/templates --lint &&\ + isort --check --profile black . &&\ + ruff format --check --target-version=py37 . &&\ + vermin --no-tips --violations -t=3.7- . + +docs: ## Compile the docs + mkdocs build .PHONY: version version: ## Display the current version @@ -47,10 +55,10 @@ publish: ## Publish the Python package to Pypi make clean test: - py.test -xv umap/tests/ + pytest -xv umap/tests/ test-integration: - py.test -xv umap/tests/integration/ + pytest -xv umap/tests/integration/ clean: rm -f dist/* diff --git a/pyproject.toml b/pyproject.toml index 7831d31a3..5bc0c1cc4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,9 +47,11 @@ dependencies = [ [project.optional-dependencies] dev = [ "hatch==1.7.0", - "black==23.3.0", + "ruff", "djlint==1.31.0", "mkdocs==1.5.2", + "vermin==1.5.2", + "pymdown-extensions==10.4", ] test = [ "factory-boy==3.2.1", diff --git a/tox.ini b/tox.ini new file mode 100644 index 000000000..fadabcbe5 --- /dev/null +++ b/tox.ini @@ -0,0 +1,27 @@ +[tox] +envlist = py311,lint_docs +skip_missing_interpreters = True + +[testenv] +allowlist_externals = make +passenv = TESTING_SQLALCHEMY_DATABASE_URI +setenv = + DJANGO_SETTINGS_MODULE = umap.tests.settings + UMAP_SETTINGS = umap/tests/settings.py +commands = + python --version + pytest --pyargs umap.tests {posargs} --no-migrations + +deps = + -e.[dev,test] + +[testenv:lint_docs] +commands = + make lint + make docs +deps = + -e.[dev] +changedir = {toxinidir} + +DJANGO_SETTINGS_MODULE=umap.tests.settings +