diff options
author | CoprDistGit <infra@openeuler.org> | 2023-04-11 00:05:43 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-04-11 00:05:43 +0000 |
commit | 1326412d4d50b6bf5b66301c9d233a7fc7ede772 (patch) | |
tree | 82510dc51450fb9b60a24293e6b2b58f735b3a4d /python-pytest-docker.spec | |
parent | fdd00cf7a361f90978872c485893eb7ca5124fc5 (diff) |
automatic import of python-pytest-docker
Diffstat (limited to 'python-pytest-docker.spec')
-rw-r--r-- | python-pytest-docker.spec | 456 |
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 +[](https://pypi.org/project/pytest-docker/) +[](https://github.com/avast/pytest-docker/actions/workflows/tests.yaml) +[](https://pypi.org/project/pytest-docker/) +[](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 +[](https://pypi.org/project/pytest-docker/) +[](https://github.com/avast/pytest-docker/actions/workflows/tests.yaml) +[](https://pypi.org/project/pytest-docker/) +[](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 +[](https://pypi.org/project/pytest-docker/) +[](https://github.com/avast/pytest-docker/actions/workflows/tests.yaml) +[](https://pypi.org/project/pytest-docker/) +[](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 |