From 727d500bf52ab39fe5ae0d76d7d23b8183d000b2 Mon Sep 17 00:00:00 2001 From: Emad Rad Date: Fri, 24 Nov 2023 02:35:41 +0330 Subject: [PATCH] Feat: Testing and Linting (#31) * ci: test action added * chore: changelog entry added * feat: Makefile added * fix: typing added * chore: cleanup with isort and black --- .github/workflows/test.yml | 22 ++++++ Makefile | 34 ++++++++++ changelog.d/20231005_153517_codewithemad.md | 1 + tutornotes/plugin.py | 75 +++++++++++---------- 4 files changed, 95 insertions(+), 37 deletions(-) create mode 100644 .github/workflows/test.yml create mode 100644 Makefile create mode 100644 changelog.d/20231005_153517_codewithemad.md diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..2ff802d --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,22 @@ +name: Run tests + +on: + pull_request: + branches: [master] + +jobs: + tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.8 + uses: actions/setup-python@v2 + with: + python-version: 3.8 + - name: Upgrade pip + run: python -m pip install --upgrade pip setuptools + - name: Install dependencies + run: | + pip install 'tutor[dev]>=16.0.0,<17.0.0' + - name: Test lint, types, and format + run: make test diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2bc273a --- /dev/null +++ b/Makefile @@ -0,0 +1,34 @@ +.DEFAULT_GOAL := help +.PHONY: docs +SRC_DIRS = ./tutornotes +BLACK_OPTS = --exclude templates ${SRC_DIRS} + +# Warning: These checks are run on every PR. +test: test-lint test-types test-format # Run some static checks. + +test-format: ## Run code formatting tests. + black --check --diff $(BLACK_OPTS) + +test-lint: ## Run code linting tests + pylint --errors-only --enable=unused-import,unused-argument --ignore=templates --ignore=docs/_ext ${SRC_DIRS} + +test-types: ## Run type checks. + mypy --exclude=templates --ignore-missing-imports --implicit-reexport --strict ${SRC_DIRS} + +format: ## Format code automatically. + black $(BLACK_OPTS) + +isort: ## Sort imports. This target is not mandatory because the output may be incompatible with black formatting. Provided for convenience purposes. + isort --skip=templates ${SRC_DIRS} + +changelog-entry: ## Create a new changelog entry. + scriv create + +changelog: ## Collect changelog entries in the CHANGELOG.md file. + scriv collect + +ESCAPE =  +help: ## Print this help. + @grep -E '^([a-zA-Z_-]+:.*?## .*|######* .+)$$' Makefile \ + | sed 's/######* \(.*\)/@ $(ESCAPE)[1;31m\1$(ESCAPE)[0m/g' | tr '@' '\n' \ + | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[33m%-30s\033[0m %s\n", $$1, $$2}' diff --git a/changelog.d/20231005_153517_codewithemad.md b/changelog.d/20231005_153517_codewithemad.md new file mode 100644 index 0000000..81ca4f1 --- /dev/null +++ b/changelog.d/20231005_153517_codewithemad.md @@ -0,0 +1 @@ +- [Improvement] Added Makefile and test action to repository and formatted code with Black and isort. (by @CodeWithEmad) \ No newline at end of file diff --git a/tutornotes/plugin.py b/tutornotes/plugin.py index 66ea3a2..dd18a50 100644 --- a/tutornotes/plugin.py +++ b/tutornotes/plugin.py @@ -1,11 +1,10 @@ from __future__ import annotations -from glob import glob import os import typing as t +from glob import glob import pkg_resources - from tutor import hooks as tutor_hooks from tutor.__about__ import __version_suffix__ @@ -16,11 +15,6 @@ __version__ += "-" + __version_suffix__ config = { - "unique": { - "MYSQL_PASSWORD": "{{ 8|random_string }}", - "SECRET_KEY": "{{ 24|random_string }}", - "OAUTH2_SECRET": "{{ 24|random_string }}", - }, "defaults": { "VERSION": __version__, "DOCKER_IMAGE": "{{ DOCKER_REGISTRY }}overhangio/openedx-notes:{{ NOTES_VERSION }}", @@ -30,14 +24,14 @@ "REPOSITORY": "https://github.com/openedx/edx-notes-api", "REPOSITORY_VERSION": "{{ OPENEDX_COMMON_VERSION }}", }, + "unique": { + "MYSQL_PASSWORD": "{{ 8|random_string }}", + "SECRET_KEY": "{{ 24|random_string }}", + "OAUTH2_SECRET": "{{ 24|random_string }}", + }, } # Initialization hooks - -# To add a custom initialization task, create a bash script template under: -# tutorcodejail/templates/codejail/tasks/ -# and then add it to the MY_INIT_TASKS list. Each task is in the format: -# ("", ("", "", "