Hello community,
here is the log from the commit of package python-pytest-httpserver for
openSUSE:Factory checked in at 2019-07-26 17:35:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pytest-httpserver (Old)
and /work/SRC/openSUSE:Factory/.python-pytest-httpserver.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pytest-httpserver"
Fri Jul 26 17:35:15 2019 rev:2 rq:718902 version:0.3.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-pytest-httpserver/python-pytest-httpserver.changes
2019-07-26 12:42:42.869846836 +0200
+++
/work/SRC/openSUSE:Factory/.python-pytest-httpserver.new.4126/python-pytest-httpserver.changes
2019-07-26 17:35:16.556066527 +0200
@@ -1,0 +2,7 @@
+Fri Jul 26 13:51:39 UTC 2019 - Tomáš Chvátal <[email protected]>
+
+- Update to 0.3.1:
+ * various bugfixes
+ * various documentation updates
+
+-------------------------------------------------------------------
Old:
----
pytest-httpserver-0.3.0.tar.gz
New:
----
pytest-httpserver-0.3.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pytest-httpserver.spec ++++++
--- /var/tmp/diff_new_pack.86M5JP/_old 2019-07-26 17:35:17.084066344 +0200
+++ /var/tmp/diff_new_pack.86M5JP/_new 2019-07-26 17:35:17.088066343 +0200
@@ -12,30 +12,31 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-pytest-httpserver
-Version: 0.3.0
+Version: 0.3.1
Release: 0
-License: MIT
Summary: A httpserver for pytest
-Url: https://www.github.com/csernazs/pytest-httpserver
+License: MIT
Group: Development/Languages/Python
-Source:
https://github.com/csernazs/pytest-httpserver/archive/0.3.0.tar.gz#/pytest-httpserver-%{version}.tar.gz
-BuildRequires: fdupes
-BuildRequires: python-rpm-macros
+Url: https://www.github.com/csernazs/pytest-httpserver
+Source:
https://github.com/csernazs/pytest-httpserver/archive/%{version}.tar.gz#/pytest-httpserver-%{version}.tar.gz
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
+BuildRequires: fdupes
+BuildRequires: python-rpm-macros
BuildRequires: python-rpm-macros
# SECTION test requirements
BuildRequires: %{python_module Werkzeug}
BuildRequires: %{python_module coverage}
-BuildRequires: %{python_module pytest}
BuildRequires: %{python_module pytest-cov}
BuildRequires: %{python_module pytest-runner}
+BuildRequires: %{python_module pytest}
BuildRequires: %{python_module requests}
# /SECTION
Requires: python-Werkzeug
@@ -61,7 +62,7 @@
%pytest -k 'not test_wait_unexpected_request and not test_wait_timeout'
%files %{python_files}
-%doc README.rst
+%doc README.md
%license LICENSE
%{python_sitelib}/*
++++++ pytest-httpserver-0.3.0.tar.gz -> pytest-httpserver-0.3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-httpserver-0.3.0/.vscode/settings.json
new/pytest-httpserver-0.3.1/.vscode/settings.json
--- old/pytest-httpserver-0.3.0/.vscode/settings.json 2019-03-09
11:47:20.000000000 +0100
+++ new/pytest-httpserver-0.3.1/.vscode/settings.json 2019-07-25
08:34:32.000000000 +0200
@@ -1,9 +1,9 @@
{
"python.pythonPath": "${workspaceFolder}/.venv/bin/python3",
"python.linting.pylintPath": "${workspaceFolder}/.venv/bin/pylint",
- "python.unitTest.pyTestArgs": [
+ "python.testing.pytestArgs": [
"tests"
],
- "python.unitTest.pyTestEnabled": true,
- "python.unitTest.pyTestPath": "${workspaceFolder}/.venv/bin/pytest"
+ "python.testing.pytestEnabled": true,
+ "python.testing.pytestPath": "${workspaceFolder}/.venv/bin/pytest"
}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-httpserver-0.3.0/MANIFEST.in
new/pytest-httpserver-0.3.1/MANIFEST.in
--- old/pytest-httpserver-0.3.0/MANIFEST.in 1970-01-01 01:00:00.000000000
+0100
+++ new/pytest-httpserver-0.3.1/MANIFEST.in 2019-07-25 08:34:32.000000000
+0200
@@ -0,0 +1,2 @@
+include README.md
+include LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-httpserver-0.3.0/Makefile
new/pytest-httpserver-0.3.1/Makefile
--- old/pytest-httpserver-0.3.0/Makefile 2019-03-09 11:47:20.000000000
+0100
+++ new/pytest-httpserver-0.3.1/Makefile 2019-07-25 08:34:32.000000000
+0200
@@ -1,8 +1,10 @@
+PYTHON ?= python3
+
.PHONY: doc
.venv/bin/pip:
- python3 -m venv .venv
+ ${PYTHON} -m venv .venv
.venv/bin/pip3 install --upgrade pip wheel
venv: .venv/bin/pip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-httpserver-0.3.0/README.md
new/pytest-httpserver-0.3.1/README.md
--- old/pytest-httpserver-0.3.0/README.md 1970-01-01 01:00:00.000000000
+0100
+++ new/pytest-httpserver-0.3.1/README.md 2019-07-25 08:34:32.000000000
+0200
@@ -0,0 +1,83 @@
+[](https://travis-ci.org/csernazs/pytest-httpserver)
+[](https://pytest-httpserver.readthedocs.io/en/latest/?badge=latest)
+ [](https://opensource.org/licenses/MIT)
+
+## pytest_httpserver
+
+HTTP server for pytest
+
+
+### Nutshell
+
+This library is designed to help to test http clients without contacting the
real http server.
+In other words, it is a fake http server which is accessible via localhost can
be started with
+the pre-defined expected http requests and their responses.
+
+### Example
+
+```python
+def test_my_client(httpserver): # httpserver is a pytest fixture which starts
the server
+ # set up the server to serve /foobar with the json
+ httpserver.expect_request("/foobar").respond_with_json({"foo": "bar"})
+ # check that the request is served
+ assert requests.get(httpserver.url_for("/foobar")).json() == {'foo': 'bar'}
+```
+
+You can also use the library without pytest. There's a with statement to
ensure that the server is stopped.
+
+
+```python
+with HTTPServer() as httpserver:
+ # set up the server to serve /foobar with the json
+ httpserver.expect_request("/foobar").respond_with_json({"foo": "bar"})
+ # check that the request is served
+ print(requests.get(httpserver.url_for("/foobar")).json())
+```
+
+### Documentation
+
+Please find the API documentation at
https://pytest-httpserver.readthedocs.io/en/latest/.
+
+### Features
+
+You can set up a dozen of expectations for the requests, and also what
response should be sent by the server to the client.
+
+
+#### Requests
+
+There are three different types:
+
+- **permanent**: this will be always served when there's match for this
request, you can make as many HTTP requests as you want
+- **oneshot**: this will be served only once when there's a match for this
request, you can only make 1 HTTP request
+- **ordered**: same as oneshot but the order must be strictly matched to the
order of setting up
+
+You can also fine-tune the expected request. The following can be specified:
+
+- URI (this is a must)
+- HTTP method
+- headers
+- query string
+- data (HTTP payload of the request)
+
+
+#### Responses
+
+Once you have the expectations for the request set up, you should also define
the response you want to send back.
+The following is supported currently:
+
+- respond arbitrary data (string or bytearray)
+- respond a json (a python dict converted in-place to json)
+- respond a Response object of werkzeug
+- use your own function
+
+Similar to requests, you can fine-tune what response you want to send:
+
+- HTTP status
+- headers
+- data
+
+
+### Missing features
+* HTTP/2
+* Keepalive
+* ~~TLS~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-httpserver-0.3.0/README.rst
new/pytest-httpserver-0.3.1/README.rst
--- old/pytest-httpserver-0.3.0/README.rst 2019-03-09 11:47:20.000000000
+0100
+++ new/pytest-httpserver-0.3.1/README.rst 1970-01-01 01:00:00.000000000
+0100
@@ -1,92 +0,0 @@
-|build| |doc|
-
-
-pytest_httpserver
-=================
-HTTP server for pytest
-
-
-Nutshell
---------
-
-This library is designed to help to test http clients without contacting the
real http server.
-In other words, it is a fake http server which is accessible via localhost can
be started with
-the pre-defined expected http requests and their responses.
-
-Example
--------
-
-.. code-block:: python
-
- def test_my_client(httpserver): # httpserver is a pytest fixture which
starts the server
- # set up the server to serve /foobar with the json
- httpserver.expect_request("/foobar").respond_with_json({"foo": "bar"})
- # check that the request is served
- assert requests.get(httpserver.url_for("/foobar")).json() == {'foo':
'bar'}
-
-
-You can also use the library without pytest. There's a with statement to
ensure that the server is stopped.
-
-
-.. code-block:: python
-
- with HTTPServer() as httpserver:
- # set up the server to serve /foobar with the json
- httpserver.expect_request("/foobar").respond_with_json({"foo": "bar"})
- # check that the request is served
- print(requests.get(httpserver.url_for("/foobar")).json())
-
-
-Features
---------
-You can set up a dozen of expectations for the requests, and also what
response should be sent by the server to the client.
-
-
-Requests
-~~~~~~~~
-There are three different types:
-
-- **permanent**: this will be always served when there's match for this
request, you can make as many HTTP requests as you want
-- **oneshot**: this will be served only once when there's a match for this
request, you can only make 1 HTTP request
-- **ordered**: same as oneshot but the order must be strictly matched to the
order of setting up
-
-You can also fine-tune the expected request. The following can be specified:
-
-- URI (this is a must)
-- HTTP method
-- headers
-- query string
-- data (HTTP payload of the request)
-
-
-Responses
-~~~~~~~~~
-
-Once you have the expectations for the request set up, you should also define
the response you want to send back.
-The following is supported currently:
-
-- respond arbitrary data (string or bytearray)
-- respond a json (a python dict converted in-place to json)
-- respond a Response object of werkzeug
-- use your own function
-
-Similar to requests, you can fine-tune what response you want to send:
-
-- HTTP status
-- headers
-- data
-
-
-Missing features
-----------------
-* HTTP/2
-* Keepalive
-* TLS
-
-
-.. |build| image::
https://travis-ci.org/csernazs/pytest-httpserver.svg?branch=master
- :target: https://travis-ci.org/csernazs/pytest-httpserver
-
-.. |doc| image::
https://readthedocs.org/projects/pytest-httpserver/badge/?version=latest
- :target: https://pytest-httpserver.readthedocs.io/en/latest/?badge=latest
- :alt: Documentation Status
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-httpserver-0.3.0/doc/conf.py
new/pytest-httpserver-0.3.1/doc/conf.py
--- old/pytest-httpserver-0.3.0/doc/conf.py 2019-03-09 11:47:20.000000000
+0100
+++ new/pytest-httpserver-0.3.1/doc/conf.py 2019-07-25 08:34:32.000000000
+0200
@@ -58,9 +58,9 @@
# built documents.
#
# The short X.Y version.
-version = '0.3.0'
+version = '0.3.1'
# The full version, including alpha/beta/rc tags.
-release = '0.3.0'
+release = '0.3.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-httpserver-0.3.0/doc/guide.rst
new/pytest-httpserver-0.3.1/doc/guide.rst
--- old/pytest-httpserver-0.3.0/doc/guide.rst 2019-03-09 11:47:20.000000000
+0100
+++ new/pytest-httpserver-0.3.1/doc/guide.rst 2019-07-25 08:34:32.000000000
+0200
@@ -9,17 +9,27 @@
thread, so you will need to make sure that the
:py:meth:`pytest_httpserver.HTTPServer.stop` method
is called before your code exits.
-A free TCP port needs to be specified when instantiating the server, where no
other daemon is listening.
+When using the pytest plugin, the server is started at the first usage of the
server and it will
+remain running for the whole test suite. For each test function, a clear http
server will be used
+to avoid crosstalk.
-If you are using the pytest plugin it is done automatically by the plugin.
Possibility to change
-the TCP port is TBD.
+A free TCP port needs to be specified when instantiating the server. Setting 0
as the port number
+will select a free (ephemeral) TCP port which is guaranteed to be free.
+This is the default behavior.
-When using pytest plugin, specifying the bind address and bind port can also
be possible via environment
-variables. Setting PYTEST_HTTPSERVER_HOST and PYTEST_HTTPSERVER_PORT will
change the bind host and bind
-port, respectively.
+Specifying the bind host and port can be done in several ways:
+
+* Setting PYTEST_HTTPSERVER_HOST and PYTEST_HTTPSERVER_PORT will change the
bind host and bind
+ port, respectively.
+
+* If pytest plugin is not used, the DEFAULT_LISTEN_HOST and
DEFAULT_LISTEN_PORT class attributes can be set
+ on the HTTPServer class.
+
+* bind host and port can be specified for the constructor of the
+ :py:class:`pytest_httpserver.server.HTTPServer` class.
+
+* Overriding the ``httpserver_listen_address`` fixture in pytest.
-If pytest plugin is not used, the DEFAULT_LISTEN_HOST and DEFAULT_LISTEN_PORT
class attributes can be set
-on the HTTPServer class.
Configuring
-----------
@@ -54,7 +64,7 @@
-------------------------------------
It is possible to wait until all oneshot and ordered handlers are exhausted or
any error happened. This
is provided by a context manager which waits until one of these events
occured. This can be further customized
-by :py:class:`pytest_httpserver.server.WaitSettings` object to raise or not
raise assertion.
+by :py:class:`pytest_httpserver.server.WaitingSettings` object to raise or not
raise assertion.
Debugging errors while testing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-httpserver-0.3.0/example_pytest.py
new/pytest-httpserver-0.3.1/example_pytest.py
--- old/pytest-httpserver-0.3.0/example_pytest.py 1970-01-01
01:00:00.000000000 +0100
+++ new/pytest-httpserver-0.3.1/example_pytest.py 2019-07-25
08:34:32.000000000 +0200
@@ -0,0 +1,29 @@
+# Run this code as 'pytest example_pytest.py'
+
+import pytest
+import requests
+from pytest_httpserver import HTTPServer
+
+# specify where the server should bind to
+# you can return 0 as the port, in this case it will bind to a free
(ephemeral) TCP port
[email protected]
+def httpserver_listen_address():
+ return ("127.0.0.1", 8000)
+
+
+# specify httpserver fixture
+def test_oneshot_and_permanent_happy_path1(httpserver: HTTPServer):
+ # define some request handlers
+ # more details in the documentation
+ httpserver.expect_request("/permanent").respond_with_data("OK permanent")
+ httpserver.expect_oneshot_request("/oneshot1").respond_with_data("OK
oneshot1")
+ httpserver.expect_oneshot_request("/oneshot2").respond_with_data("OK
oneshot2")
+
+ # query those handlers with a real HTTP client (requests in this example
but could by anything)
+ # the 'url_for' method formats the final URL, so there's need to wire-in
any ports
+ assert requests.get(httpserver.url_for("/permanent")).text == "OK
permanent"
+ assert requests.get(httpserver.url_for("/oneshot1")).text == "OK oneshot1"
+ assert requests.get(httpserver.url_for("/oneshot2")).text == "OK oneshot2"
+ assert requests.get(httpserver.url_for("/permanent")).text == "OK
permanent"
+
+ assert len(httpserver.oneshot_handlers) == 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pytest-httpserver-0.3.0/pytest_httpserver/pytest_plugin.py
new/pytest-httpserver-0.3.1/pytest_httpserver/pytest_plugin.py
--- old/pytest-httpserver-0.3.0/pytest_httpserver/pytest_plugin.py
2019-03-09 11:47:20.000000000 +0100
+++ new/pytest-httpserver-0.3.1/pytest_httpserver/pytest_plugin.py
2019-07-25 08:34:32.000000000 +0200
@@ -30,13 +30,18 @@
@pytest.fixture
-def httpserver():
+def httpserver_listen_address():
+ return get_httpserver_listen_address()
+
+
[email protected]
+def httpserver(httpserver_listen_address):
if Plugin.SERVER:
Plugin.SERVER.clear()
yield Plugin.SERVER
return
- host, port = get_httpserver_listen_address()
+ host, port = httpserver_listen_address
if not host:
host = HTTPServer.DEFAULT_LISTEN_HOST
if not port:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-httpserver-0.3.0/release_checklist.md
new/pytest-httpserver-0.3.1/release_checklist.md
--- old/pytest-httpserver-0.3.0/release_checklist.md 1970-01-01
01:00:00.000000000 +0100
+++ new/pytest-httpserver-0.3.1/release_checklist.md 2019-07-25
08:34:32.000000000 +0200
@@ -0,0 +1,14 @@
+
+Sounds like a python script for me, but here's the manual checklist:
+
+- [ ] check the latest commits on master
+- [ ] every major change reflected in the release notes
+- [ ] check the latest doc build at rtd.org
+- [ ] check that master is green at travis
+- [ ] version bump (sphinx/conf.py, setup.py)
+- [ ] tag the HEAD
+- [ ] generate documentation, check version at release notes
+- [ ] build the dist: setup.py sdist bdist_wheel
+- [ ] install package in a local venv
+- [ ] push to github (version bump, tags)
+- [ ] upload dist/* to pypi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pytest-httpserver-0.3.0/releasenotes/notes/httpserver-listen-address-fixture-87f18b2cdbf47532.yaml
new/pytest-httpserver-0.3.1/releasenotes/notes/httpserver-listen-address-fixture-87f18b2cdbf47532.yaml
---
old/pytest-httpserver-0.3.0/releasenotes/notes/httpserver-listen-address-fixture-87f18b2cdbf47532.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/pytest-httpserver-0.3.1/releasenotes/notes/httpserver-listen-address-fixture-87f18b2cdbf47532.yaml
2019-07-25 08:34:32.000000000 +0200
@@ -0,0 +1,6 @@
+---
+
+features:
+ - |
+ Add httpserver_listen_address fixture which is used to set up the bind
address and port
+ of the server. Setting bind address and port is possible by overriding
this fixture.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-httpserver-0.3.0/setup.py
new/pytest-httpserver-0.3.1/setup.py
--- old/pytest-httpserver-0.3.0/setup.py 2019-03-09 11:47:20.000000000
+0100
+++ new/pytest-httpserver-0.3.1/setup.py 2019-07-25 08:34:32.000000000
+0200
@@ -3,11 +3,11 @@
from setuptools import setup, find_packages
-DESCRIPTION = open("README.rst").read()
+DESCRIPTION = open("README.md").read()
setup(
name="pytest_httpserver",
- version="0.3.0",
+ version="0.3.1",
url="https://www.github.com/csernazs/pytest-httpserver",
packages=find_packages(),
author="Zsolt Cserna",
@@ -15,6 +15,7 @@
description="pytest-httpserver is a httpserver for pytest",
entry_points={"pytest11": ["pytest_httpserver =
pytest_httpserver.pytest_plugin"]},
long_description=DESCRIPTION,
+ long_description_content_type="text/markdown",
python_requires=">=3.4",
install_requires=[
"typing;python_version<'3.5'",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-httpserver-0.3.0/tests/test_wait.py
new/pytest-httpserver-0.3.1/tests/test_wait.py
--- old/pytest-httpserver-0.3.0/tests/test_wait.py 2019-03-09
11:47:20.000000000 +0100
+++ new/pytest-httpserver-0.3.1/tests/test_wait.py 2019-07-25
08:34:32.000000000 +0200
@@ -30,7 +30,7 @@
requests.get(httpserver.url_for("/foobaz"))
assert not waiting.result
no_handler_text = 'No handler found for request'
- assert no_handler_text in str(error)
+ assert no_handler_text in str(error.value)
make_unexpected_request_and_wait()
@@ -49,7 +49,7 @@
assert not waiting.result
waiting_time_error = 0.1
assert waiting.elapsed_time == approx(waiting_timeout,
abs=waiting_time_error)
- assert 'Wait timeout occurred, but some handlers left' in str(error)
+ assert 'Wait timeout occurred, but some handlers left' in str(error.value)
def test_wait_raise_assertion_false(httpserver: HTTPServer):