From dac7edd85c6f6a757a32bde76dcae7778c060f34 Mon Sep 17 00:00:00 2001 From: chen-jan Date: Fri, 7 Jan 2022 05:00:45 +0800 Subject: [PATCH] test --- lazr/delegates/docs/fixture.py | 34 -------------- lazr/delegates/docs/usage_fixture.py | 27 ----------- lazr/delegates/tests/test_docs.py | 67 ++++++++++++++++++++++++++++ lazr/delegates/tests/test_python2.py | 11 +---- setup.cfg | 15 ------- setup.py | 7 +-- tox.ini | 17 ++++++- 7 files changed, 85 insertions(+), 93 deletions(-) delete mode 100644 lazr/delegates/docs/fixture.py delete mode 100644 lazr/delegates/docs/usage_fixture.py create mode 100644 lazr/delegates/tests/test_docs.py delete mode 100644 setup.cfg diff --git a/lazr/delegates/docs/fixture.py b/lazr/delegates/docs/fixture.py deleted file mode 100644 index 1d4aced..0000000 --- a/lazr/delegates/docs/fixture.py +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright 2009-2015 Canonical Ltd. All rights reserved. -# -# This file is part of lazr.delegates -# -# lazr.delegates is free software: you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, version 3 of the License. -# -# lazr.delegates is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public -# License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with lazr.delegates. If not, see . - -"""Doctest fixtures for running under nose.""" - -from __future__ import absolute_import, print_function, unicode_literals - -__metaclass__ = type -__all__ = [ - 'globs', - ] - - -def globs(globs): - """Set up globals for doctests.""" - # Enable future statements to make Python 2 act more like Python 3. - globs['absolute_import'] = absolute_import - globs['print_function'] = print_function - globs['unicode_literals'] = unicode_literals - # Provide a convenient way to clean things up at the end of the test. - return globs diff --git a/lazr/delegates/docs/usage_fixture.py b/lazr/delegates/docs/usage_fixture.py deleted file mode 100644 index 7012cf7..0000000 --- a/lazr/delegates/docs/usage_fixture.py +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright 2009-2015 Canonical Ltd. All rights reserved. -# -# This file is part of lazr.delegates -# -# lazr.delegates is free software: you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, version 3 of the License. -# -# lazr.delegates is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public -# License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with lazr.delegates. If not, see . - -"""Doctest fixtures for running under nose.""" - -from __future__ import absolute_import, print_function, unicode_literals - -__metaclass__ = type -__all__ = [ - 'globs', - ] - - -from lazr.delegates.docs.fixture import globs diff --git a/lazr/delegates/tests/test_docs.py b/lazr/delegates/tests/test_docs.py new file mode 100644 index 0000000..7ca6971 --- /dev/null +++ b/lazr/delegates/tests/test_docs.py @@ -0,0 +1,67 @@ +# Copyright 2009-2021 Canonical Ltd. All rights reserved. +# +# This file is part of lazr.delegates. +# +# lazr.delegates is free software: you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, version 3 of the License. +# +# lazr.delegates is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +# License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with lazr.delegates. If not, see . + +"""Test harness for doctests.""" + +from __future__ import absolute_import, print_function, unicode_literals + +__metaclass__ = type +__all__ = [] + +import atexit +import doctest +import os + +from pkg_resources import ( + resource_filename, + resource_exists, + resource_listdir, + cleanup_resources, +) + + +DOCTEST_FLAGS = ( + doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE | doctest.REPORT_NDIFF +) + + +def load_tests(loader, tests, pattern): + """Load the doc tests (docs/*, if any exist).""" + doctest_files = [] + if resource_exists("lazr.delegates", "docs"): + for name in resource_listdir("lazr.delegates", "docs"): + if name.endswith(".rst"): + doctest_files.append( + os.path.abspath( + resource_filename("lazr.delegates", "docs/%s" % name) + ) + ) + atexit.register(cleanup_resources) + globs = { + "absolute_import": absolute_import, + "print_function": print_function, + "unicode_literals": unicode_literals, + } + tests.addTest( + doctest.DocFileSuite( + *doctest_files, + module_relative=False, + optionflags=DOCTEST_FLAGS, + globs=globs, + encoding="UTF-8" + ) + ) + return tests diff --git a/lazr/delegates/tests/test_python2.py b/lazr/delegates/tests/test_python2.py index 1cc873b..ad3de7e 100644 --- a/lazr/delegates/tests/test_python2.py +++ b/lazr/delegates/tests/test_python2.py @@ -63,14 +63,7 @@ class BaseOtherFoo(BaseFoo): another = 'yes, another' -# Python 2.6 doesn't have skips. -def skip_python3(cls): - if sys.version_info[0] > 2: - return None - return cls - - -@skip_python3 +@unittest.skipIf(sys.version_info[0] > 2, "only relevant in Python 2") class TestLegacyAPI(unittest.TestCase): def test_basic_usage(self): class SomeClass(object): @@ -146,7 +139,7 @@ class TestLegacyAPI(unittest.TestCase): self.assertTrue(IOther.providedBy(foo_with_teapot)) -@skip_python3 +@unittest.skipIf(sys.version_info[0] > 2, "only relevant in Python 2") class TestNewAPI(unittest.TestCase): """Test corner cases in Python 2. diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index ffe1614..0000000 --- a/setup.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[nosetests] -verbosity = 3 -with-coverage = 1 -with-doctest = 1 -doctest-extension = .rst -doctest-options = +ELLIPSIS,+NORMALIZE_WHITESPACE,+REPORT_NDIFF -doctest-fixtures = _fixture -cover-package = lazr.delegates -pdb = 1 - -[egg_info] -tag_build = -tag_date = 0 -tag_svn_revision = 0 - diff --git a/setup.py b/setup.py index 8e16e49..c40bdbf 100755 --- a/setup.py +++ b/setup.py @@ -37,7 +37,6 @@ delegating behavior. """, license='LGPL v3', install_requires=[ - 'nose', 'setuptools', 'zope.interface', ], @@ -49,12 +48,8 @@ delegating behavior. "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Operating System :: OS Independent", 'Programming Language :: Python', - 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.9', ], - # nose plugins don't really work with `python setup.py test` so use - # `python setup.py nosetests` instead, or just `tox`. Gosh, we really - # should switch to nose2. :/ - BAW 2014-08-20 - #test_suite='nose.collector', ) diff --git a/tox.ini b/tox.ini index 12a635e..db96714 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,18 @@ [tox] -envlist = py27,py32,py33,py34,py35 +envlist = + py27 + py32 + py33 + py34 + py35 + py36 + py37 + py38 + py39 + coverage [testenv] -commands = python setup.py nosetests +deps = + . + zope.testrunner +commands = -- 2.30.0