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 :doc:`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 :doc:`gabbi-run ` with each tagged release. 2.3.0 ----- * For the ``$ENVIRON`` and ``$RESPONSE`` :ref:`substitutions ` it is now possible to :ref:`cast ` the value to a type of ``int``, ``float``, ``str``, or ``bool``. * 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`` and ``fixtures``. 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 the ``fixtures.Fixture`` interface should continue to work. 1.49.0 ------ * Add support for not validating certificates in ``https`` requests. Controlled by the ``cert_validate`` attribute in individual tests and :meth:`~gabbi.driver.build_tests` and the ``-k`` or ``--insecure`` argument to :doc:`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 in ``5.0.0``. 1.46.0 ------ * A ``-q`` argument is added to :doc:`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 :class:`~gabbi.handlers.yaml_disk_loading_jsonhandler.YAMLDiskLoadingJSONHandler` class that allows test result data for ``response_json_path`` checks to be loaded from YAML-on-disk. 1.43.0 ------ * Use :ref:`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`` :ref:`substitutions ` in the ``data`` 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 :ref:`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 to :meth:`~gabbi.driver.build_tests`. 1.36.0 ------ * ``use_prior_test`` is added to test :ref:`metadata`. * Extensive cleanups in regular expression handling when constructing tests from YAML. 1.35.0 ------ :doc:`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 :ref:`data`. * The key side of a ``response_json_paths`` entry can use :ref:`substitutions `. This was already true for the value side. 1.34.0 ------ :ref:`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 :ref:`substitutions `. :meth:`gabbi.driver.build_tests` accepts a ``verbose`` parameter to set test :ref:`verbosity ` for an entire session. 1.32.0 ------ Better failure reporting when using :doc:`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 :doc:`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 :ref:`substitutions `. 1.29.0 ------ Filenames used to read data into tests using the ``<@`` syntax may now use pathnames relative to the YAML file. See :ref:`data`. :doc:`gabbi-run ` gains a --verbose parameter to force all tests run in a session to run with :ref:`verbose ` set. When using :ref:`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 :doc:`gabbi-run ` to accept multiple filenames as command line arguments instead of reading tests from stdin. 1.26.0 ------ Switch from response handlers to :doc:`handlers` to allow more flexible processing of both response _and_ request bodies. Add :ref:`inner fixtures ` for per test fixtures, useful for output capturing. 1.25.0 ------ Allow the ``test_loader_name`` arg to :meth:`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 :doc:`documentation ` of how to run gabbi in a concurrent environment. Improved handling of pytest fixtures and test counts. 1.22.0 ------ Add ``url`` to :meth:`gabbi.driver.build_tests` to use instead of ``host``, ``port`` and ``prefix``. 1.21.0 ------ Add ``require_ssl`` to :meth:`gabbi.driver.build_tests` to force use of SSL. 1.20.0 ------ Add ``$COOKIE`` :ref:`substitution `. 1.19.1 ------ Correctly support IPV6 hosts. 1.19.0 ------ Add ``$LAST_URL`` :ref:`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 :doc:`jsonpath` handling. 1.11.0 ------ Add the ``response_forbidden_headers`` to :ref:`response expectations `. 1.7.0 ----- .. highlight:: yaml 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 :ref:`verbose `. 1.3.0 ----- Adds the ``query_parameters`` key to :ref:`request parameters `. 1.2.0 ----- The start of improvements and extensions to :doc:`jsonpath` handling. In this case the addition of the ``len`` function. 1.1.0 ----- Vastly improved output and behavior in :doc:`gabbi-run `. 1.0.0 ----- Version 1 was the first release with a commitment to a stable :doc:`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 .. _commit logs: https://github.com/cdent/gabbi/commits .. _issues: https://github.com/cdent/gabbi/issues