From 59636609db61d0348d9aaab1370cc57606ab509b Mon Sep 17 00:00:00 2001 From: Hugo Date: Wed, 26 Sep 2018 20:54:00 +0300 Subject: [PATCH 1/3] Drop support for EOL Python --- .coveragerc | 1 - .travis.yml | 4 ---- mwparserfromhell/compat.py | 2 -- mwparserfromhell/string_mixin.py | 11 +---------- setup.py | 13 +++++-------- tests/_test_tree_equality.py | 6 +----- tests/discover.py | 9 +-------- tests/test_argument.py | 6 +----- tests/test_attribute.py | 6 +----- tests/test_builder.py | 6 +----- tests/test_comment.py | 6 +----- tests/test_ctokenizer.py | 6 +----- tests/test_docs.py | 6 +----- tests/test_external_link.py | 6 +----- tests/test_heading.py | 6 +----- tests/test_html_entity.py | 6 +----- tests/test_parameter.py | 6 +----- tests/test_parser.py | 6 +----- tests/test_pytokenizer.py | 6 +----- tests/test_roundtripping.py | 6 +----- tests/test_smart_list.py | 6 +----- tests/test_string_mixin.py | 18 ++++++------------ tests/test_tag.py | 6 +----- tests/test_template.py | 6 +----- tests/test_text.py | 6 +----- tests/test_tokens.py | 6 +----- tests/test_utils.py | 6 +----- tests/test_wikicode.py | 6 +----- tests/test_wikilink.py | 6 +----- 29 files changed, 35 insertions(+), 155 deletions(-) diff --git a/.coveragerc b/.coveragerc index 48a64ce..909a0e2 100644 --- a/.coveragerc +++ b/.coveragerc @@ -6,4 +6,3 @@ partial_branches = pragma: no branch if py3k: if not py3k: - if py26: diff --git a/.travis.yml b/.travis.yml index c0233d9..5fc2718 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,12 @@ language: python python: - - 2.6 - 2.7 - - 3.2 - - 3.3 - 3.4 - 3.5 - 3.6 - nightly sudo: false install: - - if [[ $TRAVIS_PYTHON_VERSION == '3.2' ]]; then pip install coverage==3.7.1; fi - pip install coveralls - python setup.py build script: diff --git a/mwparserfromhell/compat.py b/mwparserfromhell/compat.py index 7a83cd1..85f9d48 100644 --- a/mwparserfromhell/compat.py +++ b/mwparserfromhell/compat.py @@ -10,9 +10,7 @@ meant to be imported directly from within the parser's modules. import sys -py26 = (sys.version_info[0] == 2) and (sys.version_info[1] == 6) py3k = (sys.version_info[0] == 3) -py32 = py3k and (sys.version_info[1] == 2) if py3k: bytes = bytes diff --git a/mwparserfromhell/string_mixin.py b/mwparserfromhell/string_mixin.py index 88898a1..b33e0ab 100644 --- a/mwparserfromhell/string_mixin.py +++ b/mwparserfromhell/string_mixin.py @@ -28,7 +28,7 @@ interface for the ``unicode`` type (``str`` on py3k) in a dynamic manner. from __future__ import unicode_literals from sys import getdefaultencoding -from .compat import bytes, py26, py3k, str +from .compat import bytes, py3k, str __all__ = ["StringMixIn"] @@ -116,14 +116,5 @@ class StringMixIn(object): if py3k: maketrans = str.maketrans # Static method can't rely on __getattr__ - if py26: - @inheritdoc - def encode(self, encoding=None, errors=None): - if encoding is None: - encoding = getdefaultencoding() - if errors is not None: - return self.__unicode__().encode(encoding, errors) - return self.__unicode__().encode(encoding) - del inheritdoc diff --git a/setup.py b/setup.py index 0b33d42..ba7f706 100644 --- a/setup.py +++ b/setup.py @@ -27,15 +27,15 @@ from glob import glob from os import environ import sys -if ((sys.version_info[0] == 2 and sys.version_info[1] < 6) or - (sys.version_info[1] == 3 and sys.version_info[1] < 2)): - raise RuntimeError("mwparserfromhell needs Python 2.6+ or 3.2+") +if ((sys.version_info[0] == 2 and sys.version_info[1] < 7) or + (sys.version_info[1] == 3 and sys.version_info[1] < 4)): + raise RuntimeError("mwparserfromhell needs Python 2.7 or 3.4+") from setuptools import setup, find_packages, Extension from setuptools.command.build_ext import build_ext from mwparserfromhell import __version__ -from mwparserfromhell.compat import py26, py3k +from mwparserfromhell.compat import py3k with open("README.rst", **({'encoding':'utf-8'} if py3k else {})) as fp: long_docs = fp.read() @@ -82,7 +82,6 @@ setup( name = "mwparserfromhell", packages = find_packages(exclude=("tests",)), ext_modules = [tokenizer] if use_extension else [], - tests_require = ["unittest2"] if py26 else [], test_suite = "tests.discover", version = __version__, author = "Ben Kurtovic", @@ -99,11 +98,9 @@ setup( "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", - "Programming Language :: Python :: 2.6", + "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.2", - "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", diff --git a/tests/_test_tree_equality.py b/tests/_test_tree_equality.py index fe626ce..3c9aa0e 100644 --- a/tests/_test_tree_equality.py +++ b/tests/_test_tree_equality.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - from unittest2 import TestCase -except ImportError: - from unittest import TestCase +from unittest import TestCase from mwparserfromhell.compat import range from mwparserfromhell.nodes import (Argument, Comment, Heading, HTMLEntity, diff --git a/tests/discover.py b/tests/discover.py index 6bb971b..a41af83 100644 --- a/tests/discover.py +++ b/tests/discover.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """ -Discover tests using ``unittest2` for Python 2.6. - It appears the default distutils test suite doesn't play nice with ``setUpClass`` thereby making some tests fail. Using ``unittest2`` to load tests seems to work around that issue. @@ -12,12 +10,7 @@ http://stackoverflow.com/a/17004409/753501 import os.path -from mwparserfromhell.compat import py26 - -if py26: - import unittest2 as unittest -else: - import unittest +import unittest def additional_tests(): project_root = os.path.split(os.path.dirname(__file__))[0] diff --git a/tests/test_argument.py b/tests/test_argument.py index 6209b2f..16b4d0c 100644 --- a/tests/test_argument.py +++ b/tests/test_argument.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import str from mwparserfromhell.nodes import Argument, Text diff --git a/tests/test_attribute.py b/tests/test_attribute.py index 7fe5772..a36f59f 100644 --- a/tests/test_attribute.py +++ b/tests/test_attribute.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import str from mwparserfromhell.nodes import Template diff --git a/tests/test_builder.py b/tests/test_builder.py index eed5861..67e0043 100644 --- a/tests/test_builder.py +++ b/tests/test_builder.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import py3k from mwparserfromhell.nodes import (Argument, Comment, ExternalLink, Heading, diff --git a/tests/test_comment.py b/tests/test_comment.py index 27129c9..cf2f14d 100644 --- a/tests/test_comment.py +++ b/tests/test_comment.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import str from mwparserfromhell.nodes import Comment diff --git a/tests/test_ctokenizer.py b/tests/test_ctokenizer.py index 27ff237..3552a02 100644 --- a/tests/test_ctokenizer.py +++ b/tests/test_ctokenizer.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest try: from mwparserfromhell.parser._tokenizer import CTokenizer diff --git a/tests/test_docs.py b/tests/test_docs.py index 398be4c..bc4da1d 100644 --- a/tests/test_docs.py +++ b/tests/test_docs.py @@ -23,11 +23,7 @@ from __future__ import print_function, unicode_literals import json import os - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest import mwparserfromhell from mwparserfromhell.compat import py3k, str diff --git a/tests/test_external_link.py b/tests/test_external_link.py index 8cb3158..c70905a 100644 --- a/tests/test_external_link.py +++ b/tests/test_external_link.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import str from mwparserfromhell.nodes import ExternalLink, Text diff --git a/tests/test_heading.py b/tests/test_heading.py index 5e6776a..e5ec470 100644 --- a/tests/test_heading.py +++ b/tests/test_heading.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import str from mwparserfromhell.nodes import Heading, Text diff --git a/tests/test_html_entity.py b/tests/test_html_entity.py index 4db1c13..fc09fde 100644 --- a/tests/test_html_entity.py +++ b/tests/test_html_entity.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import str from mwparserfromhell.nodes import HTMLEntity diff --git a/tests/test_parameter.py b/tests/test_parameter.py index 44c30af..be09448 100644 --- a/tests/test_parameter.py +++ b/tests/test_parameter.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import str from mwparserfromhell.nodes import Text diff --git a/tests/test_parser.py b/tests/test_parser.py index d586ecd..5b12a0e 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell import parser from mwparserfromhell.compat import range diff --git a/tests/test_pytokenizer.py b/tests/test_pytokenizer.py index f7f26b8..85a55b9 100644 --- a/tests/test_pytokenizer.py +++ b/tests/test_pytokenizer.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.parser.tokenizer import Tokenizer diff --git a/tests/test_roundtripping.py b/tests/test_roundtripping.py index a217e21..50f9c1f 100644 --- a/tests/test_roundtripping.py +++ b/tests/test_roundtripping.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from ._test_tokenizer import TokenizerTestCase diff --git a/tests/test_smart_list.py b/tests/test_smart_list.py index 3de7db7..6569c8a 100644 --- a/tests/test_smart_list.py +++ b/tests/test_smart_list.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import py3k, range from mwparserfromhell.smart_list import SmartList, _ListProxy diff --git a/tests/test_string_mixin.py b/tests/test_string_mixin.py index 08d5b9e..e6c133f 100644 --- a/tests/test_string_mixin.py +++ b/tests/test_string_mixin.py @@ -23,13 +23,9 @@ from __future__ import unicode_literals from sys import getdefaultencoding from types import GeneratorType +import unittest -try: - import unittest2 as unittest -except ImportError: - import unittest - -from mwparserfromhell.compat import bytes, py3k, py32, range, str +from mwparserfromhell.compat import bytes, py3k, range, str from mwparserfromhell.string_mixin import StringMixIn class _FakeString(StringMixIn): @@ -54,9 +50,7 @@ class TestStringMixIn(unittest.TestCase): "rsplit", "rstrip", "split", "splitlines", "startswith", "strip", "swapcase", "title", "translate", "upper", "zfill"] if py3k: - if not py32: - methods.append("casefold") - methods.extend(["format_map", "isidentifier", "isprintable", + methods.extend(["casefold", "format_map", "isidentifier", "isprintable", "maketrans"]) else: methods.append("decode") @@ -329,7 +323,7 @@ class TestStringMixIn(unittest.TestCase): self.assertEqual("", str15.lower()) self.assertEqual("foobar", str16.lower()) self.assertEqual("ß", str22.lower()) - if py3k and not py32: + if py3k: self.assertEqual("", str15.casefold()) self.assertEqual("foobar", str16.casefold()) self.assertEqual("ss", str22.casefold()) @@ -378,7 +372,7 @@ class TestStringMixIn(unittest.TestCase): self.assertEqual(actual, str25.rsplit(None, 3)) actual = [" this is a sentence with", "", "whitespace", ""] self.assertEqual(actual, str25.rsplit(" ", 3)) - if py3k and not py32: + if py3k: actual = [" this is a", "sentence", "with", "whitespace"] self.assertEqual(actual, str25.rsplit(maxsplit=3)) @@ -396,7 +390,7 @@ class TestStringMixIn(unittest.TestCase): self.assertEqual(actual, str25.split(None, 3)) actual = ["", "", "", "this is a sentence with whitespace "] self.assertEqual(actual, str25.split(" ", 3)) - if py3k and not py32: + if py3k: actual = ["this", "is", "a", "sentence with whitespace "] self.assertEqual(actual, str25.split(maxsplit=3)) diff --git a/tests/test_tag.py b/tests/test_tag.py index 2e6d8a3..c8c9808 100644 --- a/tests/test_tag.py +++ b/tests/test_tag.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import str from mwparserfromhell.nodes import Tag, Template, Text diff --git a/tests/test_template.py b/tests/test_template.py index 5b939f0..e03a564 100644 --- a/tests/test_template.py +++ b/tests/test_template.py @@ -22,11 +22,7 @@ from __future__ import unicode_literals from difflib import unified_diff - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import str from mwparserfromhell.nodes import HTMLEntity, Template, Text diff --git a/tests/test_text.py b/tests/test_text.py index aaf8db2..4464418 100644 --- a/tests/test_text.py +++ b/tests/test_text.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import str from mwparserfromhell.nodes import Text diff --git a/tests/test_tokens.py b/tests/test_tokens.py index b33c2f1..e766002 100644 --- a/tests/test_tokens.py +++ b/tests/test_tokens.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import py3k from mwparserfromhell.parser import tokens diff --git a/tests/test_utils.py b/tests/test_utils.py index 342cfd7..b79b544 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.nodes import Template, Text from mwparserfromhell.utils import parse_anything diff --git a/tests/test_wikicode.py b/tests/test_wikicode.py index c77fdd2..12a1761 100644 --- a/tests/test_wikicode.py +++ b/tests/test_wikicode.py @@ -24,11 +24,7 @@ from __future__ import unicode_literals from functools import partial import re from types import GeneratorType - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import py3k, str from mwparserfromhell.nodes import (Argument, Comment, Heading, HTMLEntity, diff --git a/tests/test_wikilink.py b/tests/test_wikilink.py index 80116ca..487b7af 100644 --- a/tests/test_wikilink.py +++ b/tests/test_wikilink.py @@ -21,11 +21,7 @@ # SOFTWARE. from __future__ import unicode_literals - -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest from mwparserfromhell.compat import str from mwparserfromhell.nodes import Text, Wikilink From e457b39f3212871ea5ab8f972bb996b347e5b6c1 Mon Sep 17 00:00:00 2001 From: Hugo Date: Wed, 26 Sep 2018 20:55:36 +0300 Subject: [PATCH 2/3] Upgrade Python syntax with pyupgrade https://github.com/asottile/pyupgrade --- mwparserfromhell/nodes/extras/attribute.py | 4 ++-- mwparserfromhell/nodes/extras/parameter.py | 2 +- mwparserfromhell/nodes/html_entity.py | 6 +++--- mwparserfromhell/parser/__init__.py | 2 +- mwparserfromhell/parser/tokens.py | 2 +- mwparserfromhell/string_mixin.py | 2 +- scripts/memtest.py | 4 ++-- setup.py | 2 +- tests/_test_tokenizer.py | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/mwparserfromhell/nodes/extras/attribute.py b/mwparserfromhell/nodes/extras/attribute.py index 0f55a6b..59473c4 100644 --- a/mwparserfromhell/nodes/extras/attribute.py +++ b/mwparserfromhell/nodes/extras/attribute.py @@ -40,7 +40,7 @@ class Attribute(StringMixIn): pad_before_eq="", pad_after_eq="", check_quotes=True): super(Attribute, self).__init__() if check_quotes and not quotes and self._value_needs_quotes(value): - raise ValueError("given value {0!r} requires quotes".format(value)) + raise ValueError("given value {!r} requires quotes".format(value)) self._name = name self._value = value self._quotes = quotes @@ -79,7 +79,7 @@ class Attribute(StringMixIn): """Coerce a quote type into an acceptable value, or raise an error.""" orig, quotes = quotes, str(quotes) if quotes else None if quotes not in [None, '"', "'"]: - raise ValueError("{0!r} is not a valid quote type".format(orig)) + raise ValueError("{!r} is not a valid quote type".format(orig)) return quotes @property diff --git a/mwparserfromhell/nodes/extras/parameter.py b/mwparserfromhell/nodes/extras/parameter.py index 0d21d5b..dff8492 100644 --- a/mwparserfromhell/nodes/extras/parameter.py +++ b/mwparserfromhell/nodes/extras/parameter.py @@ -41,7 +41,7 @@ class Parameter(StringMixIn): def __init__(self, name, value, showkey=True): super(Parameter, self).__init__() if not showkey and not self.can_hide_key(name): - raise ValueError("key {0!r} cannot be hidden".format(name)) + raise ValueError("key {!r} cannot be hidden".format(name)) self._name = name self._value = value self._showkey = showkey diff --git a/mwparserfromhell/nodes/html_entity.py b/mwparserfromhell/nodes/html_entity.py index d5e9d73..ea534e9 100644 --- a/mwparserfromhell/nodes/html_entity.py +++ b/mwparserfromhell/nodes/html_entity.py @@ -53,10 +53,10 @@ class HTMLEntity(Node): def __unicode__(self): if self.named: - return "&{0};".format(self.value) + return "&{};".format(self.value) if self.hexadecimal: - return "&#{0}{1};".format(self.hex_char, self.value) - return "&#{0};".format(self.value) + return "&#{}{};".format(self.hex_char, self.value) + return "&#{};".format(self.value) def __strip__(self, **kwargs): if kwargs.get("normalize"): diff --git a/mwparserfromhell/parser/__init__.py b/mwparserfromhell/parser/__init__.py index f39fdc4..de60226 100644 --- a/mwparserfromhell/parser/__init__.py +++ b/mwparserfromhell/parser/__init__.py @@ -35,7 +35,7 @@ class ParserError(Exception): can happen. Its appearance indicates a bug. """ def __init__(self, extra): - msg = "This is a bug and should be reported. Info: {0}.".format(extra) + msg = "This is a bug and should be reported. Info: {}.".format(extra) super(ParserError, self).__init__(msg) diff --git a/mwparserfromhell/parser/tokens.py b/mwparserfromhell/parser/tokens.py index 036dc9b..3110179 100644 --- a/mwparserfromhell/parser/tokens.py +++ b/mwparserfromhell/parser/tokens.py @@ -44,7 +44,7 @@ class Token(dict): args.append(key + "=" + repr(value[:97] + "...")) else: args.append(key + "=" + repr(value)) - return "{0}({1})".format(type(self).__name__, ", ".join(args)) + return "{}({})".format(type(self).__name__, ", ".join(args)) def __eq__(self, other): return isinstance(other, type(self)) and dict.__eq__(self, other) diff --git a/mwparserfromhell/string_mixin.py b/mwparserfromhell/string_mixin.py index b33e0ab..3664a09 100644 --- a/mwparserfromhell/string_mixin.py +++ b/mwparserfromhell/string_mixin.py @@ -109,7 +109,7 @@ class StringMixIn(object): def __getattr__(self, attr): if not hasattr(str, attr): - raise AttributeError("{0!r} object has no attribute {1!r}".format( + raise AttributeError("{!r} object has no attribute {!r}".format( type(self).__name__, attr)) return getattr(self.__unicode__(), attr) diff --git a/scripts/memtest.py b/scripts/memtest.py index 823560d..64e8c6b 100644 --- a/scripts/memtest.py +++ b/scripts/memtest.py @@ -80,7 +80,7 @@ class MemoryTest(object): raw = raw.encode("raw_unicode_escape") data["input"] = raw.decode("unicode_escape") number = str(counter).zfill(digits) - fname = "test_{0}{1}_{2}".format(name, number, data["name"]) + fname = "test_{}{}_{}".format(name, number, data["name"]) self._tests.append((fname, data["input"])) counter += 1 @@ -117,7 +117,7 @@ class MemoryTest(object): tmpl = "{0}LEAKING{1}: {2:n} bytes, {3:.2%} inc ({4:n} bytes/loop)" sys.stdout.write(tmpl.format(Color.YELLOW, Color.RESET, d, p, bpt)) else: - sys.stdout.write("{0}OK{1}".format(Color.GREEN, Color.RESET)) + sys.stdout.write("{}OK{}".format(Color.GREEN, Color.RESET)) def run(self): """Run the memory test suite.""" diff --git a/setup.py b/setup.py index ba7f706..cb2491f 100644 --- a/setup.py +++ b/setup.py @@ -89,7 +89,7 @@ setup( url = "https://github.com/earwig/mwparserfromhell", description = "MWParserFromHell is a parser for MediaWiki wikicode.", long_description = long_docs, - download_url = "https://github.com/earwig/mwparserfromhell/tarball/v{0}".format(__version__), + download_url = "https://github.com/earwig/mwparserfromhell/tarball/v{}".format(__version__), keywords = "earwig mwparserfromhell wikipedia wiki mediawiki wikicode template parsing", license = "MIT License", classifiers = [ diff --git a/tests/_test_tokenizer.py b/tests/_test_tokenizer.py index d025625..187f5eb 100644 --- a/tests/_test_tokenizer.py +++ b/tests/_test_tokenizer.py @@ -118,7 +118,7 @@ class TokenizerTestCase(object): if restrict and data["name"] != restrict: continue - fname = "test_{0}{1}_{2}".format(name, number, data["name"]) + fname = "test_{}{}_{}".format(name, number, data["name"]) meth = cls._build_test_method(fname, data) setattr(cls, fname, meth) From f372d3d4951cff192a9a8fd524e90b9fea5023e7 Mon Sep 17 00:00:00 2001 From: Hugo Date: Wed, 26 Sep 2018 21:00:08 +0300 Subject: [PATCH 3/3] Upgrade unit test asserts --- tests/test_smart_list.py | 56 +++++++++++++++++++------------------- tests/test_string_mixin.py | 68 +++++++++++++++++++++++----------------------- 2 files changed, 62 insertions(+), 62 deletions(-) diff --git a/tests/test_smart_list.py b/tests/test_smart_list.py index 6569c8a..3c9f711 100644 --- a/tests/test_smart_list.py +++ b/tests/test_smart_list.py @@ -135,36 +135,36 @@ class TestSmartList(unittest.TestCase): self.assertEqual(b"[0, 1, 2, 3, u'one', u'two']", str(list1)) self.assertEqual(b"[0, 1, 2, 3, u'one', u'two']", repr(list1)) - self.assertTrue(list1 < list3) - self.assertTrue(list1 <= list3) - self.assertFalse(list1 == list3) - self.assertTrue(list1 != list3) - self.assertFalse(list1 > list3) - self.assertFalse(list1 >= list3) + self.assertLess(list1, list3) + self.assertLessEqual(list1, list3) + self.assertNotEqual(list1, list3) + self.assertNotEqual(list1, list3) + self.assertLessEqual(list1, list3) + self.assertLess(list1, list3) other1 = [0, 2, 3, 4] - self.assertTrue(list1 < other1) - self.assertTrue(list1 <= other1) - self.assertFalse(list1 == other1) - self.assertTrue(list1 != other1) - self.assertFalse(list1 > other1) - self.assertFalse(list1 >= other1) + self.assertLess(list1, other1) + self.assertLessEqual(list1, other1) + self.assertNotEqual(list1, other1) + self.assertNotEqual(list1, other1) + self.assertLessEqual(list1, other1) + self.assertLess(list1, other1) other2 = [0, 0, 1, 2] - self.assertFalse(list1 < other2) - self.assertFalse(list1 <= other2) - self.assertFalse(list1 == other2) - self.assertTrue(list1 != other2) - self.assertTrue(list1 > other2) - self.assertTrue(list1 >= other2) + self.assertGreaterEqual(list1, other2) + self.assertGreater(list1, other2) + self.assertNotEqual(list1, other2) + self.assertNotEqual(list1, other2) + self.assertGreater(list1, other2) + self.assertGreaterEqual(list1, other2) other3 = [0, 1, 2, 3, "one", "two"] - self.assertFalse(list1 < other3) - self.assertTrue(list1 <= other3) - self.assertTrue(list1 == other3) - self.assertFalse(list1 != other3) - self.assertFalse(list1 > other3) - self.assertTrue(list1 >= other3) + self.assertGreaterEqual(list1, other3) + self.assertLessEqual(list1, other3) + self.assertEqual(list1, other3) + self.assertEqual(list1, other3) + self.assertLessEqual(list1, other3) + self.assertGreaterEqual(list1, other3) self.assertTrue(bool(list1)) self.assertFalse(bool(list2)) @@ -194,10 +194,10 @@ class TestSmartList(unittest.TestCase): self.assertEqual(["two", "one", 3, 2, 1, 0], list(reversed(list1))) self.assertEqual([], list(reversed(list2))) - self.assertTrue("one" in list1) - self.assertTrue(3 in list1) - self.assertFalse(10 in list1) - self.assertFalse(0 in list2) + self.assertIn("one", list1) + self.assertIn(3, list1) + self.assertNotIn(10, list1) + self.assertNotIn(0, list2) self.assertEqual([], list2 * 5) self.assertEqual([], 5 * list2) diff --git a/tests/test_string_mixin.py b/tests/test_string_mixin.py index e6c133f..11ee6b7 100644 --- a/tests/test_string_mixin.py +++ b/tests/test_string_mixin.py @@ -84,33 +84,33 @@ class TestStringMixIn(unittest.TestCase): str4 = "this is a fake string" str5 = "fake string, this is" - self.assertFalse(str1 > str2) - self.assertTrue(str1 >= str2) - self.assertTrue(str1 == str2) - self.assertFalse(str1 != str2) - self.assertFalse(str1 < str2) - self.assertTrue(str1 <= str2) - - self.assertTrue(str1 > str3) - self.assertTrue(str1 >= str3) - self.assertFalse(str1 == str3) - self.assertTrue(str1 != str3) - self.assertFalse(str1 < str3) - self.assertFalse(str1 <= str3) - - self.assertFalse(str1 > str4) - self.assertTrue(str1 >= str4) - self.assertTrue(str1 == str4) - self.assertFalse(str1 != str4) - self.assertFalse(str1 < str4) - self.assertTrue(str1 <= str4) - - self.assertFalse(str5 > str1) - self.assertFalse(str5 >= str1) - self.assertFalse(str5 == str1) - self.assertTrue(str5 != str1) - self.assertTrue(str5 < str1) - self.assertTrue(str5 <= str1) + self.assertLessEqual(str1, str2) + self.assertGreaterEqual(str1, str2) + self.assertEqual(str1, str2) + self.assertEqual(str1, str2) + self.assertGreaterEqual(str1, str2) + self.assertLessEqual(str1, str2) + + self.assertGreater(str1, str3) + self.assertGreaterEqual(str1, str3) + self.assertNotEqual(str1, str3) + self.assertNotEqual(str1, str3) + self.assertGreaterEqual(str1, str3) + self.assertGreater(str1, str3) + + self.assertLessEqual(str1, str4) + self.assertGreaterEqual(str1, str4) + self.assertEqual(str1, str4) + self.assertEqual(str1, str4) + self.assertGreaterEqual(str1, str4) + self.assertLessEqual(str1, str4) + + self.assertLessEqual(str5, str1) + self.assertLess(str5, str1) + self.assertNotEqual(str5, str1) + self.assertNotEqual(str5, str1) + self.assertLess(str5, str1) + self.assertLessEqual(str5, str1) def test_other_magics(self): """test other magically implemented features, like len() and iter()""" @@ -155,13 +155,13 @@ class TestStringMixIn(unittest.TestCase): self.assertRaises(IndexError, lambda: str1[11]) self.assertRaises(IndexError, lambda: str2[0]) - self.assertTrue("k" in str1) - self.assertTrue("fake" in str1) - self.assertTrue("str" in str1) - self.assertTrue("" in str1) - self.assertTrue("" in str2) - self.assertFalse("real" in str1) - self.assertFalse("s" in str2) + self.assertIn("k", str1) + self.assertIn("fake", str1) + self.assertIn("str", str1) + self.assertIn("", str1) + self.assertIn("", str2) + self.assertNotIn("real", str1) + self.assertNotIn("s", str2) def test_other_methods(self): """test the remaining non-magic methods of StringMixIn"""