diff --git a/.github/workflows/github_action_test_suite.yml b/.github/workflows/github_action_test_suite.yml index 685b242e91..cab529dcf6 100644 --- a/.github/workflows/github_action_test_suite.yml +++ b/.github/workflows/github_action_test_suite.yml @@ -26,6 +26,12 @@ jobs: TESTING_DB: "sqlite3" coverage-test: true + timeout-minutes: 35 + + env: + UNIT_TEST_SETTINGS: "--settings=settings --keepdb --parallel 4 --timing" + COVERAGE_TEST_SETTINGS: "--settings=settings --timing" + steps: - uses: actions/checkout@v3 @@ -67,12 +73,7 @@ jobs: if: ${{ ! matrix.coverage-test }} working-directory: testing_mygame run: | - evennia test \ - --settings=settings \ - --keepdb \ - --parallel 4 \ - --timing \ - evennia + evennia test ${{ env.UNIT_TEST_SETTINGS }} evennia # OBS - it's important to not run the coverage tests with --parallel, it messes up the coverage # calculation! @@ -80,13 +81,8 @@ jobs: if: ${{ matrix.coverage-test }} working-directory: testing_mygame run: | - coverage run \ - --source=evennia \ - --omit=*/migrations/*,*/urls.py,*/test*.py,*.sh,*.txt,*.md,*.pyc,*.service \ - ../bin/unix/evennia test \ - --settings=settings \ - --timing \ - evennia + coverage run --rcfile=../pyproject.toml ../bin/unix/evennia test ${{ env.COVERAGE_TEST_SETTINGS }} evennia + coverage combine coverage xml coverage --version coverage report | grep TOTAL diff --git a/pyproject.toml b/pyproject.toml index 028e42c0ca..1a1e53abaa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,97 +5,116 @@ build-backend = "setuptools.build_meta" [project] name = "evennia" version = "1.0" -maintainers = [ - { name="Griatch", email="griatch@gmail.com" }, -] +maintainers = [{ name = "Griatch", email = "griatch@gmail.com" }] description = "A full-featured toolkit and server for text-based multiplayer games (MUDs, MU*, etc)." requires-python = ">=3.10" -readme = { file="README.md", content-type="text/markdown" } -license = { text="BSD" } +readme = { file = "README.md", content-type = "text/markdown" } +license = { text = "BSD" } keywords = [ - "MUD", "MUSH", "MUX", "MMO", "text-only", "multiplayer", "online", "rpg", "game", "engine", - "framework", "text", "adventure", "telnet", "websocket", "blind", "accessible", "ascii", - "utf-8", "terminal", "online", "server", "beginner", "tutorials" + "MUD", + "MUSH", + "MUX", + "MMO", + "text-only", + "multiplayer", + "online", + "rpg", + "game", + "engine", + "framework", + "text", + "adventure", + "telnet", + "websocket", + "blind", + "accessible", + "ascii", + "utf-8", + "terminal", + "online", + "server", + "beginner", + "tutorials", ] classifiers = [ - "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: JavaScript", - "Development Status :: 5 - Production/Stable", - "License :: OSI Approved :: BSD License", - "Environment :: Console", - "Environment :: Web Environment", - "Framework :: Django", - "Framework :: Twisted", - "Intended Audience :: Developers", - "Intended Audience :: Education", - "Operating System :: MacOS", - "Operating System :: Microsoft :: Windows", - "Operating System :: POSIX :: Linux", - "Topic :: Database", - "Topic :: Education", - "Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)", - "Topic :: Games/Entertainment :: Puzzle Games", - "Topic :: Games/Entertainment :: Role-Playing", - "Topic :: Games/Entertainment :: Simulation", - "Topic :: Software Development :: Libraries :: Application Frameworks", - "Topic :: Internet :: WWW/HTTP :: WSGI :: Server" + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: JavaScript", + "Development Status :: 5 - Production/Stable", + "License :: OSI Approved :: BSD License", + "Environment :: Console", + "Environment :: Web Environment", + "Framework :: Django", + "Framework :: Twisted", + "Intended Audience :: Developers", + "Intended Audience :: Education", + "Operating System :: MacOS", + "Operating System :: Microsoft :: Windows", + "Operating System :: POSIX :: Linux", + "Topic :: Database", + "Topic :: Education", + "Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)", + "Topic :: Games/Entertainment :: Puzzle Games", + "Topic :: Games/Entertainment :: Role-Playing", + "Topic :: Games/Entertainment :: Simulation", + "Topic :: Software Development :: Libraries :: Application Frameworks", + "Topic :: Internet :: WWW/HTTP :: WSGI :: Server", ] dependencies = [ - # core dependencies - "django >= 4.1.3, < 4.2", - "twisted >= 22.10, < 23", - "pytz >= 2022.6", - "djangorestframework >= 3.14, < 3.15", - "pyyaml >= 6.0", - "django-filter == 2.4", - "django-sekizai == 2.0.0", - "inflect >= 5.2.0", - "autobahn >= 20.7.1, < 21.0.0", - "lunr == 0.6.0", - "simpleeval <= 1.0", - "uritemplate == 4.1.1", - "Jinja2 < 3.1", - "tzdata >= 2022.6", - # for unit tests and code formatting - "mock >= 4.0.3", - "model_mommy >= 2.0", - "anything ==0.2.1", - "black >= 22.6", - "isort >= 5.10", - "parameterized ==0.8.1", + # core dependencies + "django >= 4.1.3, < 4.2", + "twisted >= 22.10, < 23", + "pytz >= 2022.6", + "djangorestframework >= 3.14, < 3.15", + "pyyaml >= 6.0", + "django-filter == 2.4", + "django-sekizai == 2.0.0", + "inflect >= 5.2.0", + "autobahn >= 20.7.1, < 21.0.0", + "lunr == 0.6.0", + "simpleeval <= 1.0", + "uritemplate == 4.1.1", + "Jinja2 < 3.1", + "tzdata >= 2022.6", + # for unit tests and code formatting + "mock >= 4.0.3", + "model_mommy >= 2.0", + "anything ==0.2.1", + "black >= 22.6", + "isort >= 5.10", + "parameterized ==0.8.1", ] [project.optional-dependencies] extra = [ - # contrib optional dependencies - # install with 'pip install evennia[extra]` + # contrib optional dependencies + # install with 'pip install evennia[extra]` - # crypto libraries for ssh support - "cryptography >= 2.8", - "pyasn1 >= 0.4.8", - "bcrypt >= 3.1.7", + # crypto libraries for ssh support + "cryptography >= 2.8", + "pyasn1 >= 0.4.8", + "bcrypt >= 3.1.7", - # Telnet-SSL support - "pyopenssl >= 19.1", - "service_identity >= 18.1.0", + # Telnet-SSL support + "pyopenssl >= 19.1", + "service_identity >= 18.1.0", - # AWS storage contrib - "boto3 >= 1.4.4", - "botocore >= 1.15", + # AWS storage contrib + "boto3 >= 1.4.4", + "botocore >= 1.15", - # Jupyter Notebook support - "jupyter >= 1.0.0", - "ipython >= 7.19.0", - "django-extensions >= 3.1.0", + # Jupyter Notebook support + "jupyter >= 1.0.0", + "ipython >= 7.19.0", + "django-extensions >= 3.1.0", - # xyzroom contrib - "scipy == 1.9.3", + # xyzroom contrib + "scipy == 1.9.3", - # Git contrib - "gitpython >= 3.1.27" + # Git contrib + "gitpython >= 3.1.27", ] [project.urls] @@ -133,3 +152,20 @@ exclude = ''' ) ''' + +[tool.coverage] + +[tool.coverage.run] +concurrency = ["multiprocessing"] +parallel = true +source = ["evennia"] +omit = [ + "*/migrations/*", + "*/urls.py", + "*/test*.py", + "*.sh", + "*.txt", + "*.md", + "*.pyc", + "*.service", +]