Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-testfixtures for
openSUSE:Factory checked in at 2021-10-20 20:23:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-testfixtures (Old)
and /work/SRC/openSUSE:Factory/.python-testfixtures.new.1890 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-testfixtures"
Wed Oct 20 20:23:17 2021 rev:19 rq:924047 version:6.18.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-testfixtures/python-testfixtures.changes
2021-05-12 19:31:28.479222736 +0200
+++
/work/SRC/openSUSE:Factory/.python-testfixtures.new.1890/python-testfixtures.changes
2021-10-20 20:23:57.725366141 +0200
@@ -1,0 +2,16 @@
+Thu Oct 7 15:01:20 UTC 2021 - Ben Greiner <[email protected]>
+
+- update to 6.18.3
+ * Fix bug when using :func:`compare` on two regular expressions
+ that have very long patterns.
+ * Fix bug that meant :class:`LogCapture` didn't preserve or
+ provide a clean testing environment for filters.
+ * Fix bug when showing differences between mappings found by
+ :func:`compare` when mismatching values contained the same
+ number more than once.
+ * Add support for lazy resolution of prefix and suffix when using
+ :func:`compare`.
+- Drop appease-django-320.patch merged upstream
+- Drop unresolvable Python 2 build
+
+-------------------------------------------------------------------
Old:
----
appease-django-320.patch
testfixtures-6.17.1.tar.gz
New:
----
testfixtures-6.18.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-testfixtures.spec ++++++
--- /var/tmp/diff_new_pack.ewp8fK/_old 2021-10-20 20:23:58.209366440 +0200
+++ /var/tmp/diff_new_pack.ewp8fK/_new 2021-10-20 20:23:58.217366445 +0200
@@ -16,17 +16,15 @@
#
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%bcond_without python2
+%{?!python_module:%define python_module() python3-%{**}}
+%define skip_python2 1
Name: python-testfixtures
-Version: 6.17.1
+Version: 6.18.3
Release: 0
Summary: A collection of helpers and mock objects for unit tests and
doc tests
License: MIT
URL: https://github.com/Simplistix/testfixtures
Source:
https://files.pythonhosted.org/packages/source/t/testfixtures/testfixtures-%{version}.tar.gz
-# PATCH-FIX-UPSTREAM:
gh#Simplistix/testfixtures/commit/52a14d92a122665b1a101e6398eca3982de01739
-Patch0: appease-django-320.patch
BuildRequires: %{python_module Django}
BuildRequires: %{python_module Twisted}
BuildRequires: %{python_module pytest >= 3.6}
@@ -41,9 +39,6 @@
Suggests: python-sybil
Suggests: python-zope.component
BuildArch: noarch
-%if %{with python2}
-BuildRequires: python2-mock
-%endif
%python_subpackages
%description
@@ -78,6 +73,7 @@
%files %{python_files}
%license LICENSE.txt
%doc README.rst docs/*.txt
-%{python_sitelib}/*
+%{python_sitelib}/testfixtures
+%{python_sitelib}/testfixtures-%{version}*-info
%changelog
++++++ testfixtures-6.17.1.tar.gz -> testfixtures-6.18.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/testfixtures-6.17.1/.circleci/config.yml
new/testfixtures-6.18.3/.circleci/config.yml
--- old/testfixtures-6.17.1/.circleci/config.yml 2021-01-14
09:34:46.000000000 +0100
+++ new/testfixtures-6.18.3/.circleci/config.yml 2021-09-29
11:03:20.000000000 +0200
@@ -44,11 +44,6 @@
name: python39
image: circleci/python:3.9
- python/pip-run-tests:
- name: python36-mock-backport
- # so we test the mock monkey patches aren't used:
- image: circleci/python:3.6.4
- extra_packages: "mock"
- - python/pip-run-tests:
name: python39-mock-backport
image: circleci/python:3.9
extra_packages: "mock"
@@ -73,7 +68,6 @@
- python37
- python38
- python39
- - python36-mock-backport
- python39-mock-backport
- python27-django-1-9
- python36-django-1-11
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/testfixtures-6.17.1/CHANGELOG.rst
new/testfixtures-6.18.3/CHANGELOG.rst
--- old/testfixtures-6.17.1/CHANGELOG.rst 2021-01-14 09:34:46.000000000
+0100
+++ new/testfixtures-6.18.3/CHANGELOG.rst 2021-09-29 11:03:20.000000000
+0200
@@ -1,6 +1,33 @@
Changes
=======
+6.18.3 (29 Sep 2021)
+--------------------
+
+- Fix bug when using :func:`compare` on two regular expressions that have very
long patterns.
+
+Thanks to Christoph Ludwig for the report.
+
+6.18.2 (21 Sep 2021)
+--------------------
+
+- Fix bug that meant :class:`LogCapture` didn't preserve or provide a clean
testing environment
+ for filters.
+
+Thanks to Jesse Rittner for the fix.
+
+6.18.1 (20 Aug 2021)
+--------------------
+
+- Fix bug when showing differences between mappings found by :func:`compare`
when
+ mismatching values contained the same number more than once.
+
+6.18.0 (15 Jul 2021)
+--------------------
+
+- Add support for lazy resolution of ``prefix`` and ``suffix`` when using
+ :func:`compare`.
+
6.17.1 (14 Jan 2020)
--------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/testfixtures-6.17.1/PKG-INFO
new/testfixtures-6.18.3/PKG-INFO
--- old/testfixtures-6.17.1/PKG-INFO 2021-01-14 09:34:53.000000000 +0100
+++ new/testfixtures-6.18.3/PKG-INFO 2021-09-29 11:03:25.000000000 +0200
@@ -1,71 +1,11 @@
Metadata-Version: 2.1
Name: testfixtures
-Version: 6.17.1
+Version: 6.18.3
Summary: A collection of helpers and mock objects for unit tests and doc tests.
Home-page: https://github.com/Simplistix/testfixtures
Author: Chris Withers
Author-email: [email protected]
License: MIT
-Description: Testfixtures
- ============
-
- |CircleCI|_ |Docs|_
-
- .. |CircleCI| image::
https://circleci.com/gh/Simplistix/testfixtures/tree/master.svg?style=shield
- .. _CircleCI:
https://circleci.com/gh/Simplistix/testfixtures/tree/master
-
- .. |Docs| image::
https://readthedocs.org/projects/testfixtures/badge/?version=latest
- .. _Docs: http://testfixtures.readthedocs.org/en/latest/
-
- Testfixtures is a collection of helpers and mock objects that are
useful when
- writing automated tests in Python.
-
- The areas of testing this package can help with are listed below:
-
- **Comparing objects and sequences**
-
- Better feedback when the results aren't as you expected along with
- support for comparison of objects that don't normally support
- comparison and comparison of deeply nested datastructures.
-
- **Mocking out objects and methods**
-
- Easy to use ways of stubbing out objects, classes or individual
- methods for both doc tests and unit tests. Special helpers are
- provided for testing with dates and times.
-
- **Testing logging**
-
- Helpers for capturing logging output in both doc tests and
- unit tests.
-
- **Testing stream output**
-
- Helpers for capturing stream output, such as that from print
- statements, and making assertion about it.
-
- **Testing with files and directories**
-
- Support for creating and checking files and directories in sandboxes
- for both doc tests and unit tests.
-
- **Testing exceptions and warnings**
-
- Easy to use ways of checking that a certain exception is raised,
- or a warning is issued, even down the to the parameters provided.
-
- **Testing subprocesses**
-
- A handy mock for testing code that uses subprocesses.
-
- **Testing when using django**
-
- Helpers for comparing instances of django models.
-
- **Testing when using zope.component**
-
- An easy to use sterile component registry.
-
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
@@ -80,3 +20,66 @@
Provides-Extra: test
Provides-Extra: docs
Provides-Extra: build
+License-File: LICENSE.txt
+
+Testfixtures
+============
+
+|CircleCI|_ |Docs|_
+
+.. |CircleCI| image::
https://circleci.com/gh/simplistix/testfixtures/tree/master.svg?style=shield
+.. _CircleCI: https://circleci.com/gh/simplistix/testfixtures/tree/master
+
+.. |Docs| image::
https://readthedocs.org/projects/testfixtures/badge/?version=latest
+.. _Docs: http://testfixtures.readthedocs.org/en/latest/
+
+Testfixtures is a collection of helpers and mock objects that are useful when
+writing automated tests in Python.
+
+The areas of testing this package can help with are listed below:
+
+**Comparing objects and sequences**
+
+Better feedback when the results aren't as you expected along with
+support for comparison of objects that don't normally support
+comparison and comparison of deeply nested datastructures.
+
+**Mocking out objects and methods**
+
+Easy to use ways of stubbing out objects, classes or individual
+methods for both doc tests and unit tests. Special helpers are
+provided for testing with dates and times.
+
+**Testing logging**
+
+Helpers for capturing logging output in both doc tests and
+unit tests.
+
+**Testing stream output**
+
+Helpers for capturing stream output, such as that from print
+statements, and making assertion about it.
+
+**Testing with files and directories**
+
+Support for creating and checking files and directories in sandboxes
+for both doc tests and unit tests.
+
+**Testing exceptions and warnings**
+
+Easy to use ways of checking that a certain exception is raised,
+or a warning is issued, even down the to the parameters provided.
+
+**Testing subprocesses**
+
+A handy mock for testing code that uses subprocesses.
+
+**Testing when using django**
+
+Helpers for comparing instances of django models.
+
+**Testing when using zope.component**
+
+An easy to use sterile component registry.
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/testfixtures-6.17.1/README.rst
new/testfixtures-6.18.3/README.rst
--- old/testfixtures-6.17.1/README.rst 2021-01-14 09:34:46.000000000 +0100
+++ new/testfixtures-6.18.3/README.rst 2021-09-29 11:03:20.000000000 +0200
@@ -3,8 +3,8 @@
|CircleCI|_ |Docs|_
-.. |CircleCI| image::
https://circleci.com/gh/Simplistix/testfixtures/tree/master.svg?style=shield
-.. _CircleCI: https://circleci.com/gh/Simplistix/testfixtures/tree/master
+.. |CircleCI| image::
https://circleci.com/gh/simplistix/testfixtures/tree/master.svg?style=shield
+.. _CircleCI: https://circleci.com/gh/simplistix/testfixtures/tree/master
.. |Docs| image::
https://readthedocs.org/projects/testfixtures/badge/?version=latest
.. _Docs: http://testfixtures.readthedocs.org/en/latest/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/testfixtures-6.17.1/testfixtures/comparison.py
new/testfixtures-6.18.3/testfixtures/comparison.py
--- old/testfixtures-6.17.1/testfixtures/comparison.py 2021-01-14
09:34:46.000000000 +0100
+++ new/testfixtures-6.18.3/testfixtures/comparison.py 2021-09-29
11:03:20.000000000 +0200
@@ -44,13 +44,15 @@
return compare_with_type(x, y, context)
x_attrs = _extract_attrs(x)
y_attrs = _extract_attrs(y)
- diff = _compare_mapping(x_attrs, y_attrs, context, x,
- 'attributes ', '.%s')
- if not diff:
- return 'Both %s and %s appear as %r, but are not equal!' % (
- context.x_label or 'x', context.y_label or 'y', repr_x
- )
- return diff
+ diff_ = None
+ if not (x_attrs is None or y_attrs is None):
+ diff_ = _compare_mapping(x_attrs, y_attrs, context, x,
+ 'attributes ', '.%s')
+ if diff_:
+ return diff_
+ return 'Both %s and %s appear as %r, but are not equal!' % (
+ context.x_label or 'x', context.y_label or 'y', repr_x
+ )
return context.label('x', repr_x) + ' != ' + context.label('y', repr_y)
@@ -568,8 +570,9 @@
return '\n\nWhile comparing %s: ' % ''.join(self.breadcrumbs[1:])
def seen(self, x, y):
- # don't get confused by string interning:
- if isinstance(x, basestring) and isinstance(y, basestring):
+ # don't get confused by interning:
+ singleton_types = basestring, int, float
+ if isinstance(x, singleton_types) and isinstance(y, singleton_types):
return False
key = id(x), id(y)
if key in self._seen:
@@ -620,6 +623,10 @@
self.breadcrumbs.pop()
+def _resolve_lazy(source):
+ return str(source() if callable(source) else source)
+
+
def compare(*args, **kw):
"""
Compare two objects, raising an :class:`AssertionError` if they are not
@@ -637,11 +644,13 @@
:param prefix: If provided, in the event of an :class:`AssertionError`
being raised, the prefix supplied will be prepended to the
- message in the :class:`AssertionError`.
+ message in the :class:`AssertionError`. This may be a
+ callable, in which case it will only be resolved if needed.
:param suffix: If provided, in the event of an :class:`AssertionError`
being raised, the suffix supplied will be appended to the
- message in the :class:`AssertionError`.
+ message in the :class:`AssertionError`. This may be a
+ callable, in which case it will only be resolved if needed.
:param x_label: If provided, in the event of an :class:`AssertionError`
being raised, the object passed as the first positional
@@ -692,9 +701,9 @@
message = context.message
if prefix:
- message = prefix + ': ' + message
+ message = _resolve_lazy(prefix) + ': ' + message
if suffix:
- message += '\n' + suffix
+ message += '\n' + _resolve_lazy(suffix)
if raises:
raise AssertionError(message)
@@ -1080,6 +1089,7 @@
self.failed = '\n\n'.join(message)
return True
+ return False
class StringComparison:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/testfixtures-6.17.1/testfixtures/logcapture.py
new/testfixtures-6.18.3/testfixtures/logcapture.py
--- old/testfixtures-6.17.1/testfixtures/logcapture.py 2021-01-14
09:34:46.000000000 +0100
+++ new/testfixtures-6.18.3/testfixtures/logcapture.py 2021-09-29
11:03:20.000000000 +0200
@@ -147,10 +147,12 @@
for name in self.names:
logger = logging.getLogger(name)
self.old['levels'][name] = logger.level
+ self.old['filters'][name] = logger.filters
self.old['handlers'][name] = logger.handlers
self.old['disabled'][name] = logger.disabled
self.old['propagate'][name] = logger.propagate
logger.setLevel(self.level)
+ logger.filters = []
logger.handlers = [self]
logger.disabled = False
if self.propagate is not None:
@@ -173,6 +175,7 @@
for name in self.names:
logger = logging.getLogger(name)
logger.setLevel(self.old['levels'][name])
+ logger.filters = self.old['filters'][name]
logger.handlers = self.old['handlers'][name]
logger.disabled = self.old['disabled'][name]
logger.propagate = self.old['propagate'][name]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/testfixtures-6.17.1/testfixtures/tests/test_compare.py
new/testfixtures-6.18.3/testfixtures/tests/test_compare.py
--- old/testfixtures-6.17.1/testfixtures/tests/test_compare.py 2021-01-14
09:34:46.000000000 +0100
+++ new/testfixtures-6.18.3/testfixtures/tests/test_compare.py 2021-09-29
11:03:20.000000000 +0200
@@ -1,3 +1,4 @@
+import re
from datetime import date, datetime
from decimal import Decimal
@@ -38,6 +39,15 @@
_compare = compare
+class Lazy:
+
+ def __init__(self, message):
+ self.message = message
+
+ def __str__(self):
+ return self.message
+
+
def check_raises(x=marker, y=marker, message=None, regex=None,
compare=compare, **kw):
args = []
@@ -390,6 +400,26 @@
"'x': 1 != 2"
)
+ def test_dict_identical_non_matching_ints(self):
+ self.check_raises(
+ dict(x=1, y=1), dict(x=2, y=2),
+ "dict not as expected:\n"
+ "\n"
+ "values differ:\n"
+ "'x': 1 != 2\n"
+ "'y': 1 != 2"
+ )
+
+ def test_dict_identical_non_matching_floats(self):
+ self.check_raises(
+ dict(x=1.0, y=1.0), dict(x=2.0, y=2.0),
+ "dict not as expected:\n"
+ "\n"
+ "values differ:\n"
+ "'x': 1.0 != 2.0\n"
+ "'y': 1.0 != 2.0"
+ )
+
def test_dict_labels_specified(self):
self.check_raises(
dict(x=1, y=2), dict(x=2, z=3),
@@ -1036,6 +1066,17 @@
prefix='file content'
)
+ def test_prefix_callable(self):
+ with ShouldAssert('foo: 1 != 2'):
+ compare(1, 2, prefix=lambda: 'foo')
+
+ def test_prefix_stringable(self):
+ with ShouldAssert('foo: 1 != 2'):
+ compare(1, 2, prefix=Lazy('foo'))
+
+ def test_prefix_lazy(self):
+ compare(2, 2, prefix=Mock(side_effect=Exception('boom!')))
+
def test_suffix(self):
self.check_raises(
1, 2,
@@ -1044,6 +1085,17 @@
suffix='additional context',
)
+ def test_suffix_callable(self):
+ with ShouldAssert('1 != 2\n3'):
+ compare(1, 2, suffix=lambda: 3)
+
+ def test_suffix_stringable(self):
+ with ShouldAssert('1 != 2\nfoo'):
+ compare(1, 2, suffix=Lazy('foo'))
+
+ def test_suffix_lazy(self):
+ compare(2, 2, suffix=Mock(side_effect=Exception('boom!')))
+
def test_labels_multiline(self):
self.check_raises(
'x'*5+'\n'+'y'*5, 'x'*5+'\n'+'z'*5,
@@ -1888,6 +1940,16 @@
"While comparing [2]: 'foo' != 'bar'"
)
+ def test_regex(self):
+ if PY2:
+ return
+ shared_prefix = "a" * 199
+ self.check_raises(
+ re.compile(shared_prefix + "x"),
+ re.compile(shared_prefix + "y"),
+ 'Both x and y appear as "re.compile(\''+'a'*199+')", but are not
equal!'
+ )
+
class TestIgnore(CompareHelper):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/testfixtures-6.17.1/testfixtures/tests/test_django/settings.py
new/testfixtures-6.18.3/testfixtures/tests/test_django/settings.py
--- old/testfixtures-6.17.1/testfixtures/tests/test_django/settings.py
2021-01-14 09:34:46.000000000 +0100
+++ new/testfixtures-6.18.3/testfixtures/tests/test_django/settings.py
2021-09-29 11:03:20.000000000 +0200
@@ -6,3 +6,5 @@
]
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3'}}
+
+DEFAULT_AUTO_FIELD='django.db.models.AutoField'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/testfixtures-6.17.1/testfixtures/tests/test_logcapture.py
new/testfixtures-6.18.3/testfixtures/tests/test_logcapture.py
--- old/testfixtures-6.17.1/testfixtures/tests/test_logcapture.py
2021-01-14 09:34:46.000000000 +0100
+++ new/testfixtures-6.18.3/testfixtures/tests/test_logcapture.py
2021-09-29 11:03:20.000000000 +0200
@@ -1,5 +1,5 @@
from __future__ import print_function
-from logging import getLogger, ERROR
+from logging import getLogger, ERROR, Filter
from textwrap import dedent
from unittest import TestCase
from warnings import catch_warnings
@@ -15,6 +15,11 @@
child = getLogger('one.child')
+class DummyFilter(Filter):
+ def filter(self, _):
+ return True
+
+
class TestLogCapture(TestCase):
def test_simple(self):
@@ -135,6 +140,10 @@
root = getLogger()
child = getLogger('child')
+ # Add a dummy filter so we can verify it is swapped out
+ # during the capture, and swapped back in after `uninstall`.
+ root.addFilter(DummyFilter())
+
# Lets also record the handlers for these loggers before
# we start the test:
@@ -146,6 +155,11 @@
old_root_level=root.level
old_child_level=child.level
+ # Also record the filters:
+
+ old_root_filters = root.filters[:]
+ old_child_filters = child.filters[:]
+
# Now the test:
try:
@@ -159,6 +173,9 @@
assert root.level == 1
assert child.level == 1
+ assert root.filters == []
+ assert child.filters == []
+
child.info('2')
assert str(l1) == (
"root INFO\n 1\n"
@@ -167,6 +184,11 @@
assert str(l2) == (
"child INFO\n 2"
)
+
+ # Add a dummy filter to the child,
+ # which should be removed by `uninstall`.
+ child.addFilter(DummyFilter())
+
l2.uninstall()
l1.uninstall()
assert root.level == 49
@@ -180,6 +202,10 @@
assert root.handlers == before_root
assert child.handlers == before_child
+ # Also check the filters were restored:
+ assert root.filters == old_root_filters
+ assert child.filters == old_child_filters
+
def test_uninstall_all(self):
before_handlers_root = root.handlers[:]
before_handlers_child = child.handlers[:]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/testfixtures-6.17.1/testfixtures/tests/test_mappingcomparison.py
new/testfixtures-6.18.3/testfixtures/tests/test_mappingcomparison.py
--- old/testfixtures-6.17.1/testfixtures/tests/test_mappingcomparison.py
2021-01-14 09:34:46.000000000 +0100
+++ new/testfixtures-6.18.3/testfixtures/tests/test_mappingcomparison.py
2021-09-29 11:03:20.000000000 +0200
@@ -304,3 +304,8 @@
m = MappingComparison(partial=True)
assert m != []
check_repr(m, '<MappingComparison(ordered=False,
partial=True)(failed)>bad type</>')
+
+ def test_boolean_return(self):
+ m = MappingComparison({'k': 'v'})
+ result = m != {'k': 'v'}
+ assert isinstance(result, bool)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/testfixtures-6.17.1/testfixtures/version.txt
new/testfixtures-6.18.3/testfixtures/version.txt
--- old/testfixtures-6.17.1/testfixtures/version.txt 2021-01-14
09:34:46.000000000 +0100
+++ new/testfixtures-6.18.3/testfixtures/version.txt 2021-09-29
11:03:20.000000000 +0200
@@ -1 +1 @@
-6.17.1
+6.18.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/testfixtures-6.17.1/testfixtures.egg-info/PKG-INFO
new/testfixtures-6.18.3/testfixtures.egg-info/PKG-INFO
--- old/testfixtures-6.17.1/testfixtures.egg-info/PKG-INFO 2021-01-14
09:34:53.000000000 +0100
+++ new/testfixtures-6.18.3/testfixtures.egg-info/PKG-INFO 2021-09-29
11:03:25.000000000 +0200
@@ -1,71 +1,11 @@
Metadata-Version: 2.1
Name: testfixtures
-Version: 6.17.1
+Version: 6.18.3
Summary: A collection of helpers and mock objects for unit tests and doc tests.
Home-page: https://github.com/Simplistix/testfixtures
Author: Chris Withers
Author-email: [email protected]
License: MIT
-Description: Testfixtures
- ============
-
- |CircleCI|_ |Docs|_
-
- .. |CircleCI| image::
https://circleci.com/gh/Simplistix/testfixtures/tree/master.svg?style=shield
- .. _CircleCI:
https://circleci.com/gh/Simplistix/testfixtures/tree/master
-
- .. |Docs| image::
https://readthedocs.org/projects/testfixtures/badge/?version=latest
- .. _Docs: http://testfixtures.readthedocs.org/en/latest/
-
- Testfixtures is a collection of helpers and mock objects that are
useful when
- writing automated tests in Python.
-
- The areas of testing this package can help with are listed below:
-
- **Comparing objects and sequences**
-
- Better feedback when the results aren't as you expected along with
- support for comparison of objects that don't normally support
- comparison and comparison of deeply nested datastructures.
-
- **Mocking out objects and methods**
-
- Easy to use ways of stubbing out objects, classes or individual
- methods for both doc tests and unit tests. Special helpers are
- provided for testing with dates and times.
-
- **Testing logging**
-
- Helpers for capturing logging output in both doc tests and
- unit tests.
-
- **Testing stream output**
-
- Helpers for capturing stream output, such as that from print
- statements, and making assertion about it.
-
- **Testing with files and directories**
-
- Support for creating and checking files and directories in sandboxes
- for both doc tests and unit tests.
-
- **Testing exceptions and warnings**
-
- Easy to use ways of checking that a certain exception is raised,
- or a warning is issued, even down the to the parameters provided.
-
- **Testing subprocesses**
-
- A handy mock for testing code that uses subprocesses.
-
- **Testing when using django**
-
- Helpers for comparing instances of django models.
-
- **Testing when using zope.component**
-
- An easy to use sterile component registry.
-
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
@@ -80,3 +20,66 @@
Provides-Extra: test
Provides-Extra: docs
Provides-Extra: build
+License-File: LICENSE.txt
+
+Testfixtures
+============
+
+|CircleCI|_ |Docs|_
+
+.. |CircleCI| image::
https://circleci.com/gh/simplistix/testfixtures/tree/master.svg?style=shield
+.. _CircleCI: https://circleci.com/gh/simplistix/testfixtures/tree/master
+
+.. |Docs| image::
https://readthedocs.org/projects/testfixtures/badge/?version=latest
+.. _Docs: http://testfixtures.readthedocs.org/en/latest/
+
+Testfixtures is a collection of helpers and mock objects that are useful when
+writing automated tests in Python.
+
+The areas of testing this package can help with are listed below:
+
+**Comparing objects and sequences**
+
+Better feedback when the results aren't as you expected along with
+support for comparison of objects that don't normally support
+comparison and comparison of deeply nested datastructures.
+
+**Mocking out objects and methods**
+
+Easy to use ways of stubbing out objects, classes or individual
+methods for both doc tests and unit tests. Special helpers are
+provided for testing with dates and times.
+
+**Testing logging**
+
+Helpers for capturing logging output in both doc tests and
+unit tests.
+
+**Testing stream output**
+
+Helpers for capturing stream output, such as that from print
+statements, and making assertion about it.
+
+**Testing with files and directories**
+
+Support for creating and checking files and directories in sandboxes
+for both doc tests and unit tests.
+
+**Testing exceptions and warnings**
+
+Easy to use ways of checking that a certain exception is raised,
+or a warning is issued, even down the to the parameters provided.
+
+**Testing subprocesses**
+
+A handy mock for testing code that uses subprocesses.
+
+**Testing when using django**
+
+Helpers for comparing instances of django models.
+
+**Testing when using zope.component**
+
+An easy to use sterile component registry.
+
+