Blob Blame History Raw
Name:           python-sure
Version:        2.0.0
Release:        %autorelease
Summary:        Idiomatic assertion toolkit with human-friendly failure messages

License:        GPLv3+
URL:            https://github.com/gabrielfalcao/sure
Source0:        %{url}/archive/%{version}/sure-%{version}.tar.gz

# Trivial downstream man page for (nearly pointless) executable
Source1:        sure.1

# Python 3.10 workaround
# In test_context_is_not_optional(), only check the exception type
# https://github.com/gabrielfalcao/sure/issues/169
Patch0:         python3.10-workaround.patch

BuildArch:      noarch

BuildRequires:  python3-devel

# TODO: remove mock dependency from install_requires
# https://fedoraproject.org/wiki/Changes/DeprecatePythonMock
# https://github.com/gabrielfalcao/sure/pull/161

# Test dependencies
# TODO: remove the test dependency on nose
# https://fedoraproject.org/wiki/Changes/DeprecateNose
BuildRequires:  python3dist(nose)
# development.txt: pytest==6.2.4
BuildRequires:  python3dist(pytest)
# development.txt: pytest-cov==2.12.1
# (We don’t need coverage reports, but it is easier to add the dependency than
# to patch setup.cfg.)
BuildRequires:  python3dist(pytest-cov)

# Documentation dependencies
BuildRequires:  make
# development.txt: Sphinx==2.3.1
BuildRequires:  python3dist(sphinx)
# development.txt: sphinx-rtd-theme==0.4.3
BuildRequires:  python3dist(sphinx-rtd-theme)
BuildRequires:  python3-docs

%global common_description %{expand:
An idiomatic testing library for python with powerful and flexible assertions
created by Gabriel Falcão. Sure’s developer experience is inspired and modeled
after RSpec Expectations and should.js.}

%description %{common_description}


%package -n python3-sure
Summary:        %{summary}

%description -n python3-sure %{common_description}


%package doc
Summary:        Documentation for Sure

Requires:       python3-docs

%description doc %{common_description}


%prep
%autosetup -p1 -n sure-%{version}

# Use local inventories in intersphinx mappings.
#
# Currently, python-redis does not package the Sphinx documentation, so we
# remove that mapping:
#   'redis': ('https://redis-py.readthedocs.io/en/latest/', None)
sed -r -i \
    -e 's|https://docs.python.org/3?|/%{_docdir}/python3-docs/html|' \
    -e '/redis.*https.*readthedocs/d' \
    docs/source/conf.py

cp -p '%{SOURCE1}' .


%generate_buildrequires
%pyproject_buildrequires -r


%build
%pyproject_wheel
env PYTHONPATH="${PWD}" %make_build -C docs/ html SPHINXOPTS='%{?_smp_mflags}'
rm -vf docs/_build/html/.buildinfo


%install
%pyproject_install
%pyproject_save_files sure

install -t '%{buildroot}%{_mandir}/man1' -D -p -m 0644 sure.1


%check
%pytest


%files -n python3-sure -f %{pyproject_files}
%{_bindir}/sure
%{_mandir}/man1/sure.1*


%files doc
%license COPYING
%doc CHANGELOG.md
%doc README.rst
%doc TODO.rst
%doc docs/build/html


%changelog
%autochangelog