summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-pytest-socket.spec346
-rw-r--r--sources1
3 files changed, 348 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..9957aab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
+[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fmiketheman%2Fpytest-socket.svg?type=large)](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
+[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fmiketheman%2Fpytest-socket.svg?type=large)](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
+[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fmiketheman%2Fpytest-socket.svg?type=large)](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
diff --git a/sources b/sources
new file mode 100644
index 0000000..bebc0e5
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+3f5e8cfdb599f5892d78071b97f6e181 pytest_socket-0.6.0.tar.gz