diff --git a/.github/workflows/test-docs.yml b/.github/workflows/test-docs.yml new file mode 100644 index 000000000..8a15866a8 --- /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: umap + POSTGRES_DB: umap + 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..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..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 +