Revision fb70f881cb379ce04ebd0d8c48d4bfd4f79a5971 authored by David Douard on 30 September 2019, 10:14:47 UTC, committed by David Douard on 14 October 2019, 12:14:08 UTC
- use pytest instead of unittest.TestCase plumbing
- extract data from the TestStorageData into a data `storage_data` module;
  this module also provide a simple helper `StorageData` class that mimics
  the original class (access by attributes),
- implement a series of pytest fixtures for these storage specific tests,
- get rid of most hypothesis-based tests,
- replace usage of the use_url hypothesis boolean statetgy by
  pytest.mark.parametrize fixtures; this allows to prevent from
  the need of resetting the storage, since tests are truly executed
  twice (thus with a new swh_storage),
- refactor test_db to use pytest-postgresql.

Disable (xfail) tests from test_snapshot.py, test_api_client
and test_in_memory for now.

Fixes/refactorings come with following revisions.
1 parent 62aff76
Raw File
setup.py
#!/usr/bin/env python3
# Copyright (C) 2015-2018  The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information

from setuptools import setup, find_packages

from os import path
from io import open

here = path.abspath(path.dirname(__file__))

# Get the long description from the README file
with open(path.join(here, 'README.md'), encoding='utf-8') as f:
    long_description = f.read()


def parse_requirements(name=None):
    if name:
        reqf = 'requirements-%s.txt' % name
    else:
        reqf = 'requirements.txt'

    requirements = []
    if not path.exists(reqf):
        return requirements

    with open(reqf) as f:
        for line in f.readlines():
            line = line.strip()
            if not line or line.startswith('#'):
                continue
            requirements.append(line)
    return requirements


setup(
    name='swh.storage',
    description='Software Heritage storage manager',
    long_description=long_description,
    long_description_content_type='text/markdown',
    author='Software Heritage developers',
    author_email='swh-devel@inria.fr',
    url='https://forge.softwareheritage.org/diffusion/DSTO/',
    packages=find_packages(),
    scripts=[
        'bin/swh-storage-add-dir',
    ],
    entry_points='''
        [console_scripts]
        swh-storage=swh.storage.cli:main
        [swh.cli.subcommands]
        storage=swh.storage.cli:storage
    ''',
    setup_requires=['vcversioner'],
    install_requires=parse_requirements() + parse_requirements('swh'),
    extras_require={
        'testing': (parse_requirements('test') +
                    parse_requirements('swh-journal')),
        'schemata': ['SQLAlchemy'],
        'journal': parse_requirements('swh-journal'),
    },
    vcversioner={},
    include_package_data=True,
    classifiers=[
        "Programming Language :: Python :: 3",
        "Intended Audience :: Developers",
        "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
        "Operating System :: OS Independent",
        "Development Status :: 5 - Production/Stable",
    ],
    project_urls={
        'Bug Reports': 'https://forge.softwareheritage.org/maniphest',
        'Funding': 'https://www.softwareheritage.org/donate',
        'Source': 'https://forge.softwareheritage.org/source/swh-storage',
    },
)
back to top