Release Notes¶
These are informal release notes for gabbi since version 1.0.0, highlighting major features and changes. For more detail see the commit logs on GitHub.
3.0.0¶
Add support for regular expressions in
response_strings
values.
This is being done as a major release because it has a chance of breaking existing tests that use response_strings values that look like regular expressions but are not.
2.11.0¶
Corrected support for Python 3.12
2.10.0¶
Remove use of six. Thanks to Alexandre Detiste.
2.9.0¶
Pin to urllib3 <2.0.0 to avoid issues with changes in constructors.
2.8.0¶
Add timeout parameter per test, defaulting to 30 seconds.
Ensure stestr > 4.0.0 in test-requirements.txt
2.7.2¶
Handle SNI when
host
request header is any case.
2.7.1¶
Clear the PoolManager after each test to avoid running out of socket file descriptors.
2.7.0¶
Add
-l
argument to gabbi-run to allow loading content and response handlers relative to the local directory.
2.6.0¶
Fix naming of tests when using pytest. This changes means that setting
test_loader_name
is now required when using pytest.
2.5.0¶
Support SNI in https requests when
host
request header is set.
2.4.0¶
Publish a docker container that runs gabbi-run with each tagged release.
2.3.0¶
For the
$ENVIRON
and$RESPONSE
substitutions it is now possible to cast the value to a type ofint
,float
,str
, orbool
.The
JSONHandler
is now more strict about how it detects that a body content is JSON, avoiding some errors where the content-type header suggests JSON but the content cannot be decoded as such.Better error message when content cannot be decoded.
Addition of the
disable_response_handler
test setting for those cases when the test author has no control over the content-type header and it is wrong.
2.2.0¶
Allow substitutions in skip for more flexible skipping, notablly with
$ENVIRON
.Better test name output when running with unittest and verbose.
2.1.0¶
Remove support for Python 3.5. Ensure testing support for 3.8, 3.9, and pypy3.
Adapt to new behavior in
urllib.parse
.Correct fixture start when using pytest.
2.0.4¶
If no content-type is provided with a response and verbose is on for responses, display the response body as if it were text.
2.0.3¶
Properly declare that gabbi 2.x is Python 3 only.
2.0.1¶
Correct management of response handler default fields.
2.0.0¶
Drop support for Python 2. If you need Python 2 support, use an older version.
Stop using
testtools
andfixtures
. These two modules present several difficulties and their maintenance situation suggests those difficulties will not be resolved. Since Python 2 support is being removed, the need for the modules can be removed as well without losing functionality. “Inner fixtures” that use thefixtures.Fixture
interface should continue to work.
1.49.0¶
Add support for not validating certificates in
https
requests. Controlled by thecert_validate
attribute in individual tests andbuild_tests()
and the-k
or--insecure
argument to gabbi-run.
1.48.0¶
Support
pytest 5.0.0
in Python>=3.5
. For earlier versions of Python,pytest<5.0.0
will be used; the pytest project is dropping support for older versions of Python.
1.47.0¶
Use
pytest<5.0.0
until gabbi has solutions for the changes in5.0.0
.
1.46.0¶
A
-q
argument is added to gabbi-run to suppress output from the test runner.
1.45.0¶
Adjust loading of YAML to be ready for new release of PyYAML.
1.44.0¶
Provide the
YAMLDiskLoadingJSONHandler
class that allows test result data forresponse_json_path
checks to be loaded from YAML-on-disk.
1.43.0¶
Use JSONPath to select a portion of data-on-disk in
response_json_path
checks.Restrict PyYAML to
<4.0
.
1.42.0¶
Allow listing of tests with no host configured. When host is an empty string, tests can be listed (for discovery), but will be skipped on run.
1.41.0¶
JSON
$RESPONSE
substitutions in thedata
field may be complex types (lists and dicts), not solely strings.
1.40.0¶
When the HTTP response begins with a bad status line, have BadStatusLine be raised from urllib3.
1.39.0¶
Allow substitutions in the key portion of request and response headers, not just the value.
1.38.0¶
Remove support for Python 3.3.
Make handling of fixture-level skips in pytest actually work.
1.37.0¶
Add
safe_yaml
parameter tobuild_tests()
.
1.36.0¶
use_prior_test
is added to test Metadata.Extensive cleanups in regular expression handling when constructing tests from YAML.
1.35.0¶
JSONPath handling gets two improvements:
The value side of a
response_json_paths
entry can be loaded from a file using the<@file.json
syntax also used in Data.The key side of a
response_json_paths
entry can use substitutions. This was already true for the value side.
1.34.0¶
Substitutions in $RESPONSE
handling
now preserve numeric types instead of casting to a string. This is
useful when servers are expecting strong types and tests want to
send response data back to the server.
1.33.0¶
count
and delay
test keys allow substitutions. gabbi.driver.build_tests()
accepts
a verbose
parameter to set test verbosity for
an entire session.
1.32.0¶
Better failure reporting when using gabbi-run with multiple files. Test names are based on the files and a summary of failed files is provided at the end of the report.
1.31.0¶
Effectively capture a failure in a fixture and report the traceback. Without this some test runners swallow the error and discovering problems when developing fixtures can be quite challenging.
1.30.0¶
Thanks to Samuel Fekete, tests can use the $HISTORY
dictionary
to refer to any prior test in the same file, not just the one
immediately prior, when doing substitutions.
1.29.0¶
Filenames used to read data into tests using the <@
syntax
may now use pathnames relative to the YAML file. See Data.
gabbi-run gains a –verbose parameter to force all tests run in a session to run with verbose set.
When using pytest to load tests, a new
mechanism is available which avoids warnings produced in when using
a version of pytest greater than 3.0
.
1.28.0¶
When verbosely displaying request and response bodies that are JSON, pretty print for improved readability.
1.27.0¶
Allow gabbi-run to accept multiple filenames as command line arguments instead of reading tests from stdin.
1.26.0¶
Switch from response handlers to Content Handlers to allow more flexible processing of both response _and_ request bodies.
Add inner fixtures for per test fixtures, useful for output capturing.
1.25.0¶
Allow the test_loader_name
arg to
gabbi.driver.build_tests()
to override the prefix of the
pretty printed name of generated tests.
1.24.0¶
String values in JSONPath matches may be wrapped in /.../`
to be
treated as regular expressions.
1.23.0¶
Better documentation of how to run gabbi in a concurrent environment. Improved handling of pytest fixtures and test counts.
1.22.0¶
Add url
to gabbi.driver.build_tests()
to use instead of
host
, port
and prefix
.
1.21.0¶
Add require_ssl
to gabbi.driver.build_tests()
to force use
of SSL.
1.20.0¶
Add $COOKIE
substitution.
1.19.1¶
Correctly support IPV6 hosts.
1.19.0¶
Add $LAST_URL
substitution.
1.17.0¶
Introduce support for loading and running tests with pytest.
1.16.0¶
Use urllib3 instead of httplib2 for driving HTTP requests.
1.13.0¶
Add sorting and filtering to JSONPath handling.
1.11.0¶
Add the response_forbidden_headers
to response expectations.
1.7.0¶
Instead of:
tests:
- name: a simple get
url: /some/path
method: get
1.7.0 also makes it possible to:
tests:
- name: a simple get
GET: /some/path
Any upper case key is treated as a method.
1.4.0 and 1.5.0¶
Enhanced flexibility and colorization when setting tests to be verbose.
1.3.0¶
Adds the query_parameters
key to request parameters.
1.2.0¶
The start of improvements and extensions to JSONPath
handling. In this case the addition of the len
function.
1.1.0¶
Vastly improved output and behavior in gabbi-run.
1.0.0¶
Version 1 was the first release with a commitment to a stable Test Format. Since then new fields have been added but have not been taken away.
Contributors¶
The following people have contributed code to gabbi. Thanks to them. Thanks also to all the people who have made gabbi better by reporting issues and their successes and failures with using gabbi.
Chris Dent
FND
Mehdi Abaakouk
Tom Viner
Jason Myers
Josh Leeb-du Toit
Duc Truong
Zane Bitter
Ryan Spencer
Kim Raymoure
Travis Truman
Samuel Fekete
Michael McCune
Imran Hayder
Julien Danjou
Trevor McCasland
Danek Duvall
Marc Abramowitz
Scott Wallace
Alexandre Detiste