summaryrefslogtreecommitdiff
path: root/python-pytest-docker.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-pytest-docker.spec')
-rw-r--r--python-pytest-docker.spec456
1 files changed, 456 insertions, 0 deletions
diff --git a/python-pytest-docker.spec b/python-pytest-docker.spec
new file mode 100644
index 0000000..0e83b96
--- /dev/null
+++ b/python-pytest-docker.spec
@@ -0,0 +1,456 @@
+%global _empty_manifest_terminate_build 0
+Name: python-pytest-docker
+Version: 1.0.1
+Release: 1
+Summary: Simple pytest fixtures for Docker and docker-compose based tests
+License: MIT
+URL: https://github.com/avast/pytest-docker
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/c8/6f/1f495e46da55840eba62cc32b90bac3ee2dba046fedee4e02e4bd72c5877/pytest-docker-1.0.1.tar.gz
+BuildArch: noarch
+
+Requires: python3-pytest
+Requires: python3-attrs
+Requires: python3-docker-compose
+Requires: python3-requests
+Requires: python3-pytest-pylint
+Requires: python3-pytest-pycodestyle
+
+%description
+[![PyPI version](https://img.shields.io/pypi/v/pytest-docker?color=green)](https://pypi.org/project/pytest-docker/)
+[![Build Status](https://github.com/avast/pytest-docker/actions/workflows/tests.yaml/badge.svg?branch=master)](https://github.com/avast/pytest-docker/actions/workflows/tests.yaml)
+[![Python versions](https://img.shields.io/pypi/pyversions/pytest-docker)](https://pypi.org/project/pytest-docker/)
+[![Code style](https://img.shields.io/badge/formatted%20with-black-black)](https://github.com/psf/black)
+# Description
+Simple [pytest](http://doc.pytest.org/) fixtures that help you write integration
+tests with Docker and [docker-compose](https://docs.docker.com/compose/).
+Specify all necessary containers in a `docker-compose.yml` file and and
+`pytest-docker` will spin them up for the duration of your tests.
+This package is tested with Python versions `3.6`, `3.7`, `3.8` and
+`3.9`, and `pytest` version 4, 5 and 6. Python 2 is not supported.
+`pytest-docker` was originally created by André Caron.
+# Installation
+Install `pytest-docker` with `pip` or add it to your test requirements. It is
+recommended to install `docker-compose` python package directly in your
+environment to ensure that it is available during tests. This will prevent
+potential dependency conflicts that can occur when the system wide
+`docker-compose` is used in tests.
+The default behavior is not to install `docker-compose` with `pytest-docker`. If you
+want to, you install `pytest-docker` with the `docker-compose-v1`
+extra. You can use the following command:
+```
+pip install pytest-docker[docker-compose-v1]
+```
+## Docker Compose v2 compatiblity
+`pytest-docker` will work with Docker Compose v2 out of the box if
+[`compose-switch`](https://github.com/docker/compose-switch)
+is installed.
+If you want to use the real Docker Compose v2, it has to be installed
+system wide ([more information](https://github.com/docker/compose#linux))
+and you have to modify the [`docker-compose-command`](#docker_compose_command)
+fixture (this behavior might change in the future versions).
+# Usage
+Here is an example of a test that depends on a HTTP service.
+With a `docker-compose.yml` file like this (using the
+[httpbin](https://httpbin.org/) service):
+```yaml
+version: '2'
+services:
+ httpbin:
+ image: "kennethreitz/httpbin"
+ ports:
+ - "8000:80"
+```
+You can write a test like this:
+```python
+import pytest
+import requests
+from requests.exceptions import ConnectionError
+def is_responsive(url):
+ try:
+ response = requests.get(url)
+ if response.status_code == 200:
+ return True
+ except ConnectionError:
+ return False
+@pytest.fixture(scope="session")
+def http_service(docker_ip, docker_services):
+ """Ensure that HTTP service is up and responsive."""
+ # `port_for` takes a container port and returns the corresponding host port
+ port = docker_services.port_for("httpbin", 80)
+ url = "http://{}:{}".format(docker_ip, port)
+ docker_services.wait_until_responsive(
+ timeout=30.0, pause=0.1, check=lambda: is_responsive(url)
+ )
+ return url
+def test_status_code(http_service):
+ status = 418
+ response = requests.get(http_service + "/status/{}".format(status))
+ assert response.status_code == status
+```
+By default this plugin will try to open `docker-compose.yml` in your
+`tests` directory. If you need to use a custom location, override the
+`docker_compose_file` fixture inside your `conftest.py` file:
+```python
+import os
+import pytest
+@pytest.fixture(scope="session")
+def docker_compose_file(pytestconfig):
+ return os.path.join(str(pytestconfig.rootdir), "mycustomdir", "docker-compose.yml")
+```
+## Available fixtures
+All fixtures have `session` scope.
+### `docker_ip`
+Determine the IP address for TCP connections to Docker containers.
+### `docker_compose_file`
+Get an absolute path to the `docker-compose.yml` file. Override this fixture in
+your tests if you need a custom location.
+### `docker_compose_project_name`
+Generate a project name using the current process PID. Override this fixture in
+your tests if you need a particular project name.
+### `docker_services`
+Start all services from the docker compose file (`docker-compose up`).
+After test are finished, shutdown all services (`docker-compose down`).
+### `docker_compose_command`
+Docker Compose command to use to execute Dockers. Default is to use
+Docker Compose v1 (command is `docker-compose`). If you want to use
+Docker Compose v2, change this fixture to return `docker compose`.
+### `docker_setup`
+Get the docker_compose command to be executed for test spawn actions.
+Override this fixture in your tests if you need to change spawn actions.
+Returning anything that would evaluate to False will skip this command.
+### `docker_cleanup`
+Get the docker_compose command to be executed for test clean-up actions.
+Override this fixture in your tests if you need to change clean-up actions.
+Returning anything that would evaluate to False will skip this command.
+# Development
+Use of a virtual environment is recommended. See the
+[venv](https://docs.python.org/3/library/venv.html) package for more
+information.
+First, install `pytest-docker` and its test dependencies:
+ pip install -e ".[tests]"
+Run tests with
+ pytest -c setup.cfg
+to make sure that the correct configuration is used. This is also how tests are
+run in CI.
+Use [black](https://pypi.org/project/black/) with default settings for
+formatting. You can also use `pylint` with `setup.cfg` as the configuration
+file.
+# Contributing
+This pytest plug-in and its source code are made available to you under a MIT
+license. It is safe to use in commercial and closed-source applications. Read
+the license for details!
+Found a bug? Think a new feature would make this plug-in more practical? We
+welcome issues and pull requests!
+When creating a pull request, be sure to follow this projects conventions (see
+above).
+
+%package -n python3-pytest-docker
+Summary: Simple pytest fixtures for Docker and docker-compose based tests
+Provides: python-pytest-docker
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-pytest-docker
+[![PyPI version](https://img.shields.io/pypi/v/pytest-docker?color=green)](https://pypi.org/project/pytest-docker/)
+[![Build Status](https://github.com/avast/pytest-docker/actions/workflows/tests.yaml/badge.svg?branch=master)](https://github.com/avast/pytest-docker/actions/workflows/tests.yaml)
+[![Python versions](https://img.shields.io/pypi/pyversions/pytest-docker)](https://pypi.org/project/pytest-docker/)
+[![Code style](https://img.shields.io/badge/formatted%20with-black-black)](https://github.com/psf/black)
+# Description
+Simple [pytest](http://doc.pytest.org/) fixtures that help you write integration
+tests with Docker and [docker-compose](https://docs.docker.com/compose/).
+Specify all necessary containers in a `docker-compose.yml` file and and
+`pytest-docker` will spin them up for the duration of your tests.
+This package is tested with Python versions `3.6`, `3.7`, `3.8` and
+`3.9`, and `pytest` version 4, 5 and 6. Python 2 is not supported.
+`pytest-docker` was originally created by André Caron.
+# Installation
+Install `pytest-docker` with `pip` or add it to your test requirements. It is
+recommended to install `docker-compose` python package directly in your
+environment to ensure that it is available during tests. This will prevent
+potential dependency conflicts that can occur when the system wide
+`docker-compose` is used in tests.
+The default behavior is not to install `docker-compose` with `pytest-docker`. If you
+want to, you install `pytest-docker` with the `docker-compose-v1`
+extra. You can use the following command:
+```
+pip install pytest-docker[docker-compose-v1]
+```
+## Docker Compose v2 compatiblity
+`pytest-docker` will work with Docker Compose v2 out of the box if
+[`compose-switch`](https://github.com/docker/compose-switch)
+is installed.
+If you want to use the real Docker Compose v2, it has to be installed
+system wide ([more information](https://github.com/docker/compose#linux))
+and you have to modify the [`docker-compose-command`](#docker_compose_command)
+fixture (this behavior might change in the future versions).
+# Usage
+Here is an example of a test that depends on a HTTP service.
+With a `docker-compose.yml` file like this (using the
+[httpbin](https://httpbin.org/) service):
+```yaml
+version: '2'
+services:
+ httpbin:
+ image: "kennethreitz/httpbin"
+ ports:
+ - "8000:80"
+```
+You can write a test like this:
+```python
+import pytest
+import requests
+from requests.exceptions import ConnectionError
+def is_responsive(url):
+ try:
+ response = requests.get(url)
+ if response.status_code == 200:
+ return True
+ except ConnectionError:
+ return False
+@pytest.fixture(scope="session")
+def http_service(docker_ip, docker_services):
+ """Ensure that HTTP service is up and responsive."""
+ # `port_for` takes a container port and returns the corresponding host port
+ port = docker_services.port_for("httpbin", 80)
+ url = "http://{}:{}".format(docker_ip, port)
+ docker_services.wait_until_responsive(
+ timeout=30.0, pause=0.1, check=lambda: is_responsive(url)
+ )
+ return url
+def test_status_code(http_service):
+ status = 418
+ response = requests.get(http_service + "/status/{}".format(status))
+ assert response.status_code == status
+```
+By default this plugin will try to open `docker-compose.yml` in your
+`tests` directory. If you need to use a custom location, override the
+`docker_compose_file` fixture inside your `conftest.py` file:
+```python
+import os
+import pytest
+@pytest.fixture(scope="session")
+def docker_compose_file(pytestconfig):
+ return os.path.join(str(pytestconfig.rootdir), "mycustomdir", "docker-compose.yml")
+```
+## Available fixtures
+All fixtures have `session` scope.
+### `docker_ip`
+Determine the IP address for TCP connections to Docker containers.
+### `docker_compose_file`
+Get an absolute path to the `docker-compose.yml` file. Override this fixture in
+your tests if you need a custom location.
+### `docker_compose_project_name`
+Generate a project name using the current process PID. Override this fixture in
+your tests if you need a particular project name.
+### `docker_services`
+Start all services from the docker compose file (`docker-compose up`).
+After test are finished, shutdown all services (`docker-compose down`).
+### `docker_compose_command`
+Docker Compose command to use to execute Dockers. Default is to use
+Docker Compose v1 (command is `docker-compose`). If you want to use
+Docker Compose v2, change this fixture to return `docker compose`.
+### `docker_setup`
+Get the docker_compose command to be executed for test spawn actions.
+Override this fixture in your tests if you need to change spawn actions.
+Returning anything that would evaluate to False will skip this command.
+### `docker_cleanup`
+Get the docker_compose command to be executed for test clean-up actions.
+Override this fixture in your tests if you need to change clean-up actions.
+Returning anything that would evaluate to False will skip this command.
+# Development
+Use of a virtual environment is recommended. See the
+[venv](https://docs.python.org/3/library/venv.html) package for more
+information.
+First, install `pytest-docker` and its test dependencies:
+ pip install -e ".[tests]"
+Run tests with
+ pytest -c setup.cfg
+to make sure that the correct configuration is used. This is also how tests are
+run in CI.
+Use [black](https://pypi.org/project/black/) with default settings for
+formatting. You can also use `pylint` with `setup.cfg` as the configuration
+file.
+# Contributing
+This pytest plug-in and its source code are made available to you under a MIT
+license. It is safe to use in commercial and closed-source applications. Read
+the license for details!
+Found a bug? Think a new feature would make this plug-in more practical? We
+welcome issues and pull requests!
+When creating a pull request, be sure to follow this projects conventions (see
+above).
+
+%package help
+Summary: Development documents and examples for pytest-docker
+Provides: python3-pytest-docker-doc
+%description help
+[![PyPI version](https://img.shields.io/pypi/v/pytest-docker?color=green)](https://pypi.org/project/pytest-docker/)
+[![Build Status](https://github.com/avast/pytest-docker/actions/workflows/tests.yaml/badge.svg?branch=master)](https://github.com/avast/pytest-docker/actions/workflows/tests.yaml)
+[![Python versions](https://img.shields.io/pypi/pyversions/pytest-docker)](https://pypi.org/project/pytest-docker/)
+[![Code style](https://img.shields.io/badge/formatted%20with-black-black)](https://github.com/psf/black)
+# Description
+Simple [pytest](http://doc.pytest.org/) fixtures that help you write integration
+tests with Docker and [docker-compose](https://docs.docker.com/compose/).
+Specify all necessary containers in a `docker-compose.yml` file and and
+`pytest-docker` will spin them up for the duration of your tests.
+This package is tested with Python versions `3.6`, `3.7`, `3.8` and
+`3.9`, and `pytest` version 4, 5 and 6. Python 2 is not supported.
+`pytest-docker` was originally created by André Caron.
+# Installation
+Install `pytest-docker` with `pip` or add it to your test requirements. It is
+recommended to install `docker-compose` python package directly in your
+environment to ensure that it is available during tests. This will prevent
+potential dependency conflicts that can occur when the system wide
+`docker-compose` is used in tests.
+The default behavior is not to install `docker-compose` with `pytest-docker`. If you
+want to, you install `pytest-docker` with the `docker-compose-v1`
+extra. You can use the following command:
+```
+pip install pytest-docker[docker-compose-v1]
+```
+## Docker Compose v2 compatiblity
+`pytest-docker` will work with Docker Compose v2 out of the box if
+[`compose-switch`](https://github.com/docker/compose-switch)
+is installed.
+If you want to use the real Docker Compose v2, it has to be installed
+system wide ([more information](https://github.com/docker/compose#linux))
+and you have to modify the [`docker-compose-command`](#docker_compose_command)
+fixture (this behavior might change in the future versions).
+# Usage
+Here is an example of a test that depends on a HTTP service.
+With a `docker-compose.yml` file like this (using the
+[httpbin](https://httpbin.org/) service):
+```yaml
+version: '2'
+services:
+ httpbin:
+ image: "kennethreitz/httpbin"
+ ports:
+ - "8000:80"
+```
+You can write a test like this:
+```python
+import pytest
+import requests
+from requests.exceptions import ConnectionError
+def is_responsive(url):
+ try:
+ response = requests.get(url)
+ if response.status_code == 200:
+ return True
+ except ConnectionError:
+ return False
+@pytest.fixture(scope="session")
+def http_service(docker_ip, docker_services):
+ """Ensure that HTTP service is up and responsive."""
+ # `port_for` takes a container port and returns the corresponding host port
+ port = docker_services.port_for("httpbin", 80)
+ url = "http://{}:{}".format(docker_ip, port)
+ docker_services.wait_until_responsive(
+ timeout=30.0, pause=0.1, check=lambda: is_responsive(url)
+ )
+ return url
+def test_status_code(http_service):
+ status = 418
+ response = requests.get(http_service + "/status/{}".format(status))
+ assert response.status_code == status
+```
+By default this plugin will try to open `docker-compose.yml` in your
+`tests` directory. If you need to use a custom location, override the
+`docker_compose_file` fixture inside your `conftest.py` file:
+```python
+import os
+import pytest
+@pytest.fixture(scope="session")
+def docker_compose_file(pytestconfig):
+ return os.path.join(str(pytestconfig.rootdir), "mycustomdir", "docker-compose.yml")
+```
+## Available fixtures
+All fixtures have `session` scope.
+### `docker_ip`
+Determine the IP address for TCP connections to Docker containers.
+### `docker_compose_file`
+Get an absolute path to the `docker-compose.yml` file. Override this fixture in
+your tests if you need a custom location.
+### `docker_compose_project_name`
+Generate a project name using the current process PID. Override this fixture in
+your tests if you need a particular project name.
+### `docker_services`
+Start all services from the docker compose file (`docker-compose up`).
+After test are finished, shutdown all services (`docker-compose down`).
+### `docker_compose_command`
+Docker Compose command to use to execute Dockers. Default is to use
+Docker Compose v1 (command is `docker-compose`). If you want to use
+Docker Compose v2, change this fixture to return `docker compose`.
+### `docker_setup`
+Get the docker_compose command to be executed for test spawn actions.
+Override this fixture in your tests if you need to change spawn actions.
+Returning anything that would evaluate to False will skip this command.
+### `docker_cleanup`
+Get the docker_compose command to be executed for test clean-up actions.
+Override this fixture in your tests if you need to change clean-up actions.
+Returning anything that would evaluate to False will skip this command.
+# Development
+Use of a virtual environment is recommended. See the
+[venv](https://docs.python.org/3/library/venv.html) package for more
+information.
+First, install `pytest-docker` and its test dependencies:
+ pip install -e ".[tests]"
+Run tests with
+ pytest -c setup.cfg
+to make sure that the correct configuration is used. This is also how tests are
+run in CI.
+Use [black](https://pypi.org/project/black/) with default settings for
+formatting. You can also use `pylint` with `setup.cfg` as the configuration
+file.
+# Contributing
+This pytest plug-in and its source code are made available to you under a MIT
+license. It is safe to use in commercial and closed-source applications. Read
+the license for details!
+Found a bug? Think a new feature would make this plug-in more practical? We
+welcome issues and pull requests!
+When creating a pull request, be sure to follow this projects conventions (see
+above).
+
+%prep
+%autosetup -n pytest-docker-1.0.1
+
+%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-docker -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0.1-1
+- Package Spec generated