From 126737cbaaf0084d215c0df4ad3fb936018d668e Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Wed, 10 May 2023 04:01:17 +0000 Subject: automatic import of python-mbtest --- .gitignore | 1 + python-mbtest.spec | 475 +++++++++++++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 3 files changed, 477 insertions(+) create mode 100644 python-mbtest.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..0a14fd0 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/mbtest-2.11.0.tar.gz diff --git a/python-mbtest.spec b/python-mbtest.spec new file mode 100644 index 0000000..3b583f0 --- /dev/null +++ b/python-mbtest.spec @@ -0,0 +1,475 @@ +%global _empty_manifest_terminate_build 0 +Name: python-mbtest +Version: 2.11.0 +Release: 1 +Summary: Python wrapper & utils for the Mountebank over the wire test double tool. +License: MIT License +URL: https://github.com/brunns/mbtest/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/a1/18/25e73126c5cb52f72280303f89c142222cdd8219ee19a1bab90ad760b36d/mbtest-2.11.0.tar.gz +BuildArch: noarch + +Requires: python3-requests +Requires: python3-furl +Requires: python3-pyhamcrest +Requires: python3-Deprecated +Requires: python3-brunns-matchers +Requires: python3-imurl +Requires: python3-pytest-cov +Requires: python3-codacy-coverage +Requires: python3-sphinx +Requires: python3-sphinx-autodoc-typehints +Requires: python3-pytest +Requires: python3-furo +Requires: python3-requests +Requires: python3-furl +Requires: python3-pyhamcrest +Requires: python3-Deprecated +Requires: python3-brunns-matchers +Requires: python3-imurl +Requires: python3-pytest +Requires: python3-contexttimer +Requires: python3-brunns-builder +Requires: python3-trustme + +%description +# mbtest + +Opinionated Python wrapper & utils for the [Mountebank](https://www.mbtest.org/) over the wire test double tool. + +Includes [pytest](https://pytest.org) fixture and [PyHamcrest](https://pyhamcrest.readthedocs.io) matchers. + +[![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/) +[![Continuous Integration](https://github.com/brunns/mbtest/workflows/Continuous%20Integration/badge.svg)](https://github.com/brunns/mbtest/actions) +[![Python Versions](https://img.shields.io/pypi/pyversions/mbtest.svg?logo=python)](https://pypi.org/project/mbtest/) +[![Licence](https://img.shields.io/github/license/brunns/mbtest.svg)](https://github.com/brunns/mbtest/blob/master/LICENSE) +[![GitHub all releases](https://img.shields.io/github/downloads/brunns/mbtest/total.svg?logo=github)](https://github.com/brunns/mbtest/releases/) +[![GitHub forks](https://img.shields.io/github/forks/brunns/mbtest.svg?label=Fork&logo=github)](https://github.com/brunns/mbtest/network/members) +[![GitHub stars](https://img.shields.io/github/stars/brunns/mbtest.svg?label=Star&logo=github)](https://github.com/brunns/mbtest/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/brunns/mbtest.svg?label=Watch&logo=github)](https://github.com/brunns/mbtest/watchers/) +[![GitHub contributors](https://img.shields.io/github/contributors/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/issues/) +[![GitHub issues-closed](https://img.shields.io/github/issues-closed/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/issues?q=is%3Aissue+is%3Aclosed) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/pulls) +[![GitHub pull-requests closed](https://img.shields.io/github/issues-pr-closed/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aclosed) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/3b7c694664974d17a34e594c43af0c1b)](https://www.codacy.com/app/brunns/mbtest) +[![Codacy Coverage](https://api.codacy.com/project/badge/coverage/3b7c694664974d17a34e594c43af0c1b)](https://www.codacy.com/app/brunns/mbtest) +[![Documentation Status](https://readthedocs.org/projects/mbtest/badge/?version=latest)](https://mbtest.readthedocs.io/en/latest/?badge=latest) +[![Lines of Code](https://tokei.rs/b1/github/brunns/mbtest)](https://github.com/brunns/mbtest) + + +## Setup + +Install with pip: + + pip install mbtest + +(As usual, use of a [venv](https://docs.python.org/3/library/venv.html) or [virtualenv](https://virtualenv.pypa.io) is recommended.) Also requires [Mountebank](http://www.mbtest.org/) to have been installed: + + npm install mountebank@2.8 --omit=dev + +(Alternatively, you can attach to an instance of Mountebank running elsewhere, perhaps [in docker](https://mbtest.readthedocs.io/en/latest/guide/docker.html).) + +## Basic example + +```python +import requests +from hamcrest import assert_that +from brunns.matchers.response import is_response +from mbtest.matchers import had_request +from mbtest.imposters import Imposter, Predicate, Response, Stub + +def test_request_to_mock_server(mock_server): + # Set up mock server with required behavior + imposter = Imposter(Stub(Predicate(path="/test"), + Response(body="sausages"))) + + with mock_server(imposter): + # Make request to mock server - exercise code under test here + response = requests.get(f"{imposter.url}/test") + + assert_that("We got the expected response", + response, is_response().with_status_code(200).and_body("sausages")) + assert_that("The mock server recorded the request", + imposter, had_request().with_path("/test").and_method("GET")) +``` + +Needs a [pytest fixture](https://docs.pytest.org/en/latest/fixture.html), most easily defined in [`conftest.py`](https://docs.pytest.org/en/latest/how-to/fixtures.html#scope-sharing-fixtures-across-classes-modules-packages-or-session): + +```python +import pytest +from mbtest import server + +@pytest.fixture(scope="session") +def mock_server(request): + return server.mock_server(request) +``` + +This will take care of starting and stopping the Mountebank server for you. Examples of more complex predicates can be +found in the [integration tests](https://github.com/brunns/mbtest/tree/master/tests/integration/). + +See the [Documentation](https://mbtest.readthedocs.io/) for more. + + +## Contributing + +Requires [make](https://www.gnu.org/software/make/manual/html_node/index.html) and [tox](https://tox.readthedocs.io). +[PyEnv](https://github.com/pyenv/pyenv) may also come in handy so tests can be run against various Python versions. + +Integration tests run against an instance of Mountebank running in Docker. + +Currently, the `Makefile` targets use Python 3.8 and 3.11 via tox, so a quick-start setup could be: + +```sh +brew install pyenv colima docker +versions=(3.7 3.11) +for v in "${versions[@]}"; do pyenv install $v -s; done +pyenv local 3.11 3.7 +pip install tox tox-pyenv +colima start +``` + +In order to run `make test`, you'll also need to have Mountebank installed locally: + +```sh +npm install mountebank@2.6 --production +``` + +(`mbtest` is tested against Mountebank versions back as far as 1.16, but obviously only features supported by the Mountebank version you're using will work.) + +After that, you should be ready to roll; running `make test` will let you know if your setup is correct. + +Running `make precommit` tells you if you're OK to commit. For more options, run: + + make help + +## Releasing + +Requires [hub](https://hub.github.com/), [setuptools](https://setuptools.readthedocs.io), +[wheel](https://github.com/pypa/wheel) and [twine](https://twine.readthedocs.io). To release version `n.n.n`, first +update the version number in `setup.py`, then: + +```sh +version="n.n.n" # Needs to match new version number in setup.py. +git checkout -b "release-$version" +make precommit && git commit -am"Release $version" && git push --set-upstream origin "release-$version" # If not already all pushed, which it should be. +hub release create "V$version" -t"release-$version" -m"Version $version" +python setup.py sdist bdist_wheel +twine upload dist/*$version* +git checkout master +git merge "release-$version" +git push +``` + + +%package -n python3-mbtest +Summary: Python wrapper & utils for the Mountebank over the wire test double tool. +Provides: python-mbtest +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-mbtest +# mbtest + +Opinionated Python wrapper & utils for the [Mountebank](https://www.mbtest.org/) over the wire test double tool. + +Includes [pytest](https://pytest.org) fixture and [PyHamcrest](https://pyhamcrest.readthedocs.io) matchers. + +[![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/) +[![Continuous Integration](https://github.com/brunns/mbtest/workflows/Continuous%20Integration/badge.svg)](https://github.com/brunns/mbtest/actions) +[![Python Versions](https://img.shields.io/pypi/pyversions/mbtest.svg?logo=python)](https://pypi.org/project/mbtest/) +[![Licence](https://img.shields.io/github/license/brunns/mbtest.svg)](https://github.com/brunns/mbtest/blob/master/LICENSE) +[![GitHub all releases](https://img.shields.io/github/downloads/brunns/mbtest/total.svg?logo=github)](https://github.com/brunns/mbtest/releases/) +[![GitHub forks](https://img.shields.io/github/forks/brunns/mbtest.svg?label=Fork&logo=github)](https://github.com/brunns/mbtest/network/members) +[![GitHub stars](https://img.shields.io/github/stars/brunns/mbtest.svg?label=Star&logo=github)](https://github.com/brunns/mbtest/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/brunns/mbtest.svg?label=Watch&logo=github)](https://github.com/brunns/mbtest/watchers/) +[![GitHub contributors](https://img.shields.io/github/contributors/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/issues/) +[![GitHub issues-closed](https://img.shields.io/github/issues-closed/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/issues?q=is%3Aissue+is%3Aclosed) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/pulls) +[![GitHub pull-requests closed](https://img.shields.io/github/issues-pr-closed/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aclosed) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/3b7c694664974d17a34e594c43af0c1b)](https://www.codacy.com/app/brunns/mbtest) +[![Codacy Coverage](https://api.codacy.com/project/badge/coverage/3b7c694664974d17a34e594c43af0c1b)](https://www.codacy.com/app/brunns/mbtest) +[![Documentation Status](https://readthedocs.org/projects/mbtest/badge/?version=latest)](https://mbtest.readthedocs.io/en/latest/?badge=latest) +[![Lines of Code](https://tokei.rs/b1/github/brunns/mbtest)](https://github.com/brunns/mbtest) + + +## Setup + +Install with pip: + + pip install mbtest + +(As usual, use of a [venv](https://docs.python.org/3/library/venv.html) or [virtualenv](https://virtualenv.pypa.io) is recommended.) Also requires [Mountebank](http://www.mbtest.org/) to have been installed: + + npm install mountebank@2.8 --omit=dev + +(Alternatively, you can attach to an instance of Mountebank running elsewhere, perhaps [in docker](https://mbtest.readthedocs.io/en/latest/guide/docker.html).) + +## Basic example + +```python +import requests +from hamcrest import assert_that +from brunns.matchers.response import is_response +from mbtest.matchers import had_request +from mbtest.imposters import Imposter, Predicate, Response, Stub + +def test_request_to_mock_server(mock_server): + # Set up mock server with required behavior + imposter = Imposter(Stub(Predicate(path="/test"), + Response(body="sausages"))) + + with mock_server(imposter): + # Make request to mock server - exercise code under test here + response = requests.get(f"{imposter.url}/test") + + assert_that("We got the expected response", + response, is_response().with_status_code(200).and_body("sausages")) + assert_that("The mock server recorded the request", + imposter, had_request().with_path("/test").and_method("GET")) +``` + +Needs a [pytest fixture](https://docs.pytest.org/en/latest/fixture.html), most easily defined in [`conftest.py`](https://docs.pytest.org/en/latest/how-to/fixtures.html#scope-sharing-fixtures-across-classes-modules-packages-or-session): + +```python +import pytest +from mbtest import server + +@pytest.fixture(scope="session") +def mock_server(request): + return server.mock_server(request) +``` + +This will take care of starting and stopping the Mountebank server for you. Examples of more complex predicates can be +found in the [integration tests](https://github.com/brunns/mbtest/tree/master/tests/integration/). + +See the [Documentation](https://mbtest.readthedocs.io/) for more. + + +## Contributing + +Requires [make](https://www.gnu.org/software/make/manual/html_node/index.html) and [tox](https://tox.readthedocs.io). +[PyEnv](https://github.com/pyenv/pyenv) may also come in handy so tests can be run against various Python versions. + +Integration tests run against an instance of Mountebank running in Docker. + +Currently, the `Makefile` targets use Python 3.8 and 3.11 via tox, so a quick-start setup could be: + +```sh +brew install pyenv colima docker +versions=(3.7 3.11) +for v in "${versions[@]}"; do pyenv install $v -s; done +pyenv local 3.11 3.7 +pip install tox tox-pyenv +colima start +``` + +In order to run `make test`, you'll also need to have Mountebank installed locally: + +```sh +npm install mountebank@2.6 --production +``` + +(`mbtest` is tested against Mountebank versions back as far as 1.16, but obviously only features supported by the Mountebank version you're using will work.) + +After that, you should be ready to roll; running `make test` will let you know if your setup is correct. + +Running `make precommit` tells you if you're OK to commit. For more options, run: + + make help + +## Releasing + +Requires [hub](https://hub.github.com/), [setuptools](https://setuptools.readthedocs.io), +[wheel](https://github.com/pypa/wheel) and [twine](https://twine.readthedocs.io). To release version `n.n.n`, first +update the version number in `setup.py`, then: + +```sh +version="n.n.n" # Needs to match new version number in setup.py. +git checkout -b "release-$version" +make precommit && git commit -am"Release $version" && git push --set-upstream origin "release-$version" # If not already all pushed, which it should be. +hub release create "V$version" -t"release-$version" -m"Version $version" +python setup.py sdist bdist_wheel +twine upload dist/*$version* +git checkout master +git merge "release-$version" +git push +``` + + +%package help +Summary: Development documents and examples for mbtest +Provides: python3-mbtest-doc +%description help +# mbtest + +Opinionated Python wrapper & utils for the [Mountebank](https://www.mbtest.org/) over the wire test double tool. + +Includes [pytest](https://pytest.org) fixture and [PyHamcrest](https://pyhamcrest.readthedocs.io) matchers. + +[![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/) +[![Continuous Integration](https://github.com/brunns/mbtest/workflows/Continuous%20Integration/badge.svg)](https://github.com/brunns/mbtest/actions) +[![Python Versions](https://img.shields.io/pypi/pyversions/mbtest.svg?logo=python)](https://pypi.org/project/mbtest/) +[![Licence](https://img.shields.io/github/license/brunns/mbtest.svg)](https://github.com/brunns/mbtest/blob/master/LICENSE) +[![GitHub all releases](https://img.shields.io/github/downloads/brunns/mbtest/total.svg?logo=github)](https://github.com/brunns/mbtest/releases/) +[![GitHub forks](https://img.shields.io/github/forks/brunns/mbtest.svg?label=Fork&logo=github)](https://github.com/brunns/mbtest/network/members) +[![GitHub stars](https://img.shields.io/github/stars/brunns/mbtest.svg?label=Star&logo=github)](https://github.com/brunns/mbtest/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/brunns/mbtest.svg?label=Watch&logo=github)](https://github.com/brunns/mbtest/watchers/) +[![GitHub contributors](https://img.shields.io/github/contributors/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/issues/) +[![GitHub issues-closed](https://img.shields.io/github/issues-closed/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/issues?q=is%3Aissue+is%3Aclosed) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/pulls) +[![GitHub pull-requests closed](https://img.shields.io/github/issues-pr-closed/brunns/mbtest.svg?logo=github)](https://github.com/brunns/mbtest/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aclosed) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/3b7c694664974d17a34e594c43af0c1b)](https://www.codacy.com/app/brunns/mbtest) +[![Codacy Coverage](https://api.codacy.com/project/badge/coverage/3b7c694664974d17a34e594c43af0c1b)](https://www.codacy.com/app/brunns/mbtest) +[![Documentation Status](https://readthedocs.org/projects/mbtest/badge/?version=latest)](https://mbtest.readthedocs.io/en/latest/?badge=latest) +[![Lines of Code](https://tokei.rs/b1/github/brunns/mbtest)](https://github.com/brunns/mbtest) + + +## Setup + +Install with pip: + + pip install mbtest + +(As usual, use of a [venv](https://docs.python.org/3/library/venv.html) or [virtualenv](https://virtualenv.pypa.io) is recommended.) Also requires [Mountebank](http://www.mbtest.org/) to have been installed: + + npm install mountebank@2.8 --omit=dev + +(Alternatively, you can attach to an instance of Mountebank running elsewhere, perhaps [in docker](https://mbtest.readthedocs.io/en/latest/guide/docker.html).) + +## Basic example + +```python +import requests +from hamcrest import assert_that +from brunns.matchers.response import is_response +from mbtest.matchers import had_request +from mbtest.imposters import Imposter, Predicate, Response, Stub + +def test_request_to_mock_server(mock_server): + # Set up mock server with required behavior + imposter = Imposter(Stub(Predicate(path="/test"), + Response(body="sausages"))) + + with mock_server(imposter): + # Make request to mock server - exercise code under test here + response = requests.get(f"{imposter.url}/test") + + assert_that("We got the expected response", + response, is_response().with_status_code(200).and_body("sausages")) + assert_that("The mock server recorded the request", + imposter, had_request().with_path("/test").and_method("GET")) +``` + +Needs a [pytest fixture](https://docs.pytest.org/en/latest/fixture.html), most easily defined in [`conftest.py`](https://docs.pytest.org/en/latest/how-to/fixtures.html#scope-sharing-fixtures-across-classes-modules-packages-or-session): + +```python +import pytest +from mbtest import server + +@pytest.fixture(scope="session") +def mock_server(request): + return server.mock_server(request) +``` + +This will take care of starting and stopping the Mountebank server for you. Examples of more complex predicates can be +found in the [integration tests](https://github.com/brunns/mbtest/tree/master/tests/integration/). + +See the [Documentation](https://mbtest.readthedocs.io/) for more. + + +## Contributing + +Requires [make](https://www.gnu.org/software/make/manual/html_node/index.html) and [tox](https://tox.readthedocs.io). +[PyEnv](https://github.com/pyenv/pyenv) may also come in handy so tests can be run against various Python versions. + +Integration tests run against an instance of Mountebank running in Docker. + +Currently, the `Makefile` targets use Python 3.8 and 3.11 via tox, so a quick-start setup could be: + +```sh +brew install pyenv colima docker +versions=(3.7 3.11) +for v in "${versions[@]}"; do pyenv install $v -s; done +pyenv local 3.11 3.7 +pip install tox tox-pyenv +colima start +``` + +In order to run `make test`, you'll also need to have Mountebank installed locally: + +```sh +npm install mountebank@2.6 --production +``` + +(`mbtest` is tested against Mountebank versions back as far as 1.16, but obviously only features supported by the Mountebank version you're using will work.) + +After that, you should be ready to roll; running `make test` will let you know if your setup is correct. + +Running `make precommit` tells you if you're OK to commit. For more options, run: + + make help + +## Releasing + +Requires [hub](https://hub.github.com/), [setuptools](https://setuptools.readthedocs.io), +[wheel](https://github.com/pypa/wheel) and [twine](https://twine.readthedocs.io). To release version `n.n.n`, first +update the version number in `setup.py`, then: + +```sh +version="n.n.n" # Needs to match new version number in setup.py. +git checkout -b "release-$version" +make precommit && git commit -am"Release $version" && git push --set-upstream origin "release-$version" # If not already all pushed, which it should be. +hub release create "V$version" -t"release-$version" -m"Version $version" +python setup.py sdist bdist_wheel +twine upload dist/*$version* +git checkout master +git merge "release-$version" +git push +``` + + +%prep +%autosetup -n mbtest-2.11.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-mbtest -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 10 2023 Python_Bot - 2.11.0-1 +- Package Spec generated diff --git a/sources b/sources new file mode 100644 index 0000000..5ccd87b --- /dev/null +++ b/sources @@ -0,0 +1 @@ +314dd963b816c533797108b5bcc05a65 mbtest-2.11.0.tar.gz -- cgit v1.2.3