diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-04-10 16:22:20 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-04-10 16:22:20 +0000 |
| commit | 20ff3dff954613411ce4e7f25df01b6be230494d (patch) | |
| tree | 50bf7ef8c8beffb93169ab33aab17e4e632ff79b | |
| parent | 9dcc70868efc9b7317356452572974fc0c6165cb (diff) | |
automatic import of python-pytest-socket
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-pytest-socket.spec | 346 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 348 insertions, 0 deletions
@@ -0,0 +1 @@ +/pytest_socket-0.6.0.tar.gz diff --git a/python-pytest-socket.spec b/python-pytest-socket.spec new file mode 100644 index 0000000..67f7a5f --- /dev/null +++ b/python-pytest-socket.spec @@ -0,0 +1,346 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pytest-socket +Version: 0.6.0 +Release: 1 +Summary: Pytest Plugin to disable socket calls during tests +License: MIT +URL: https://pypi.org/project/pytest-socket/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/03/be/908339cd5734b4fc2e12c8f2c30b1d0d2e032db8e85807028cea4ec15229/pytest_socket-0.6.0.tar.gz +BuildArch: noarch + +Requires: python3-pytest + +%description +## Features +- Disables all network calls flowing through Python\'s `socket` interface. +## Requirements +- [Pytest](https://github.com/pytest-dev/pytest) 3.6.3 or greater +## Installation +You can install `pytest-socket` via [pip](https://pypi.python.org/pypi/pip/) +from [PyPI](https://pypi.python.org/pypi): +```console +$ pip install pytest-socket +``` +or add to your `pyproject.toml` for [poetry](https://python-poetry.org/): +```ini +[tool.poetry.dev-dependencies] +pytest-socket = "*" +``` +## Usage +Run `pytest --disable-socket`, tests should fail on any access to `socket` or +libraries using socket with a `SocketBlockedError`. +To add this flag as the default behavior, add this section to your +[`pytest.ini`](https://docs.pytest.org/en/6.2.x/customize.html#pytest-ini): +```ini +[pytest] +addopts = --disable-socket +``` +or add this to your [`setup.cfg`](https://docs.pytest.org/en/6.2.x/customize.html#setup-cfg): +```ini +[tool:pytest] +addopts = --disable-socket +``` +or update your [`conftest.py`](https://docs.pytest.org/en/6.2.x/writing_plugins.html#conftest-py-plugins) to include: +```python +from pytest_socket import disable_socket +def pytest_runtest_setup(): + disable_socket() +``` +To enable Unix sockets during the test run (e.g. for async), add this option: +```ini +[pytest] +addopts = --disable-socket --allow-unix-socket +``` +To enable specific tests use of `socket`, pass in the fixture to the test or +use a marker: +```python +def test_explicitly_enable_socket(socket_enabled): + assert socket.socket(socket.AF_INET, socket.SOCK_STREAM) +@pytest.mark.enable_socket +def test_explicitly_enable_socket_with_mark(): + assert socket.socket(socket.AF_INET, socket.SOCK_STREAM) +``` +To allow only specific hosts per-test: +```python +@pytest.mark.allow_hosts(['127.0.0.1']) +def test_explicitly_enable_socket_with_mark(): + assert socket.socket.connect(('127.0.0.1', 80)) +``` +or for whole test run +```ini +[pytest] +addopts = --allow-hosts=127.0.0.1,127.0.1.1 +``` +### Frequently Asked Questions +Q: Why is network access disabled in some of my tests but not others? +A: pytest's default fixture scope is "function", which `socket_enabled` uses. +If you create another fixture that creates a socket usage that has a "higher" +instantiation order, such as at the module/class/session, then the higher order +fixture will be resolved first, and won't be disabled during the tests. +Read more in [this excellent example](https://github.com/miketheman/pytest-socket/issues/45#issue-679835420) +and more about [pytest fixture order here](https://docs.pytest.org/en/stable/fixture.html#fixture-instantiation-order). +This behavior may change in the future, as we learn more about pytest +fixture order, and what users expect to happen. +## Contributing +Contributions are very welcome. Tests can be run with +[pytest](https://github.com/pytest-dev/pytest), please ensure the +coverage at least stays the same before you submit a pull request. +## License +Distributed under the terms of the +[MIT](http://opensource.org/licenses/MIT) license, "pytest-socket" is +free and open source software +[](https://app.fossa.io/projects/git%2Bgithub.com%2Fmiketheman%2Fpytest-socket?ref=badge_large) +## Issues +If you encounter any problems, please [file an issue](https://github.com/miketheman/pytest-socket/issues) +along with a detailed description. +## References +This [Pytest](https://github.com/pytest-dev/pytest) plugin was generated with +[Cookiecutter](https://github.com/audreyr/cookiecutter) along with +[\@hackebrot](https://github.com/hackebrot)\'s +[Cookiecutter-pytest-plugin](https://github.com/pytest-dev/cookiecutter-pytest-plugin) +template. +This plugin came about due to the efforts by +[\@hangtwenty](https://github.com/hangtwenty) solving a [StackOverflow +question](https://stackoverflow.com/a/30064664), then converted into a +pytest plugin by [\@miketheman](https://github.com/miketheman). + +%package -n python3-pytest-socket +Summary: Pytest Plugin to disable socket calls during tests +Provides: python-pytest-socket +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pytest-socket +## Features +- Disables all network calls flowing through Python\'s `socket` interface. +## Requirements +- [Pytest](https://github.com/pytest-dev/pytest) 3.6.3 or greater +## Installation +You can install `pytest-socket` via [pip](https://pypi.python.org/pypi/pip/) +from [PyPI](https://pypi.python.org/pypi): +```console +$ pip install pytest-socket +``` +or add to your `pyproject.toml` for [poetry](https://python-poetry.org/): +```ini +[tool.poetry.dev-dependencies] +pytest-socket = "*" +``` +## Usage +Run `pytest --disable-socket`, tests should fail on any access to `socket` or +libraries using socket with a `SocketBlockedError`. +To add this flag as the default behavior, add this section to your +[`pytest.ini`](https://docs.pytest.org/en/6.2.x/customize.html#pytest-ini): +```ini +[pytest] +addopts = --disable-socket +``` +or add this to your [`setup.cfg`](https://docs.pytest.org/en/6.2.x/customize.html#setup-cfg): +```ini +[tool:pytest] +addopts = --disable-socket +``` +or update your [`conftest.py`](https://docs.pytest.org/en/6.2.x/writing_plugins.html#conftest-py-plugins) to include: +```python +from pytest_socket import disable_socket +def pytest_runtest_setup(): + disable_socket() +``` +To enable Unix sockets during the test run (e.g. for async), add this option: +```ini +[pytest] +addopts = --disable-socket --allow-unix-socket +``` +To enable specific tests use of `socket`, pass in the fixture to the test or +use a marker: +```python +def test_explicitly_enable_socket(socket_enabled): + assert socket.socket(socket.AF_INET, socket.SOCK_STREAM) +@pytest.mark.enable_socket +def test_explicitly_enable_socket_with_mark(): + assert socket.socket(socket.AF_INET, socket.SOCK_STREAM) +``` +To allow only specific hosts per-test: +```python +@pytest.mark.allow_hosts(['127.0.0.1']) +def test_explicitly_enable_socket_with_mark(): + assert socket.socket.connect(('127.0.0.1', 80)) +``` +or for whole test run +```ini +[pytest] +addopts = --allow-hosts=127.0.0.1,127.0.1.1 +``` +### Frequently Asked Questions +Q: Why is network access disabled in some of my tests but not others? +A: pytest's default fixture scope is "function", which `socket_enabled` uses. +If you create another fixture that creates a socket usage that has a "higher" +instantiation order, such as at the module/class/session, then the higher order +fixture will be resolved first, and won't be disabled during the tests. +Read more in [this excellent example](https://github.com/miketheman/pytest-socket/issues/45#issue-679835420) +and more about [pytest fixture order here](https://docs.pytest.org/en/stable/fixture.html#fixture-instantiation-order). +This behavior may change in the future, as we learn more about pytest +fixture order, and what users expect to happen. +## Contributing +Contributions are very welcome. Tests can be run with +[pytest](https://github.com/pytest-dev/pytest), please ensure the +coverage at least stays the same before you submit a pull request. +## License +Distributed under the terms of the +[MIT](http://opensource.org/licenses/MIT) license, "pytest-socket" is +free and open source software +[](https://app.fossa.io/projects/git%2Bgithub.com%2Fmiketheman%2Fpytest-socket?ref=badge_large) +## Issues +If you encounter any problems, please [file an issue](https://github.com/miketheman/pytest-socket/issues) +along with a detailed description. +## References +This [Pytest](https://github.com/pytest-dev/pytest) plugin was generated with +[Cookiecutter](https://github.com/audreyr/cookiecutter) along with +[\@hackebrot](https://github.com/hackebrot)\'s +[Cookiecutter-pytest-plugin](https://github.com/pytest-dev/cookiecutter-pytest-plugin) +template. +This plugin came about due to the efforts by +[\@hangtwenty](https://github.com/hangtwenty) solving a [StackOverflow +question](https://stackoverflow.com/a/30064664), then converted into a +pytest plugin by [\@miketheman](https://github.com/miketheman). + +%package help +Summary: Development documents and examples for pytest-socket +Provides: python3-pytest-socket-doc +%description help +## Features +- Disables all network calls flowing through Python\'s `socket` interface. +## Requirements +- [Pytest](https://github.com/pytest-dev/pytest) 3.6.3 or greater +## Installation +You can install `pytest-socket` via [pip](https://pypi.python.org/pypi/pip/) +from [PyPI](https://pypi.python.org/pypi): +```console +$ pip install pytest-socket +``` +or add to your `pyproject.toml` for [poetry](https://python-poetry.org/): +```ini +[tool.poetry.dev-dependencies] +pytest-socket = "*" +``` +## Usage +Run `pytest --disable-socket`, tests should fail on any access to `socket` or +libraries using socket with a `SocketBlockedError`. +To add this flag as the default behavior, add this section to your +[`pytest.ini`](https://docs.pytest.org/en/6.2.x/customize.html#pytest-ini): +```ini +[pytest] +addopts = --disable-socket +``` +or add this to your [`setup.cfg`](https://docs.pytest.org/en/6.2.x/customize.html#setup-cfg): +```ini +[tool:pytest] +addopts = --disable-socket +``` +or update your [`conftest.py`](https://docs.pytest.org/en/6.2.x/writing_plugins.html#conftest-py-plugins) to include: +```python +from pytest_socket import disable_socket +def pytest_runtest_setup(): + disable_socket() +``` +To enable Unix sockets during the test run (e.g. for async), add this option: +```ini +[pytest] +addopts = --disable-socket --allow-unix-socket +``` +To enable specific tests use of `socket`, pass in the fixture to the test or +use a marker: +```python +def test_explicitly_enable_socket(socket_enabled): + assert socket.socket(socket.AF_INET, socket.SOCK_STREAM) +@pytest.mark.enable_socket +def test_explicitly_enable_socket_with_mark(): + assert socket.socket(socket.AF_INET, socket.SOCK_STREAM) +``` +To allow only specific hosts per-test: +```python +@pytest.mark.allow_hosts(['127.0.0.1']) +def test_explicitly_enable_socket_with_mark(): + assert socket.socket.connect(('127.0.0.1', 80)) +``` +or for whole test run +```ini +[pytest] +addopts = --allow-hosts=127.0.0.1,127.0.1.1 +``` +### Frequently Asked Questions +Q: Why is network access disabled in some of my tests but not others? +A: pytest's default fixture scope is "function", which `socket_enabled` uses. +If you create another fixture that creates a socket usage that has a "higher" +instantiation order, such as at the module/class/session, then the higher order +fixture will be resolved first, and won't be disabled during the tests. +Read more in [this excellent example](https://github.com/miketheman/pytest-socket/issues/45#issue-679835420) +and more about [pytest fixture order here](https://docs.pytest.org/en/stable/fixture.html#fixture-instantiation-order). +This behavior may change in the future, as we learn more about pytest +fixture order, and what users expect to happen. +## Contributing +Contributions are very welcome. Tests can be run with +[pytest](https://github.com/pytest-dev/pytest), please ensure the +coverage at least stays the same before you submit a pull request. +## License +Distributed under the terms of the +[MIT](http://opensource.org/licenses/MIT) license, "pytest-socket" is +free and open source software +[](https://app.fossa.io/projects/git%2Bgithub.com%2Fmiketheman%2Fpytest-socket?ref=badge_large) +## Issues +If you encounter any problems, please [file an issue](https://github.com/miketheman/pytest-socket/issues) +along with a detailed description. +## References +This [Pytest](https://github.com/pytest-dev/pytest) plugin was generated with +[Cookiecutter](https://github.com/audreyr/cookiecutter) along with +[\@hackebrot](https://github.com/hackebrot)\'s +[Cookiecutter-pytest-plugin](https://github.com/pytest-dev/cookiecutter-pytest-plugin) +template. +This plugin came about due to the efforts by +[\@hangtwenty](https://github.com/hangtwenty) solving a [StackOverflow +question](https://stackoverflow.com/a/30064664), then converted into a +pytest plugin by [\@miketheman](https://github.com/miketheman). + +%prep +%autosetup -n pytest-socket-0.6.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-pytest-socket -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 0.6.0-1 +- Package Spec generated @@ -0,0 +1 @@ +3f5e8cfdb599f5892d78071b97f6e181 pytest_socket-0.6.0.tar.gz |
