summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-04-11 02:58:45 +0000
committerCoprDistGit <infra@openeuler.org>2023-04-11 02:58:45 +0000
commit95a7bb796480d931a196f9651a4c72cb2313444a (patch)
tree94688313a0b228bc36edcdc3acfe51cef742fd22
parenta2725aac59dd05fbfc0e271fd1000e0e51f23d3b (diff)
automatic import of python-pytest-kind
-rw-r--r--.gitignore1
-rw-r--r--python-pytest-kind.spec376
-rw-r--r--sources1
3 files changed, 378 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..79347b5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/pytest-kind-22.11.1.tar.gz
diff --git a/python-pytest-kind.spec b/python-pytest-kind.spec
new file mode 100644
index 0000000..b4a1622
--- /dev/null
+++ b/python-pytest-kind.spec
@@ -0,0 +1,376 @@
+%global _empty_manifest_terminate_build 0
+Name: python-pytest-kind
+Version: 22.11.1
+Release: 1
+Summary: Kubernetes test support with KIND for pytest
+License: GPL-3.0+
+URL: https://codeberg.org/hjacobs/pytest-kind
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/28/bc/5816716a372636e90251bbf81a2d51c2eb340dc77cb5e7237c1a455fa3f4/pytest-kind-22.11.1.tar.gz
+BuildArch: noarch
+
+Requires: python3-pykube-ng
+
+%description
+# pytest-kind
+
+[![Build Status](https://travis-ci.com/hjacobs/pytest-kind.svg?branch=master)](https://travis-ci.com/hjacobs/pytest-kind)
+[![PyPI](https://img.shields.io/pypi/v/pytest-kind)](https://pypi.org/project/pytest-kind/)
+![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pytest-kind)
+![License](https://img.shields.io/github/license/hjacobs/pytest-kind)
+![CalVer](https://img.shields.io/badge/calver-YY.MM.MICRO-22bfda.svg)
+
+Test your Python Kubernetes app/operator end-to-end with [kind](https://kind.sigs.k8s.io/) and [pytest](https://pytest.org).
+
+`pytest-kind` is a plugin for pytest which provides the `kind_cluster` fixture.
+The fixture will install kind 0.17.0, create a Kubernetes 1.25 cluster, and provide convenience functionality such as port forwarding.
+
+
+## Usage
+
+Install `pytest-kind` via pip or via [poetry](https://poetry.eustace.io/), e.g.:
+
+```
+poetry add --dev pytest-kind
+```
+
+Write your pytest functions and use the provided `kind_cluster` fixture, e.g.:
+
+```python
+def test_kubernetes_version(kind_cluster):
+ assert kind_cluster.api.version == ('1', '25')
+```
+
+To load your custom Docker image and apply deployment manifests:
+
+```python
+import requests
+from pykube import Pod
+
+def test_myapp(kind_cluster):
+ kind_cluster.load_docker_image("myapp")
+ kind_cluster.kubectl("apply", "-f", "deployment.yaml")
+ kind_cluster.kubectl("rollout", "status", "deployment/myapp")
+
+ # using Pykube to query pods
+ for pod in Pod.objects(kind_cluster.api).filter(selector="app=myapp"):
+ assert "Sucessfully started" in pod.logs()
+
+ with kind_cluster.port_forward("service/myapp", 80) as port:
+ r = requests.get(f"http://localhost:{port}/hello/world")
+ r.raise_for_status()
+ assert r.text == "Hello world!"
+```
+
+See the `examples` directory for sample projects and also check out [kube-web-view](https://codeberg.org/hjacobs/kube-web-view) which uses pytest-kind for its e2e tests.
+
+
+## KindCluster object
+
+The `kind_cluster` fixture is an instance of the KindCluster class with the following methods:
+
+* `load_docker_image(docker_image)`: load the specified Docker image into the kind cluster
+* `kubectl(*args)`: run the `kubectl` binary against the cluster with the specified arguments. Returns the process output as string.
+* `port_forward(service_or_pod_name, remote_port, *args)`: run "kubectl port-forward" for the given service/pod and return the (random) local port. To be used as context manager ("with" statement). Pass the namespace as additional args to kubectl via "-n", "mynamespace".
+
+KindCluster has the following attributes:
+
+* `name`: the kind cluster name
+* `kubeconfig_path`: the path to the Kubeconfig file to access the cluster
+* `kind_path`: path to the `kind` binary
+* `kubectl_path`: path to the `kubectl` binary
+* `api`: [pykube](https://pykube.readthedocs.io/) HTTPClient instance to access the cluster from Python
+
+You can also use KindCluster directly without pytest:
+
+```python
+from pytest_kind import KindCluster
+
+cluster = KindCluster("myclustername")
+cluster.create()
+cluster.kubectl("apply", "-f", "..")
+# ...
+cluster.delete()
+```
+
+
+## Pytest Options
+
+The kind cluster name can be set via the `--cluster-name` CLI option.
+
+The kind cluster is deleted after each pytest session, you can keep the cluster by passing `--keep-cluster` to pytest.
+
+Note that you can use the `PYTEST_ADDOPTS` environment variable to pass these options to pytest. This also works if you call pytest from a Makefile:
+
+```bash
+# for test debugging: don't delete the kind cluster
+PYTEST_ADDOPTS=--keep-cluster make test
+```
+
+
+## Notes
+
+* The `kind_cluster` fixture is session-scoped, i.e. the same cluster will be used across all test modules/functions.
+* The `kind` and `kubectl` binaries will be downloaded once to the local directory `./.pytest-kind/{cluster-name}/`. You can use them to interact with the cluster (e.g. when `--keep-cluster` is used).
+* Some cluster pods might not be ready immediately (e.g. kind's CoreDNS take a moment), add wait/poll functionality as required to make your tests predictable.
+
+
+%package -n python3-pytest-kind
+Summary: Kubernetes test support with KIND for pytest
+Provides: python-pytest-kind
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-pytest-kind
+# pytest-kind
+
+[![Build Status](https://travis-ci.com/hjacobs/pytest-kind.svg?branch=master)](https://travis-ci.com/hjacobs/pytest-kind)
+[![PyPI](https://img.shields.io/pypi/v/pytest-kind)](https://pypi.org/project/pytest-kind/)
+![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pytest-kind)
+![License](https://img.shields.io/github/license/hjacobs/pytest-kind)
+![CalVer](https://img.shields.io/badge/calver-YY.MM.MICRO-22bfda.svg)
+
+Test your Python Kubernetes app/operator end-to-end with [kind](https://kind.sigs.k8s.io/) and [pytest](https://pytest.org).
+
+`pytest-kind` is a plugin for pytest which provides the `kind_cluster` fixture.
+The fixture will install kind 0.17.0, create a Kubernetes 1.25 cluster, and provide convenience functionality such as port forwarding.
+
+
+## Usage
+
+Install `pytest-kind` via pip or via [poetry](https://poetry.eustace.io/), e.g.:
+
+```
+poetry add --dev pytest-kind
+```
+
+Write your pytest functions and use the provided `kind_cluster` fixture, e.g.:
+
+```python
+def test_kubernetes_version(kind_cluster):
+ assert kind_cluster.api.version == ('1', '25')
+```
+
+To load your custom Docker image and apply deployment manifests:
+
+```python
+import requests
+from pykube import Pod
+
+def test_myapp(kind_cluster):
+ kind_cluster.load_docker_image("myapp")
+ kind_cluster.kubectl("apply", "-f", "deployment.yaml")
+ kind_cluster.kubectl("rollout", "status", "deployment/myapp")
+
+ # using Pykube to query pods
+ for pod in Pod.objects(kind_cluster.api).filter(selector="app=myapp"):
+ assert "Sucessfully started" in pod.logs()
+
+ with kind_cluster.port_forward("service/myapp", 80) as port:
+ r = requests.get(f"http://localhost:{port}/hello/world")
+ r.raise_for_status()
+ assert r.text == "Hello world!"
+```
+
+See the `examples` directory for sample projects and also check out [kube-web-view](https://codeberg.org/hjacobs/kube-web-view) which uses pytest-kind for its e2e tests.
+
+
+## KindCluster object
+
+The `kind_cluster` fixture is an instance of the KindCluster class with the following methods:
+
+* `load_docker_image(docker_image)`: load the specified Docker image into the kind cluster
+* `kubectl(*args)`: run the `kubectl` binary against the cluster with the specified arguments. Returns the process output as string.
+* `port_forward(service_or_pod_name, remote_port, *args)`: run "kubectl port-forward" for the given service/pod and return the (random) local port. To be used as context manager ("with" statement). Pass the namespace as additional args to kubectl via "-n", "mynamespace".
+
+KindCluster has the following attributes:
+
+* `name`: the kind cluster name
+* `kubeconfig_path`: the path to the Kubeconfig file to access the cluster
+* `kind_path`: path to the `kind` binary
+* `kubectl_path`: path to the `kubectl` binary
+* `api`: [pykube](https://pykube.readthedocs.io/) HTTPClient instance to access the cluster from Python
+
+You can also use KindCluster directly without pytest:
+
+```python
+from pytest_kind import KindCluster
+
+cluster = KindCluster("myclustername")
+cluster.create()
+cluster.kubectl("apply", "-f", "..")
+# ...
+cluster.delete()
+```
+
+
+## Pytest Options
+
+The kind cluster name can be set via the `--cluster-name` CLI option.
+
+The kind cluster is deleted after each pytest session, you can keep the cluster by passing `--keep-cluster` to pytest.
+
+Note that you can use the `PYTEST_ADDOPTS` environment variable to pass these options to pytest. This also works if you call pytest from a Makefile:
+
+```bash
+# for test debugging: don't delete the kind cluster
+PYTEST_ADDOPTS=--keep-cluster make test
+```
+
+
+## Notes
+
+* The `kind_cluster` fixture is session-scoped, i.e. the same cluster will be used across all test modules/functions.
+* The `kind` and `kubectl` binaries will be downloaded once to the local directory `./.pytest-kind/{cluster-name}/`. You can use them to interact with the cluster (e.g. when `--keep-cluster` is used).
+* Some cluster pods might not be ready immediately (e.g. kind's CoreDNS take a moment), add wait/poll functionality as required to make your tests predictable.
+
+
+%package help
+Summary: Development documents and examples for pytest-kind
+Provides: python3-pytest-kind-doc
+%description help
+# pytest-kind
+
+[![Build Status](https://travis-ci.com/hjacobs/pytest-kind.svg?branch=master)](https://travis-ci.com/hjacobs/pytest-kind)
+[![PyPI](https://img.shields.io/pypi/v/pytest-kind)](https://pypi.org/project/pytest-kind/)
+![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pytest-kind)
+![License](https://img.shields.io/github/license/hjacobs/pytest-kind)
+![CalVer](https://img.shields.io/badge/calver-YY.MM.MICRO-22bfda.svg)
+
+Test your Python Kubernetes app/operator end-to-end with [kind](https://kind.sigs.k8s.io/) and [pytest](https://pytest.org).
+
+`pytest-kind` is a plugin for pytest which provides the `kind_cluster` fixture.
+The fixture will install kind 0.17.0, create a Kubernetes 1.25 cluster, and provide convenience functionality such as port forwarding.
+
+
+## Usage
+
+Install `pytest-kind` via pip or via [poetry](https://poetry.eustace.io/), e.g.:
+
+```
+poetry add --dev pytest-kind
+```
+
+Write your pytest functions and use the provided `kind_cluster` fixture, e.g.:
+
+```python
+def test_kubernetes_version(kind_cluster):
+ assert kind_cluster.api.version == ('1', '25')
+```
+
+To load your custom Docker image and apply deployment manifests:
+
+```python
+import requests
+from pykube import Pod
+
+def test_myapp(kind_cluster):
+ kind_cluster.load_docker_image("myapp")
+ kind_cluster.kubectl("apply", "-f", "deployment.yaml")
+ kind_cluster.kubectl("rollout", "status", "deployment/myapp")
+
+ # using Pykube to query pods
+ for pod in Pod.objects(kind_cluster.api).filter(selector="app=myapp"):
+ assert "Sucessfully started" in pod.logs()
+
+ with kind_cluster.port_forward("service/myapp", 80) as port:
+ r = requests.get(f"http://localhost:{port}/hello/world")
+ r.raise_for_status()
+ assert r.text == "Hello world!"
+```
+
+See the `examples` directory for sample projects and also check out [kube-web-view](https://codeberg.org/hjacobs/kube-web-view) which uses pytest-kind for its e2e tests.
+
+
+## KindCluster object
+
+The `kind_cluster` fixture is an instance of the KindCluster class with the following methods:
+
+* `load_docker_image(docker_image)`: load the specified Docker image into the kind cluster
+* `kubectl(*args)`: run the `kubectl` binary against the cluster with the specified arguments. Returns the process output as string.
+* `port_forward(service_or_pod_name, remote_port, *args)`: run "kubectl port-forward" for the given service/pod and return the (random) local port. To be used as context manager ("with" statement). Pass the namespace as additional args to kubectl via "-n", "mynamespace".
+
+KindCluster has the following attributes:
+
+* `name`: the kind cluster name
+* `kubeconfig_path`: the path to the Kubeconfig file to access the cluster
+* `kind_path`: path to the `kind` binary
+* `kubectl_path`: path to the `kubectl` binary
+* `api`: [pykube](https://pykube.readthedocs.io/) HTTPClient instance to access the cluster from Python
+
+You can also use KindCluster directly without pytest:
+
+```python
+from pytest_kind import KindCluster
+
+cluster = KindCluster("myclustername")
+cluster.create()
+cluster.kubectl("apply", "-f", "..")
+# ...
+cluster.delete()
+```
+
+
+## Pytest Options
+
+The kind cluster name can be set via the `--cluster-name` CLI option.
+
+The kind cluster is deleted after each pytest session, you can keep the cluster by passing `--keep-cluster` to pytest.
+
+Note that you can use the `PYTEST_ADDOPTS` environment variable to pass these options to pytest. This also works if you call pytest from a Makefile:
+
+```bash
+# for test debugging: don't delete the kind cluster
+PYTEST_ADDOPTS=--keep-cluster make test
+```
+
+
+## Notes
+
+* The `kind_cluster` fixture is session-scoped, i.e. the same cluster will be used across all test modules/functions.
+* The `kind` and `kubectl` binaries will be downloaded once to the local directory `./.pytest-kind/{cluster-name}/`. You can use them to interact with the cluster (e.g. when `--keep-cluster` is used).
+* Some cluster pods might not be ready immediately (e.g. kind's CoreDNS take a moment), add wait/poll functionality as required to make your tests predictable.
+
+
+%prep
+%autosetup -n pytest-kind-22.11.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-kind -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 22.11.1-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..a36c8b8
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+85d27f3b4035580a04ef7b7b0fd225dc pytest-kind-22.11.1.tar.gz