Skip to content

Commit

Permalink
Merge pull request #17 from beproud/migrate-pytest
Browse files Browse the repository at this point in the history
テスト実行をpytestに移行
  • Loading branch information
kashewnuts authored Aug 8, 2024
2 parents 7a455df + 41718f8 commit 2648cd6
Show file tree
Hide file tree
Showing 10 changed files with 36 additions and 84 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
strategy:
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12']
django-version: ['3.2', '4.2']
django-version: ['4.2']

steps:
# ソースコードをチェックアウト
Expand Down
8 changes: 8 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
ChangeLog
=========

0.50 (2024-08-XX)
===================

Incompatible Changes:

* Drop Django3.2&Celery5.2
* Migrate from ``python setup.py test`` to ``pytest``

0.49 (2024-02-XX)
===================

Expand Down
4 changes: 2 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ Requirements
============

* Python (3.9, 3.10, 3.11, 3.12)
* Celery (5.2, 5.3)
* Django (3.2, 4.2)
* Celery (5.3)
* Django (4.2)
* six

Links
Expand Down
7 changes: 0 additions & 7 deletions beproud/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +0,0 @@
# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
try:
__import__('pkg_resources').declare_namespace(__name__)
except ImportError:
from pkgutil import extend_path
__path__ = locals()['__path__'] # make PyFlakes happy
__path__ = extend_path(__path__, __name__)
7 changes: 0 additions & 7 deletions beproud/django/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +0,0 @@
# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
try:
__import__('pkg_resources').declare_namespace(__name__)
except ImportError:
from pkgutil import extend_path
__path__ = locals()['__path__'] # make PyFlakes happy
__path__ = extend_path(__path__, __name__)
5 changes: 2 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "bpnotify"
version = "0.49"
version = "0.50"
authors = [
{ name="BeProud Inc.", email="[email protected]" },
]
Expand All @@ -22,13 +22,12 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Framework :: Django",
"Framework :: Django :: 3.2",
"Framework :: Django :: 4.2",
"Intended Audience :: Developers",
"Environment :: Plugins",
"Topic :: Software Development :: Libraries :: Python Modules",
]
dependencies = ["Django>=3.2", "six", "Celery"]
dependencies = ["Django>=4.2", "six", "Celery"]

[project.urls]
Homepage = "https://github.com/beproud/bpnotify/"
Expand Down
3 changes: 0 additions & 3 deletions setup.py

This file was deleted.

27 changes: 16 additions & 11 deletions test_settings.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import os
import celery

# Django3では、標準のdjango.conf.global_settingsの定数をオーバーライドすると例外が発生する場合がある。
# https://github.com/django/django/blob/70035fb0444ae7c01613374212ca5e3c27c9782c/django/conf/__init__.py#L188
# そのため、testではdjango.conf.global_settingsを直接利用せず、このtest用settings定数を使用する。
Expand All @@ -9,20 +12,13 @@
'beproud.django.notify',
)

# kombu.exceptions.EncodeError: Object of type User is not JSON serializable エラーを抑止する
# (参考)
# https://github.com/celery/celery/issues/5922
# https://stackoverflow.com/questions/49373825/kombu-exceptions-encodeerror-user-is-not-json-serializable
CELERY_TASK_SERIALIZER = "pickle"

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ':memory:',
}
}

import os
BASE_PATH = os.path.dirname(__file__)

TEMPLATES = [
Expand All @@ -33,8 +29,7 @@
],
},
]

CELERY_TASK_ALWAYS_EAGER = True
USE_TZ = False # For Django 5.0+

BPNOTIFY_MEDIA = {
"news": {
Expand All @@ -55,6 +50,16 @@
}
BPNOTIFY_SETTINGS_STORAGE = 'beproud.django.notify.storage.db.DBStorage'

# The name of the class to use to run the test suite
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
# For Celery Tests
app = celery.Celery()
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks(lambda: INSTALLED_APPS)

BROKER_BACKEND = 'memory'
CELERY_TASK_ALWAYS_EAGER = True

# kombu.exceptions.EncodeError: Object of type User is not JSON serializable エラーを抑止する
# (参考)
# https://github.com/celery/celery/issues/5922
# https://stackoverflow.com/questions/49373825/kombu-exceptions-encodeerror-user-is-not-json-serializable
CELERY_TASK_SERIALIZER = "pickle"
46 changes: 0 additions & 46 deletions tests.py

This file was deleted.

11 changes: 7 additions & 4 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
# content of: tox.ini , put in same dir as setup.py
[tox]
envlist = py{39,310,311}-dj{32,42}-celery{52,53},py312-dj42-celery53
envlist = py{39,310,311,312}-dj42-celery53
skipsdist = True

[pytest]
python_files = tests test_*.py *_tests.py
django_find_project = false
DJANGO_SETTINGS_MODULE = test_settings

[testenv]
basepython =
py39: python3.9
Expand All @@ -15,11 +20,9 @@ deps =
pytest-pythonpath
setuptools
six
dj32: Django>=3.2,<4.0
dj42: Django>=4.2,<5.0
celery52: celery>=5.2,<5.3
celery53: celery>=5.3,<5.4
commands=python setup.py test
commands=pytest {posargs}

# tox-gh-actionsパッケージの設定
[gh-actions]
Expand Down

0 comments on commit 2648cd6

Please sign in to comment.