diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..72b07ed --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,25 @@ +services: + - postgres:9.6 + +variables: + POSTGRES_DB: newsreader + POSTGRES_USER: newsreader + +python tests: + image: python:3.7.4-slim-stretch + stage: test + variables: + PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" + cache: + key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" + paths: + - .cache/pip + - env/ + before_script: + - python3 -m venv env + - source env/bin/activate + - pip install -r requirements/gitlab.txt + script: + - python src/manage.py test newsreader --settings=newsreader.conf.gitlab + - isort -rc src/ --check-only + - black -l 100 --check src/ diff --git a/.isort.cfg b/.isort.cfg index 2b81405..fa6fb9b 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -1,6 +1,6 @@ [settings] include_trailing_comma = true -line_length = 80 +line_length = 100 multi_line_output = 3 skip = env/, venv/ default_section = THIRDPARTY diff --git a/requirements/gitlab.txt b/requirements/gitlab.txt new file mode 100644 index 0000000..a0b3eca --- /dev/null +++ b/requirements/gitlab.txt @@ -0,0 +1,6 @@ +-r base.txt + +factory-boy==2.12.0 +freezegun==0.3.12 +black==19.3b0 +isort==4.3.20 diff --git a/requirements/testing.txt b/requirements/testing.txt new file mode 100644 index 0000000..0a685e3 --- /dev/null +++ b/requirements/testing.txt @@ -0,0 +1,4 @@ +-r base.txt + +factory-boy==2.12.0 +freezegun==0.3.12 diff --git a/src/newsreader/conf/dev.py b/src/newsreader/conf/dev.py index 7453d52..2b0e050 100644 --- a/src/newsreader/conf/dev.py +++ b/src/newsreader/conf/dev.py @@ -10,6 +10,6 @@ EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" INSTALLED_APPS += ["debug_toolbar", "django_extensions"] try: - pass + from .local import * # noqa except ImportError: pass diff --git a/src/newsreader/conf/gitlab.py b/src/newsreader/conf/gitlab.py new file mode 100644 index 0000000..a50781e --- /dev/null +++ b/src/newsreader/conf/gitlab.py @@ -0,0 +1,15 @@ +from .base import * # noqa + + +DEBUG = True + +EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" + +DATABASES = { + "default": { + "ENGINE": "django.db.backends.postgresql_psycopg2", + "NAME": "newsreader", + "USER": "newsreader", + "HOST": "postgres", + } +} diff --git a/src/newsreader/news/collection/migrations/0002_collectionrule_category.py b/src/newsreader/news/collection/migrations/0002_collectionrule_category.py index 2cb1ee4..b9449a7 100644 --- a/src/newsreader/news/collection/migrations/0002_collectionrule_category.py +++ b/src/newsreader/news/collection/migrations/0002_collectionrule_category.py @@ -1,8 +1,9 @@ # Generated by Django 2.2 on 2019-07-05 20:59 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models + class Migration(migrations.Migration): diff --git a/src/newsreader/news/collection/response_handler.py b/src/newsreader/news/collection/response_handler.py index d9598c4..275bc27 100644 --- a/src/newsreader/news/collection/response_handler.py +++ b/src/newsreader/news/collection/response_handler.py @@ -1,12 +1,6 @@ from typing import ContextManager from requests.exceptions import ConnectionError as RequestConnectionError -from requests.exceptions import ( - HTTPError, - RequestException, - SSLError, - TooManyRedirects, -) from newsreader.news.collection.exceptions import ( StreamConnectionError, diff --git a/src/newsreader/news/collection/tests/feed/collector/tests.py b/src/newsreader/news/collection/tests/feed/collector/tests.py index 6978ee9..cb61242 100644 --- a/src/newsreader/news/collection/tests/feed/collector/tests.py +++ b/src/newsreader/news/collection/tests/feed/collector/tests.py @@ -23,12 +23,7 @@ from newsreader.news.collection.utils import build_publication_date from newsreader.news.core.models import Post from newsreader.news.core.tests.factories import PostFactory -from .mocks import ( - duplicate_mock, - empty_mock, - multiple_mock, - multiple_update_mock, -) +from .mocks import duplicate_mock, empty_mock, multiple_mock, multiple_update_mock class FeedCollectorTestCase(TestCase): diff --git a/src/newsreader/news/collection/tests/utils/tests.py b/src/newsreader/news/collection/tests/utils/tests.py index 0362c71..95c5dd2 100644 --- a/src/newsreader/news/collection/tests/utils/tests.py +++ b/src/newsreader/news/collection/tests/utils/tests.py @@ -3,12 +3,7 @@ from unittest.mock import MagicMock, patch from django.test import TestCase from requests.exceptions import ConnectionError as RequestConnectionError -from requests.exceptions import ( - HTTPError, - RequestException, - SSLError, - TooManyRedirects, -) +from requests.exceptions import HTTPError, RequestException, SSLError, TooManyRedirects from newsreader.news.collection.exceptions import ( StreamConnectionError, diff --git a/src/newsreader/news/collection/urls.py b/src/newsreader/news/collection/urls.py index 4b59a09..de289d1 100644 --- a/src/newsreader/news/collection/urls.py +++ b/src/newsreader/news/collection/urls.py @@ -1,9 +1,6 @@ from django.urls import path -from newsreader.news.collection.views import ( - CollectionRuleAPIListView, - CollectionRuleDetailView, -) +from newsreader.news.collection.views import CollectionRuleAPIListView, CollectionRuleDetailView endpoints = [ diff --git a/src/newsreader/news/collection/views.py b/src/newsreader/news/collection/views.py index 3de472b..2c08185 100644 --- a/src/newsreader/news/collection/views.py +++ b/src/newsreader/news/collection/views.py @@ -1,7 +1,4 @@ -from rest_framework.generics import ( - ListCreateAPIView, - RetrieveUpdateDestroyAPIView, -) +from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIView from newsreader.core.pagination import ResultSetPagination from newsreader.news.collection.models import CollectionRule diff --git a/src/newsreader/news/core/migrations/0001_initial.py b/src/newsreader/news/core/migrations/0001_initial.py index 5e0ffca..9d9ebc9 100644 --- a/src/newsreader/news/core/migrations/0001_initial.py +++ b/src/newsreader/news/core/migrations/0001_initial.py @@ -1,9 +1,10 @@ # Generated by Django 2.2 on 2019-07-05 20:59 -from django.db import migrations, models import django.db.models.deletion import django.utils.timezone +from django.db import migrations, models + class Migration(migrations.Migration): diff --git a/src/newsreader/news/core/views.py b/src/newsreader/news/core/views.py index 5631796..a0559be 100644 --- a/src/newsreader/news/core/views.py +++ b/src/newsreader/news/core/views.py @@ -9,10 +9,7 @@ from rest_framework.generics import ( from rest_framework.permissions import IsAuthenticated from newsreader.auth.permissions import IsPostOwner -from newsreader.core.pagination import ( - LargeResultSetPagination, - ResultSetPagination, -) +from newsreader.core.pagination import LargeResultSetPagination, ResultSetPagination from newsreader.news.core.models import Category, Post from newsreader.news.core.serializers import CategorySerializer, PostSerializer