From 480d69daf9e1ea8eed3a1eaadd8027383236bc68 Mon Sep 17 00:00:00 2001
From: Dorian Turba <froggit.commit.z3jqj@simplelogin.com>
Date: Mon, 17 Jul 2023 13:44:04 +0200
Subject: [PATCH] add black

---
 .gitlab-ci.yml                                      | 12 ++++++++++++
 templates/python/code_quality/black/black.yml       | 10 +++++++---
 templates/python/code_quality/flake8/flake8.yml     |  8 ++++++--
 tests/black_project/pyproject.toml                  | 11 +++++++++++
 tests/black_project/src/black_project/__init__.py   |  3 +++
 tests/black_project/src/black_project/main.py       | 11 +++++++++++
 tests/flake8_project/src/flake8_project/__init__.py |  2 +-
 7 files changed, 51 insertions(+), 6 deletions(-)
 create mode 100644 tests/black_project/pyproject.toml
 create mode 100644 tests/black_project/src/black_project/__init__.py
 create mode 100644 tests/black_project/src/black_project/main.py

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b4eae4d..383cb5c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,6 +4,7 @@ stages:
 include:
     - local: 'templates/python/testing/pytest/pytest.yml'
     - local: 'templates/python/code_quality/flake8/flake8.yml'
+    - local: 'templates/python/code_quality/black/black.yml'
 
 pytest:
     stage: templates
@@ -26,3 +27,14 @@ flake8:
             - .gitlab-ci.yml
             - pyproject.toml
             - templates/python/code_quality/flake8/*
+
+black:
+    stage: templates
+    variables:
+        PROJECT_PATH: "tests/black_project"
+        PYTHON_SETUP: "pip install ${PROJECT_PATH} black"
+    only:
+        changes:
+            - .gitlab-ci.yml
+            - pyproject.toml
+            - templates/python/code_quality/black/*
diff --git a/templates/python/code_quality/black/black.yml b/templates/python/code_quality/black/black.yml
index 160c6f2..ef0a05e 100644
--- a/templates/python/code_quality/black/black.yml
+++ b/templates/python/code_quality/black/black.yml
@@ -1,12 +1,16 @@
 black:
-    image: python:latest
+    image: python:${IMAGE_TAG}
     stage: code_quality
+    variables:
+        IMAGE_TAG: "latest"
+        PROJECT_PATH: "."
+        PYTHON_SETUP: "pip install ${PROJECT_PATH}[CODE_QUALITY]"
     script:
         - python --version  # Debug
         - python -m venv venv --upgrade-deps || python -m venv venv  # upgrade-deps is not supported before 3.9
         - source venv/bin/activate
-        - pip install black
-        - black . --check --diff --quiet
+        - ${PYTHON_SETUP}
+        - black ${PROJECT_PATH} --check --diff --quiet
     only:
         changes:
             - ./**/*.py
diff --git a/templates/python/code_quality/flake8/flake8.yml b/templates/python/code_quality/flake8/flake8.yml
index b9f353b..984ecf7 100644
--- a/templates/python/code_quality/flake8/flake8.yml
+++ b/templates/python/code_quality/flake8/flake8.yml
@@ -1,11 +1,15 @@
 flake8:
-    image: python:latest
+    image: python:${IMAGE_TAG}
     stage: code_quality
+    variables:
+        IMAGE_TAG: "latest"
+        PROJECT_PATH: "."
+        PYTHON_SETUP: "pip install ${PROJECT_PATH}[CODE_QUALITY]"
     script:
         - python --version  # Debug
         - python -m venv venv --upgrade-deps || python -m venv venv  # upgrade-deps is not supported before 3.9
         - source venv/bin/activate
-        - pip install flake8
+        - ${PYTHON_SETUP}
         - flake8 ${PROJECT_PATH} -v
     only:
         changes:
diff --git a/tests/black_project/pyproject.toml b/tests/black_project/pyproject.toml
new file mode 100644
index 0000000..beec19a
--- /dev/null
+++ b/tests/black_project/pyproject.toml
@@ -0,0 +1,11 @@
+[build-system]
+requires = ["hatchling"]
+build-backend = "hatchling.build"
+
+[project]
+name = "black_project"
+version = "0.1.0"
+authors = [
+    { name = "Author Name", email = "author.name@example.com" },
+]
+description = "A description of what the package is for."
diff --git a/tests/black_project/src/black_project/__init__.py b/tests/black_project/src/black_project/__init__.py
new file mode 100644
index 0000000..8cec510
--- /dev/null
+++ b/tests/black_project/src/black_project/__init__.py
@@ -0,0 +1,3 @@
+from black_project.main import main
+
+__all__ = ['main']
diff --git a/tests/black_project/src/black_project/main.py b/tests/black_project/src/black_project/main.py
new file mode 100644
index 0000000..28caf00
--- /dev/null
+++ b/tests/black_project/src/black_project/main.py
@@ -0,0 +1,11 @@
+"""Sample main module."""
+
+
+def main() -> bool:
+    """Sample main function."""
+    print("Hello, world!")
+    return True
+
+
+if __name__ == '__main__':
+    main()
diff --git a/tests/flake8_project/src/flake8_project/__init__.py b/tests/flake8_project/src/flake8_project/__init__.py
index 673c4cf..58505af 100644
--- a/tests/flake8_project/src/flake8_project/__init__.py
+++ b/tests/flake8_project/src/flake8_project/__init__.py
@@ -1,3 +1,3 @@
-from test_project.main import main
+from flake8_project.main import main
 
 __all__ = ['main']
-- 
GitLab