From 50e233195e1276df925f64bff38a7f5e701e3d79 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 | 59 +++++++++++++++++++++++++++++++++ Makefile | 26 ++++++++++----- pyproject.toml | 4 ++- tox.ini | 26 +++++++++++++++ umap/tests/settings.py | 12 ++++--- 5 files changed, 112 insertions(+), 15 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..1e37a07a8 --- /dev/null +++ b/.github/workflows/test-docs.yml @@ -0,0 +1,59 @@ +name: Test & Docs + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + services: + postgres: + image: postgis/postgis:11-2.5 + ports: + - 5432:5432 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: postgres + options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + + strategy: + fail-fast: false + matrix: + python-version: ["3.11"] # ["3.8", "3.9", "3.10", "3.11", "3.12"] + dependencies: [normal] # [normal, minimal] + database: [postgresql] # maybe check different versions of postgres ? + + 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: | + sudo apt update + sudo apt install libgdal-dev + python -m pip install --upgrade pip + python -m pip install -e ".[dev,test]" + - name: run tests + run: pytest . + env: + DJANGO_SETTINGS_MODULE: 'umap.tests.settings' + UMAP_SETTINGS: 'umap/tests/settings.py' + - name: Run Lint + run: make lint + if: matrix.python-version == '3.12' + - name: Run Docs + run: make docs + if: matrix.python-version == '3.12' diff --git a/Makefile b/Makefile index a66e462dd..0189f8215 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=py38 . + +.PHONY: lint +lint: ## Lint the code and template files + djlint umap/templates --lint &&\ + isort --check --profile black . &&\ + ruff format --check --target-version=py38 . &&\ + vermin --no-tips --violations -t=3.8- . + +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..54f70b1e4 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==0.1.6", "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..43e8d2991 --- /dev/null +++ b/tox.ini @@ -0,0 +1,26 @@ +[tox] +envlist = py311,lint_docs +skip_missing_interpreters = True + +[testenv] +allowlist_externals = make +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] +passenv = GITHUB_ACTIONS + +[testenv:lint_docs] +commands = + make lint + make docs +deps = + -e.[dev] +changedir = {toxinidir} + +DJANGO_SETTINGS_MODULE=umap.tests.settings + diff --git a/umap/tests/settings.py b/umap/tests/settings.py index 6d2b28bb5..37a72c5fa 100644 --- a/umap/tests/settings.py +++ b/umap/tests/settings.py @@ -5,15 +5,17 @@ SECRET_KEY = "justfortests" COMPRESS_ENABLED = False FROM_EMAIL = "test@test.org" -EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend' +EMAIL_BACKEND = "django.core.mail.backends.locmem.EmailBackend" -if "TRAVIS" in os.environ: +if os.environ.get("GITHUB_ACTIONS", False) == "true": DATABASES = { "default": { "ENGINE": "django.contrib.gis.db.backends.postgis", - "NAME": "umap", - "PORT": 5433, - "USER": "travis", + "NAME": "postgres", + "USER": "postgres", + "HOST": "localhost", + "PORT": 5432, + "PASSWORD": "postgres", } }