diff --git a/pytest.ini b/pytest.ini index 3b97c3651f31436f2d155ac1af94d2ef178277b1..98c5ccf6f89386ccf13d3d6cd81225d37e683cb3 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,9 +1,8 @@ [pytest] # Remove the pytest_swh_* entries when they stop getting imported automatically -addopts = -p no:flask -p no:pytest_swh_scheduler -p no:pytest_swh_storage -p no:pytest_swh_core +addopts = --ignore=swh/deposit/settings -p no:flask -p no:pytest_swh_scheduler -p no:pytest_swh_storage -p no:pytest_swh_core norecursedirs = build docs .* DJANGO_SETTINGS_MODULE = swh.deposit.settings.testing - markers = db: execute tests using a postgresql database fs: execute tests using the filesystem diff --git a/swh/deposit/api/collection.py b/swh/deposit/api/collection.py index e80c0bf0b5607583d2d64efd31af8e7740427d36..80c87a78021ff9e2136697d34a75f1c3aaafd084 100644 --- a/swh/deposit/api/collection.py +++ b/swh/deposit/api/collection.py @@ -9,22 +9,22 @@ from django.shortcuts import render from rest_framework import status from rest_framework.generics import ListAPIView -from ..config import DEPOSIT_STATUS_LOAD_SUCCESS, EDIT_IRI -from ..models import Deposit -from ..parsers import ( - SWHAtomEntryParser, - SWHFileUploadTarParser, - SWHFileUploadZipParser, - SWHMultiPartParser, -) -from .common import ( +from swh.deposit.api.common import ( ACCEPT_ARCHIVE_CONTENT_TYPES, APIPost, ParsedRequestHeaders, Receipt, get_collection_by_name, ) -from .utils import DefaultPagination, DepositSerializer +from swh.deposit.api.utils import DefaultPagination, DepositSerializer +from swh.deposit.config import DEPOSIT_STATUS_LOAD_SUCCESS, EDIT_IRI +from swh.deposit.models import Deposit +from swh.deposit.parsers import ( + SWHAtomEntryParser, + SWHFileUploadTarParser, + SWHFileUploadZipParser, + SWHMultiPartParser, +) class CollectionAPI(ListAPIView, APIPost): diff --git a/swh/deposit/api/common.py b/swh/deposit/api/common.py index 7f82365e996ffd0effb64d9a0ccbf688365f1c03..c24d925ce49019085bc014ba822ac6f1a406f04c 100644 --- a/swh/deposit/api/common.py +++ b/swh/deposit/api/common.py @@ -23,13 +23,6 @@ from rest_framework.authentication import BaseAuthentication, BasicAuthenticatio from rest_framework.permissions import BasePermission, IsAuthenticated from rest_framework.request import Request from rest_framework.views import APIView - -from swh.deposit.api.checks import check_metadata, check_url_match_provider -from swh.deposit.api.converters import convert_status_detail -from swh.deposit.auth import HasDepositPermission, KeycloakBasicAuthentication -from swh.deposit.models import DEPOSIT_METADATA_ONLY, Deposit -from swh.deposit.parsers import parse_xml -from swh.deposit.utils import compute_metadata_context, parse_swh_metadata_provenance from swh.model import hashutil from swh.model.model import ( MetadataAuthority, @@ -45,7 +38,10 @@ from swh.model.swhids import ( ) from swh.scheduler.utils import create_oneshot_task_dict -from ..config import ( +from swh.deposit.api.checks import check_metadata, check_url_match_provider +from swh.deposit.api.converters import convert_status_detail +from swh.deposit.auth import HasDepositPermission, KeycloakBasicAuthentication +from swh.deposit.config import ( ARCHIVE_KEY, ARCHIVE_TYPE, CONT_FILE_IRI, @@ -60,7 +56,7 @@ from ..config import ( STATE_IRI, APIConfig, ) -from ..errors import ( +from swh.deposit.errors import ( BAD_REQUEST, CHECKSUM_MISMATCH, ERROR_CONTENT, @@ -73,10 +69,19 @@ from ..errors import ( DepositError, ParserError, ) -from ..models import DepositClient, DepositCollection, DepositRequest -from ..utils import ( +from swh.deposit.models import ( + DEPOSIT_METADATA_ONLY, + Deposit, + DepositClient, + DepositCollection, + DepositRequest, +) +from swh.deposit.parsers import parse_xml +from swh.deposit.utils import ( + compute_metadata_context, extended_swhid_from_qualified, parse_swh_deposit_origin, + parse_swh_metadata_provenance, parse_swh_reference, ) diff --git a/swh/deposit/api/content.py b/swh/deposit/api/content.py index 7def160210febc7a6a7c4624a49067a80d5c1721..1b5e1fffcaf5bf9eaa6c28315ba0f4df742955f6 100644 --- a/swh/deposit/api/content.py +++ b/swh/deposit/api/content.py @@ -7,8 +7,8 @@ from django.http import HttpResponse from django.shortcuts import render from rest_framework import status -from ..models import DEPOSIT_STATUS_DETAIL, DepositRequest -from .common import APIBase, get_deposit_by_id +from swh.deposit.api.common import APIBase, get_deposit_by_id +from swh.deposit.models import DEPOSIT_STATUS_DETAIL, DepositRequest class ContentAPI(APIBase): diff --git a/swh/deposit/api/edit.py b/swh/deposit/api/edit.py index 67e8bf85a63c618589ff0df7cab7f7fe3018dcb4..9ab054535ce1172a19706fe2c93ef39e7c237730 100644 --- a/swh/deposit/api/edit.py +++ b/swh/deposit/api/edit.py @@ -4,14 +4,13 @@ # See top-level LICENSE file for more information from rest_framework.request import Request - -from swh.deposit.models import Deposit from swh.model.swhids import QualifiedSWHID -from ..config import DEPOSIT_STATUS_LOAD_SUCCESS -from ..errors import BAD_REQUEST, DepositError, ParserError -from ..parsers import SWHAtomEntryParser, SWHMultiPartParser -from .common import APIDelete, APIPut, ParsedRequestHeaders +from swh.deposit.api.common import APIDelete, APIPut, ParsedRequestHeaders +from swh.deposit.config import DEPOSIT_STATUS_LOAD_SUCCESS +from swh.deposit.errors import BAD_REQUEST, DepositError, ParserError +from swh.deposit.models import Deposit +from swh.deposit.parsers import SWHAtomEntryParser, SWHMultiPartParser class EditAPI(APIPut, APIDelete): diff --git a/swh/deposit/api/edit_media.py b/swh/deposit/api/edit_media.py index b673ff759bedd410cdc498701e692009f34a08ea..e12b1ad7fd335cd2ef15544c76b882cb342a2f05 100644 --- a/swh/deposit/api/edit_media.py +++ b/swh/deposit/api/edit_media.py @@ -7,11 +7,7 @@ from typing import Optional, Tuple from rest_framework import status -from ..config import CONT_FILE_IRI -from ..errors import BAD_REQUEST, DepositError -from ..models import Deposit -from ..parsers import SWHFileUploadTarParser, SWHFileUploadZipParser -from .common import ( +from swh.deposit.api.common import ( ACCEPT_ARCHIVE_CONTENT_TYPES, APIDelete, APIPost, @@ -19,6 +15,10 @@ from .common import ( ParsedRequestHeaders, Receipt, ) +from swh.deposit.config import CONT_FILE_IRI +from swh.deposit.errors import BAD_REQUEST, DepositError +from swh.deposit.models import Deposit +from swh.deposit.parsers import SWHFileUploadTarParser, SWHFileUploadZipParser class EditMediaAPI(APIPost, APIPut, APIDelete): diff --git a/swh/deposit/api/private/__init__.py b/swh/deposit/api/private/__init__.py index acf91c024a1dd1030289690ed1bdbaa7ceb56e2a..ab7217840eeb2f3ee233f832aaf916ff4f416351 100644 --- a/swh/deposit/api/private/__init__.py +++ b/swh/deposit/api/private/__init__.py @@ -8,8 +8,8 @@ from typing import Optional from rest_framework.permissions import AllowAny from rest_framework.views import APIView -from ...config import METADATA_TYPE, APIConfig -from ...models import Deposit, DepositRequest +from swh.deposit.config import METADATA_TYPE, APIConfig +from swh.deposit.models import Deposit, DepositRequest class DepositReadMixin: diff --git a/swh/deposit/api/private/deposit_check.py b/swh/deposit/api/private/deposit_check.py index e24310aa070ff9bfade754dd952549aaab5dba38..bfd12eee083f77d721b20327c60b5fb12d44abf5 100644 --- a/swh/deposit/api/private/deposit_check.py +++ b/swh/deposit/api/private/deposit_check.py @@ -14,14 +14,17 @@ import zipfile from rest_framework import status from rest_framework.request import Request - from swh.scheduler.utils import create_oneshot_task_dict -from . import APIPrivateView, DepositReadMixin -from ...config import ARCHIVE_TYPE, DEPOSIT_STATUS_REJECTED, DEPOSIT_STATUS_VERIFIED -from ...models import Deposit, DepositRequest -from ..checks import check_metadata -from ..common import APIGet +from swh.deposit.api.checks import check_metadata +from swh.deposit.api.common import APIGet +from swh.deposit.api.private import APIPrivateView, DepositReadMixin +from swh.deposit.config import ( + ARCHIVE_TYPE, + DEPOSIT_STATUS_REJECTED, + DEPOSIT_STATUS_VERIFIED, +) +from swh.deposit.models import Deposit, DepositRequest MANDATORY_ARCHIVE_UNREADABLE = ( "At least one of its associated archives is not readable" # noqa diff --git a/swh/deposit/api/private/deposit_list.py b/swh/deposit/api/private/deposit_list.py index 30ca768e4305541bac6182258722793827893760..63c58112f3d104460d2f2c01238d1ca702203c67 100644 --- a/swh/deposit/api/private/deposit_list.py +++ b/swh/deposit/api/private/deposit_list.py @@ -19,13 +19,12 @@ from rest_framework.generics import ListAPIView from rest_framework.permissions import AllowAny from rest_framework.request import Request import sentry_sdk +from swh.model.swhids import QualifiedSWHID +from swh.deposit.api.private import APIPrivateView from swh.deposit.api.utils import DefaultPagination, DepositSerializer +from swh.deposit.models import Deposit from swh.deposit.utils import parse_swh_deposit_origin, parse_swh_metadata_provenance -from swh.model.swhids import QualifiedSWHID - -from . import APIPrivateView -from ...models import Deposit def _enrich_deposit_with_metadata(deposit: Deposit) -> Deposit: diff --git a/swh/deposit/api/private/deposit_read.py b/swh/deposit/api/private/deposit_read.py index 94ecb201a5eec0a7bad5857edd966150a7ec8f6b..c8d8370cb6b028d00064e0e9b374b416ff8ad33b 100644 --- a/swh/deposit/api/private/deposit_read.py +++ b/swh/deposit/api/private/deposit_read.py @@ -12,17 +12,16 @@ from typing import Any, Dict, Iterator, List, Optional, Tuple from xml.etree import ElementTree from rest_framework import status - from swh.core import tarball -from swh.deposit.utils import NAMESPACES, normalize_date from swh.model.hashutil import hash_to_hex from swh.model.model import MetadataAuthorityType from swh.model.swhids import CoreSWHID -from . import APIPrivateView, DepositReadMixin -from ...config import ARCHIVE_TYPE, SWH_PERSON -from ...models import Deposit -from ..common import APIGet +from swh.deposit.api.common import APIGet +from swh.deposit.api.private import APIPrivateView, DepositReadMixin +from swh.deposit.config import ARCHIVE_TYPE, SWH_PERSON +from swh.deposit.models import Deposit +from swh.deposit.utils import NAMESPACES, normalize_date @contextmanager diff --git a/swh/deposit/api/private/deposit_update_status.py b/swh/deposit/api/private/deposit_update_status.py index 2ccc45e17337a50b4a8db0b15efa65d5a9c1dd34..52ebf896a28edd6492ca831232b22ba6613dc973 100644 --- a/swh/deposit/api/private/deposit_update_status.py +++ b/swh/deposit/api/private/deposit_update_status.py @@ -4,14 +4,17 @@ # See top-level LICENSE file for more information from rest_framework.parsers import JSONParser - from swh.model.hashutil import hash_to_bytes from swh.model.swhids import CoreSWHID, ObjectType, QualifiedSWHID -from . import APIPrivateView -from ...errors import BAD_REQUEST, DepositError -from ...models import DEPOSIT_STATUS_DETAIL, DEPOSIT_STATUS_LOAD_SUCCESS, Deposit -from ..common import APIPut, ParsedRequestHeaders +from swh.deposit.api.common import APIPut, ParsedRequestHeaders +from swh.deposit.api.private import APIPrivateView +from swh.deposit.errors import BAD_REQUEST, DepositError +from swh.deposit.models import ( + DEPOSIT_STATUS_DETAIL, + DEPOSIT_STATUS_LOAD_SUCCESS, + Deposit, +) MANDATORY_KEYS = ["origin_url", "release_id", "directory_id", "snapshot_id"] diff --git a/swh/deposit/api/private/urls.py b/swh/deposit/api/private/urls.py index a5d29b0ed166216c7d2f71b5cfdfb552aa2e3624..650480a892060a72e8cff7e31071146fc1cdcb52 100644 --- a/swh/deposit/api/private/urls.py +++ b/swh/deposit/api/private/urls.py @@ -5,7 +5,11 @@ from django.urls import re_path as url -from ...config import ( +from swh.deposit.api.private.deposit_check import APIChecks +from swh.deposit.api.private.deposit_list import APIList, deposit_list_datatables +from swh.deposit.api.private.deposit_read import APIReadArchives, APIReadMetadata +from swh.deposit.api.private.deposit_update_status import APIUpdateStatus +from swh.deposit.config import ( PRIVATE_CHECK_DEPOSIT, PRIVATE_GET_DEPOSIT_METADATA, PRIVATE_GET_RAW_CONTENT, @@ -13,10 +17,6 @@ from ...config import ( PRIVATE_LIST_DEPOSITS_DATATABLES, PRIVATE_PUT_DEPOSIT, ) -from .deposit_check import APIChecks -from .deposit_list import APIList, deposit_list_datatables -from .deposit_read import APIReadArchives, APIReadMetadata -from .deposit_update_status import APIUpdateStatus urlpatterns = [ # Retrieve deposit's raw archives' content diff --git a/swh/deposit/api/state.py b/swh/deposit/api/state.py index c56782feb5d08ee3834c512e5219694ac40ca114..08f8b47081a3afa6ceef7c3a05dbd9d396687bd7 100644 --- a/swh/deposit/api/state.py +++ b/swh/deposit/api/state.py @@ -7,9 +7,9 @@ from django.http import HttpResponse from django.shortcuts import render from rest_framework import status -from ..models import DEPOSIT_STATUS_DETAIL -from .common import APIBase, get_deposit_by_id -from .converters import convert_status_detail +from swh.deposit.api.common import APIBase, get_deposit_by_id +from swh.deposit.api.converters import convert_status_detail +from swh.deposit.models import DEPOSIT_STATUS_DETAIL class StateAPI(APIBase): diff --git a/swh/deposit/api/sword_edit.py b/swh/deposit/api/sword_edit.py index 1378a5c1572e9fb18ec56b4d77040b9c9e0d20a2..da7c2d056322f6fcf5e1ce6bd5c62bae5a066409 100644 --- a/swh/deposit/api/sword_edit.py +++ b/swh/deposit/api/sword_edit.py @@ -6,14 +6,13 @@ from typing import Optional, Tuple from rest_framework import status - from swh.storage import get_storage from swh.storage.interface import StorageInterface -from ..config import EDIT_IRI, EM_IRI -from ..models import Deposit -from ..parsers import SWHAtomEntryParser, SWHMultiPartParser -from .common import APIPost, ParsedRequestHeaders, Receipt +from swh.deposit.api.common import APIPost, ParsedRequestHeaders, Receipt +from swh.deposit.config import EDIT_IRI, EM_IRI +from swh.deposit.models import Deposit +from swh.deposit.parsers import SWHAtomEntryParser, SWHMultiPartParser class SwordEditAPI(APIPost): diff --git a/swh/deposit/api/urls.py b/swh/deposit/api/urls.py index c204c04d2f4869127665069d1c6d18b692ee3bd1..86b24a6b7dc2726e3d847aed306bf300b8f7b68c 100644 --- a/swh/deposit/api/urls.py +++ b/swh/deposit/api/urls.py @@ -10,14 +10,22 @@ from django.shortcuts import render from django.urls import re_path as url -from ..config import COL_IRI, CONT_FILE_IRI, EDIT_IRI, EM_IRI, SD_IRI, SE_IRI, STATE_IRI -from .collection import CollectionAPI -from .content import ContentAPI -from .edit import EditAPI -from .edit_media import EditMediaAPI -from .service_document import ServiceDocumentAPI -from .state import StateAPI -from .sword_edit import SwordEditAPI +from swh.deposit.api.collection import CollectionAPI +from swh.deposit.api.content import ContentAPI +from swh.deposit.api.edit import EditAPI +from swh.deposit.api.edit_media import EditMediaAPI +from swh.deposit.api.service_document import ServiceDocumentAPI +from swh.deposit.api.state import StateAPI +from swh.deposit.api.sword_edit import SwordEditAPI +from swh.deposit.config import ( + COL_IRI, + CONT_FILE_IRI, + EDIT_IRI, + EM_IRI, + SD_IRI, + SE_IRI, + STATE_IRI, +) def api_view(req): diff --git a/swh/deposit/auth.py b/swh/deposit/auth.py index f1edd20fe6c64b1e22bf90831d008d86cd406a17..fac0dbdf51a43287a414607c12f2b2e8b77a8dc2 100644 --- a/swh/deposit/auth.py +++ b/swh/deposit/auth.py @@ -13,7 +13,6 @@ from rest_framework.authentication import BasicAuthentication from rest_framework.exceptions import AuthenticationFailed from rest_framework.permissions import BasePermission from sentry_sdk import capture_exception - from swh.auth.django.models import OIDCUser from swh.auth.django.utils import oidc_user_from_profile from swh.auth.keycloak import ( @@ -21,9 +20,9 @@ from swh.auth.keycloak import ( KeycloakOpenIDConnect, keycloak_error_message, ) -from swh.deposit.models import DepositClient -from .errors import UNAUTHORIZED, make_error_response +from swh.deposit.errors import UNAUTHORIZED, make_error_response +from swh.deposit.models import DepositClient logger = logging.getLogger(__name__) diff --git a/swh/deposit/cli/__init__.py b/swh/deposit/cli/__init__.py index 663035c53f10933f901e476f3eff183cff065d4c..0a77542734eeb124dca8aac7654608f0250bb617 100644 --- a/swh/deposit/cli/__init__.py +++ b/swh/deposit/cli/__init__.py @@ -8,7 +8,6 @@ import logging # WARNING: do not import unnecessary things here to keep cli startup time under # control import click - from swh.core.cli import CONTEXT_SETTINGS from swh.core.cli import swh as swh_cli_group @@ -31,10 +30,10 @@ def main(): # These import statements MUST be executed after defining the 'deposit' group # since the subcommands in these are defined using this 'deposit' group. -from . import client # noqa +from swh.deposit.cli import client # noqa try: - from . import admin # noqa + from swh.deposit.cli import admin # noqa except ImportError: # server part is optional logger.debug("admin subcommand not loaded") diff --git a/swh/deposit/models.py b/swh/deposit/models.py index 32478b9be287e382212e941591a4827324dfb32b..f3ddd64de7da51ef9679969d782e053e2cd37a05 100644 --- a/swh/deposit/models.py +++ b/swh/deposit/models.py @@ -22,7 +22,7 @@ except ImportError: from swh.auth.django.models import OIDCUser -from .config import ( +from swh.deposit.config import ( ARCHIVE_TYPE, DEPOSIT_STATUS_DEPOSITED, DEPOSIT_STATUS_LOAD_FAILURE, diff --git a/swh/deposit/settings/development.py b/swh/deposit/settings/development.py index 08b9a4fd945a44fae85d61d9bc51daa437859022..484d39d753ff806bbfc9ff4a25e35325e3166a93 100644 --- a/swh/deposit/settings/development.py +++ b/swh/deposit/settings/development.py @@ -3,7 +3,7 @@ # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information -from .common import * # noqa +from swh.deposit.settings.common import * # noqa # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True diff --git a/swh/deposit/settings/production.py b/swh/deposit/settings/production.py index 33e1d0639ac6a4289e2ad0a3f469bb2550403cfd..11941b0946f6653a0b439eab463ceb5e1acd9ae9 100644 --- a/swh/deposit/settings/production.py +++ b/swh/deposit/settings/production.py @@ -6,11 +6,10 @@ import os import django - from swh.core import config -from .common import * # noqa -from .common import ALLOWED_HOSTS, CACHES +from swh.deposit.settings.common import * # noqa +from swh.deposit.settings.common import ALLOWED_HOSTS, CACHES ALLOWED_HOSTS += ["deposit.softwareheritage.org"] # Setup support for proxy headers diff --git a/swh/deposit/settings/testing.py b/swh/deposit/settings/testing.py index 10e683f22f455966953ff92cb0749144f624fc06..c8a971898fee272e15a6c99ec49f04248ab1c707 100644 --- a/swh/deposit/settings/testing.py +++ b/swh/deposit/settings/testing.py @@ -3,10 +3,10 @@ # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information -from .common import * # noqa -from .common import ALLOWED_HOSTS -from .development import * # noqa -from .development import INSTALLED_APPS +from swh.deposit.settings.common import * # noqa +from swh.deposit.settings.common import ALLOWED_HOSTS +from swh.deposit.settings.development import * # noqa +from swh.deposit.settings.development import INSTALLED_APPS # django setup ALLOWED_HOSTS += ["testserver"] diff --git a/swh/deposit/tests/api/test_basic_auth.py b/swh/deposit/tests/api/test_basic_auth.py index c5ca171c1d47d1e0194f3dc69061a1730d7453a4..481458a7b316c22a377c7a525180ff2c947ccf9d 100644 --- a/swh/deposit/tests/api/test_basic_auth.py +++ b/swh/deposit/tests/api/test_basic_auth.py @@ -11,8 +11,7 @@ from django.urls import reverse_lazy as reverse import pytest from swh.deposit.config import SD_IRI - -from .test_service_document import check_response +from swh.deposit.tests.api.test_service_document import check_response @pytest.fixture() diff --git a/swh/deposit/tests/api/test_collection_add_to_origin.py b/swh/deposit/tests/api/test_collection_add_to_origin.py index 91cef83f86238d1f9902c0b38c29dedb35f43b18..bb4d9b1af0a9fcdaa7dbea7d66699e60e3cd3fd6 100644 --- a/swh/deposit/tests/api/test_collection_add_to_origin.py +++ b/swh/deposit/tests/api/test_collection_add_to_origin.py @@ -10,10 +10,9 @@ from swh.deposit.config import COL_IRI, DEPOSIT_STATUS_LOAD_SUCCESS from swh.deposit.models import Deposit from swh.deposit.parsers import parse_xml from swh.deposit.tests.common import post_atom +from swh.deposit.tests.conftest import internal_create_deposit from swh.deposit.utils import NAMESPACES -from ..conftest import internal_create_deposit - def test_add_deposit_with_add_to_origin( authenticated_client, diff --git a/swh/deposit/tests/api/test_collection_reuse_slug.py b/swh/deposit/tests/api/test_collection_reuse_slug.py index 6968f51bdd0c44ac30589e16a05eed0f76e4306c..0c3f2cdaf695222adc20810379254c99517e5e34 100644 --- a/swh/deposit/tests/api/test_collection_reuse_slug.py +++ b/swh/deposit/tests/api/test_collection_reuse_slug.py @@ -16,10 +16,9 @@ from swh.deposit.config import ( from swh.deposit.models import Deposit from swh.deposit.parsers import parse_xml from swh.deposit.tests.common import post_atom +from swh.deposit.tests.conftest import internal_create_deposit from swh.deposit.utils import NAMESPACES -from ..conftest import internal_create_deposit - def test_act_on_deposit_rejected_is_not_permitted( authenticated_client, deposit_collection, rejected_deposit, atom_dataset diff --git a/swh/deposit/tests/api/test_deposit_private_check.py b/swh/deposit/tests/api/test_deposit_private_check.py index f582153786c3577cce8db7f9651fcf923f190204..f3cb00ce64314aee977901f5f5aeed62ddcc8a23 100644 --- a/swh/deposit/tests/api/test_deposit_private_check.py +++ b/swh/deposit/tests/api/test_deposit_private_check.py @@ -27,13 +27,14 @@ from swh.deposit.config import ( from swh.deposit.models import Deposit from swh.deposit.parsers import parse_xml from swh.deposit.tests.common import ( + SUPPORTED_TARBALL_MODES, create_arborescence_archive, create_archive_with_archive, + post_archive, + post_atom, ) from swh.deposit.utils import NAMESPACES -from ..common import SUPPORTED_TARBALL_MODES, post_archive, post_atom - PRIVATE_CHECK_DEPOSIT_NC = PRIVATE_CHECK_DEPOSIT + "-nc" diff --git a/swh/deposit/tests/api/test_deposit_private_read_archive.py b/swh/deposit/tests/api/test_deposit_private_read_archive.py index f2e3e07d03c6c9c17d40a1c517e3ab5d0557feef..0b9755acc34082cae940544a98bdf8e80424ca4c 100644 --- a/swh/deposit/tests/api/test_deposit_private_read_archive.py +++ b/swh/deposit/tests/api/test_deposit_private_read_archive.py @@ -12,9 +12,11 @@ from rest_framework import status from swh.deposit.api.private.deposit_read import aggregate_tarballs from swh.deposit.config import EM_IRI, PRIVATE_GET_RAW_CONTENT from swh.deposit.models import DepositRequest -from swh.deposit.tests.common import create_arborescence_archive - -from ..common import compute_info, post_archive +from swh.deposit.tests.common import ( + compute_info, + create_arborescence_archive, + post_archive, +) PRIVATE_GET_RAW_CONTENT_NC = PRIVATE_GET_RAW_CONTENT + "-nc" diff --git a/swh/deposit/tests/cli/test_client.py b/swh/deposit/tests/cli/test_client.py index a169960174ad04455267388ce52eb4b9272f2032..a30c3c5429b3b49eabcf0f262391714e39d39629 100644 --- a/swh/deposit/tests/cli/test_client.py +++ b/swh/deposit/tests/cli/test_client.py @@ -13,6 +13,7 @@ from unittest.mock import MagicMock from xml.etree import ElementTree import pytest +from swh.model.exceptions import ValidationError import yaml from swh.deposit.api.checks import ( @@ -29,10 +30,8 @@ from swh.deposit.client import ( ServiceDocumentDepositClient, ) from swh.deposit.parsers import parse_xml +from swh.deposit.tests.conftest import TEST_USER from swh.deposit.utils import NAMESPACES -from swh.model.exceptions import ValidationError - -from ..conftest import TEST_USER def generate_slug() -> str: @@ -327,7 +326,7 @@ def test_cli_single_minimal_deposit_with_slug( assert authors[0].text == "Jane Doe" count_warnings = 0 - for (_, log_level, _) in caplog.record_tuples: + for _, log_level, _ in caplog.record_tuples: count_warnings += 1 if log_level == logging.WARNING else 0 assert ( @@ -412,7 +411,7 @@ def test_cli_single_minimal_deposit_with_create_origin( assert authors[0].text == "Jane Doe" count_warnings = 0 - for (_, log_level, _) in caplog.record_tuples: + for _, log_level, _ in caplog.record_tuples: count_warnings += 1 if log_level == logging.WARNING else 0 assert ( @@ -916,7 +915,7 @@ def test_cli_metadata_only_deposit_full_metadata_file( count_warnings = 0 warning_record: Optional[str] = None - for (_, log_level, msg) in caplog.record_tuples: + for _, log_level, msg in caplog.record_tuples: if log_level == logging.WARNING: count_warnings += 1 warning_record = msg @@ -1025,7 +1024,7 @@ def test_cli_deposit_warning_missing_origin( ) # fmt: on - for (_, log_level, _) in caplog.record_tuples: + for _, log_level, _ in caplog.record_tuples: # all messages are info or below messages so everything is fine assert log_level < logging.WARNING diff --git a/tox.ini b/tox.ini index 69fc39f8ba6cb0ced1901d4a0d555262d604a1b6..b511d7dd585b57e9c4691c34bc61984f26879c43 100644 --- a/tox.ini +++ b/tox.ini @@ -25,6 +25,7 @@ commands = --rootdir {envsitepackagesdir} \ --cov={envsitepackagesdir}/swh/deposit \ --cov-branch \ + --ignore {envsitepackagesdir}/swh/deposit/settings/ \ {envsitepackagesdir}/swh/deposit \ {posargs} # --rootdir and --import-mode are required to make tests that depends