jenkins-bot has submitted this change and it was merged.
Change subject: PEP257 tests/ ......................................................................
PEP257 tests/
Change-Id: I8a3254fc48090b50f68c89a81a7d35f29edb4d25 --- M tests/__init__.py M tests/data_ingestion_tests.py M tests/date_tests.py M tests/file_tests.py M tests/i18n/__init__.py M tests/i18n/test.py M tests/i18n_tests.py M tests/interwiki_link_tests.py M tests/ipregex_tests.py M tests/link_tests.py M tests/page_tests.py M tests/pagegenerators_tests.py M tests/pwb/print_locals.py M tests/pwb_tests.py M tests/site_tests.py M tests/textlib_tests.py M tests/timestripper_tests.py M tests/ui_tests.py M tests/weblib_tests.py M tests/wikibase_tests.py M tests/wikidataquery_tests.py M tests/xmlreader_tests.py M tox.ini 23 files changed, 159 insertions(+), 30 deletions(-)
Approvals: John Vandenberg: Looks good to me, but someone else must approve XZise: Looks good to me, approved jenkins-bot: Verified
diff --git a/tests/__init__.py b/tests/__init__.py index e2bdd7a..b903565 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""Package tests.""" # # (C) Pywikibot team, 2007-2014 # @@ -17,16 +18,16 @@ # - ordereddict is only needed as a fallback for python 2.6 # - mwparserfromhell is optional, so is only imported in textlib_tests try: - import httplib2 + import httplib2 # noqa except ImportError as e: print("ImportError: %s" % e) sys.exit(1)
try: - from collections import OrderedDict + from collections import OrderedDict # noqa except ImportError: try: - from ordereddict import OrderedDict + from ordereddict import OrderedDict # noqa except ImportError as e: print("ImportError: %s" % e) if sys.version_info[0] == 2 and sys.version_info[1] == 6: @@ -191,6 +192,7 @@ """Add caching to every Request except logins."""
def __init__(self, *args, **kwargs): + """Constructor.""" super(TestRequest, self).__init__(0, *args, **kwargs)
def _expired(self, dt): @@ -225,6 +227,7 @@
def patch_request(): + """Patch Request classes with TestRequest.""" global original_expired pywikibot.data.api.Request = TestRequest original_expired = pywikibot.data.api.CachedRequest._expired @@ -232,5 +235,6 @@
def unpatch_request(): + """Un-patch Request classes with TestRequest.""" pywikibot.data.api.Request = _original_Request pywikibot.data.api.CachedRequest._expired = original_expired diff --git a/tests/data_ingestion_tests.py b/tests/data_ingestion_tests.py index 7586528..deec8a1 100644 --- a/tests/data_ingestion_tests.py +++ b/tests/data_ingestion_tests.py @@ -1,7 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*-
-"""Unit tests for data_ingestion.py""" +"""Unit tests for data_ingestion.py script.""" __version__ = '$Id$'
import os @@ -11,6 +11,8 @@
class TestPhoto(TestCase): + + """Test Photo class."""
net = True
@@ -50,6 +52,8 @@
class TestCSVReader(TestCase):
+ """Test CSVReader class.""" + net = False
def setUp(self): diff --git a/tests/date_tests.py b/tests/date_tests.py index 5d26688..8c236f3 100644 --- a/tests/date_tests.py +++ b/tests/date_tests.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""Tests for the date module.""" # # (C) Pywikibot team, 2014 # @@ -12,10 +13,10 @@
class TestDateMeta(MetaTestCaseClass):
- """Test meta class""" + """Date test meta class."""
def __new__(cls, name, bases, dct): - """Create the new class""" + """Create the new class.""" def test_method(formatname):
def testMapEntry(self): diff --git a/tests/file_tests.py b/tests/file_tests.py index 8f204bd..f8a7c14 100644 --- a/tests/file_tests.py +++ b/tests/file_tests.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""FilePage tests.""" # # (C) Pywikibot team, 2014 # @@ -13,6 +14,8 @@
class TestShareFiles(TestCase):
+ """Test methods fileIsShared, exists and fileUrl with shared files.""" + sites = { 'enwiki': { 'family': 'wikipedia', diff --git a/tests/i18n/__init__.py b/tests/i18n/__init__.py index e69de29..66f0234 100644 --- a/tests/i18n/__init__.py +++ b/tests/i18n/__init__.py @@ -0,0 +1 @@ +""" Test i18n data package. """ diff --git a/tests/i18n/test.py b/tests/i18n/test.py index 048b063..b2585f7 100644 --- a/tests/i18n/test.py +++ b/tests/i18n/test.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +""" Test i18n data. """ msg = { 'de': { 'test-plural': u'Bot: Ändere %(num)d {{PLURAL:num|Seite|Seiten}}.', diff --git a/tests/i18n_tests.py b/tests/i18n_tests.py index 39c9ef2..63b18dc 100644 --- a/tests/i18n_tests.py +++ b/tests/i18n_tests.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""Test i18n module.""" # # (C) Pywikibot team, 2007-2014 # @@ -12,6 +13,8 @@
class TestTranslate(TestCase): + + """Test translate method."""
net = False
@@ -75,6 +78,8 @@
class TestTWN(TestCase):
+ """Base class for TranslateWiki tests.""" + net = False
def setUp(self): @@ -88,6 +93,8 @@
class TestTWTranslate(TestTWN): + + """Test twtranslate method."""
def testLocalized(self): self.assertEqual(i18n.twtranslate('en', 'test-localized'), @@ -231,7 +238,7 @@ u'Bot: Ändere dreihunderteinundzwanzig Zeilen von mehreren Seiten.')
def testMultipleNonNumbers(self): - """Numbers or string numbers are required for tuple or list items.""" + """Test error handling for multiple non-numbers.""" with self.assertRaisesRegex(ValueError, "invalid literal for int() with base 10: 'drei'"): self.assertEqual( i18n.twntranslate('de', 'test-multiple-plurals', ["drei", "1", 1]) diff --git a/tests/interwiki_link_tests.py b/tests/interwiki_link_tests.py index 2b34015..61e8ae4 100644 --- a/tests/interwiki_link_tests.py +++ b/tests/interwiki_link_tests.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""Test Interwiki Link functionality.""" # # (C) Pywikipedia bot team, 2014 # @@ -14,6 +15,8 @@
class TestPartiallyQualifiedLinkDifferentCodeParser(TestCase):
+ """Tests for interwiki links to local sites.""" + family = 'wikipedia' code = 'en' cached = True diff --git a/tests/ipregex_tests.py b/tests/ipregex_tests.py index 0498561..cf61a19 100644 --- a/tests/ipregex_tests.py +++ b/tests/ipregex_tests.py @@ -1,4 +1,5 @@ #!/usr/bin/python +"""Test IP regex.""" # -*- coding: utf-8 -*- # # (C) Pywikibot team, 2014 diff --git a/tests/link_tests.py b/tests/link_tests.py index b1ca6d0..0e37551 100644 --- a/tests/link_tests.py +++ b/tests/link_tests.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""Test Link functionality.""" # # (C) Pywikipedia bot team, 2014 # @@ -16,6 +17,8 @@
class TestPartiallyQualifiedExplicitLinkSameSiteParser(TestCase): + + """Link tests."""
family = 'wikipedia' code = 'en' @@ -72,6 +75,8 @@
class TestPartiallyQualifiedExplicitLinkDifferentCodeParser(TestCase):
+ """Link tests.""" + family = 'wikipedia' code = 'en' cached = True @@ -106,6 +111,8 @@
class TestPartiallyQualifiedExplicitLinkDifferentFamilyParser(TestCase): + + """Link tests."""
family = 'wikipedia' code = 'en' @@ -142,6 +149,8 @@
class TestFullyQualifiedSameNamespaceFamilyParser(TestCase):
+ """Link tests.""" + family = 'wikipedia' code = 'en' cached = True @@ -163,6 +172,8 @@
class TestFullyQualifiedExplicitLinkSameFamilyParser(TestCase): + + """Link tests."""
family = 'wikipedia' code = 'en' @@ -190,6 +201,8 @@
class TestFullyQualifiedExplicitLinkDifferentFamilyParser(TestCase): + + """Link tests."""
sites = { 'enws': { @@ -246,6 +259,8 @@
class TestFullyQualifiedExplicitLinkNoLangConfigFamilyParser(TestCase):
+ """Link tests.""" + sites = { 'wikidata': { 'family': 'wikidata', @@ -300,6 +315,8 @@
class TestFullyQualifiedNoLangFamilyExplicitLinkParser(TestCase): + + """Link tests."""
sites = { 'wikidata': { @@ -360,6 +377,8 @@
class TestFullyQualifiedOneSiteFamilyExplicitLinkParser(TestCase):
+ """Link tests.""" + family = 'species' code = 'species' cached = True @@ -389,6 +408,8 @@
class TestPartiallyQualifiedImplicitLinkSameSiteParser(TestCase): + + """Link tests."""
family = 'wikipedia' code = 'en' @@ -445,6 +466,8 @@
class TestPartiallyQualifiedImplicitLinkDifferentCodeParser(TestCase):
+ """Link tests.""" + family = 'wikipedia' code = 'en' cached = True @@ -479,6 +502,8 @@
class TestPartiallyQualifiedImplicitLinkDifferentFamilyParser(TestCase): + + """Link tests."""
family = 'wikipedia' code = 'en' @@ -515,6 +540,8 @@
class TestFullyQualifiedImplicitLinkSameFamilyParser(TestCase):
+ """Link tests.""" + family = 'wikipedia' code = 'en' cached = True @@ -541,6 +568,8 @@
class TestFullyQualifiedImplicitLinkDifferentFamilyParser(TestCase): + + """Link tests."""
sites = { 'enws': { @@ -597,6 +626,8 @@
class TestFullyQualifiedImplicitLinkNoLangConfigFamilyParser(TestCase):
+ """Link tests.""" + sites = { 'wikidata': { 'family': 'wikidata', @@ -652,6 +683,8 @@
class TestFullyQualifiedNoLangFamilyImplicitLinkParser(TestCase):
+ """Link tests.""" + family = 'wikidata' code = 'test' cached = True @@ -699,6 +732,8 @@
class TestFullyQualifiedOneSiteFamilyImplicitLinkParser(TestCase):
+ """Link tests.""" + family = 'species' code = 'species' cached = True diff --git a/tests/page_tests.py b/tests/page_tests.py index 54355cf..3169d1e 100644 --- a/tests/page_tests.py +++ b/tests/page_tests.py @@ -160,6 +160,8 @@
class TestPageObjectEnglish(TestCase):
+ """Test Page Object using English Wikipedia.""" + family = 'wikipedia' code = 'en'
@@ -252,6 +254,8 @@
class TestPageObject(DefaultSiteTestCase): + + """Test Page object."""
cached = True
@@ -524,6 +528,8 @@
class TestPageRedirects(TestCase):
+ """Test redirects.""" + family = 'wikipedia' code = 'en'
@@ -550,6 +556,8 @@
class TestCategoryObject(TestCase):
+ """Test Category object.""" + family = 'wikipedia' code = 'en'
diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py index f7f372c..44a99cd 100755 --- a/tests/pagegenerators_tests.py +++ b/tests/pagegenerators_tests.py @@ -1,5 +1,6 @@ #!/usr/bin/python # -*- coding: utf-8 -*- +"""Test pagegenerators module.""" # # (C) Pywikibot team, 2014 # diff --git a/tests/pwb/print_locals.py b/tests/pwb/print_locals.py index ea04770..3f94864 100644 --- a/tests/pwb/print_locals.py +++ b/tests/pwb/print_locals.py @@ -1,4 +1,4 @@ -"""docstring""" +"""Script that forms part of pwb_tests."""
for k, v in locals().copy().items(): print("%r: %r" % (k, v)) diff --git a/tests/pwb_tests.py b/tests/pwb_tests.py index 109505e..883d4f4 100644 --- a/tests/pwb_tests.py +++ b/tests/pwb_tests.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""Test pwb.py.""" # # (C) Pywikibot team, 2007-2014 # @@ -20,6 +21,7 @@
def check_output(command): + """Execute and return the output of a command.""" return subprocess.Popen(command, stdout=subprocess.PIPE).communicate()[0]
diff --git a/tests/site_tests.py b/tests/site_tests.py index 9765017..6c600c7 100644 --- a/tests/site_tests.py +++ b/tests/site_tests.py @@ -1451,6 +1451,8 @@
class TestWiktionarySite(TestCase):
+ """Test Site Object on English Wiktionary.""" + family = 'wiktionary' code = 'en'
@@ -1466,6 +1468,8 @@
class TestNonEnglishWikipediaSite(TestCase): + + """Test Site Object on Nynorsk Wikipedia."""
family = 'wikipedia' code = 'nn' @@ -1493,6 +1497,8 @@
class TestUploadEnabledSite(TestCase):
+ """Test Site.is_uploaddisabled.""" + sites = { 'wikidatatest': { 'family': 'wikidata', diff --git a/tests/textlib_tests.py b/tests/textlib_tests.py index d5547a7..a549035 100644 --- a/tests/textlib_tests.py +++ b/tests/textlib_tests.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""Test textlib module.""" # # (C) Pywikibot team, 2007-2014 # @@ -29,6 +30,8 @@
class TestSectionFunctions(TestCase): + + """Test wikitext section handling function."""
net = False
@@ -95,6 +98,8 @@
class TestFormatFunctions(TestCase):
+ """Test format functions.""" + family = 'wikipedia' code = 'en'
@@ -142,8 +147,9 @@ class TestCategoryRearrangement(TestCase):
""" - Tests to ensure that sorting keys are not being lost when - using .getCategoryLinks() and .replaceCategoryLinks(), + Ensure that sorting keys are not being lost. + + Tests .getCategoryLinks() and .replaceCategoryLinks(), with both a newline and an empty string as separators. """
diff --git a/tests/timestripper_tests.py b/tests/timestripper_tests.py index 6c31248..54af2a0 100644 --- a/tests/timestripper_tests.py +++ b/tests/timestripper_tests.py @@ -23,6 +23,7 @@ cached = True
def setUp(self): + """Set up test cases.""" super(TestTimeStripperWithNoDigitsAsMonths, self).setUp() self.ts = TimeStripper(self.get_site())
@@ -86,7 +87,7 @@
class TestTimeStripperWithDigitsAsMonths(TestCase):
- """Test cases for TimeStripper methods""" + """Test cases for TimeStripper methods."""
family = 'wikipedia' code = 'cs' @@ -125,7 +126,7 @@
class TestTimeStripperLanguage(TestCase):
- """Test cases for English language""" + """Test cases for English language."""
sites = { 'cswiki': { diff --git a/tests/ui_tests.py b/tests/ui_tests.py index eb2655e..e5a053e 100644 --- a/tests/ui_tests.py +++ b/tests/ui_tests.py @@ -40,16 +40,19 @@ import threading
class pywikibotWrapper(object): + + """pywikibot wrapper class.""" + def init(self): - import pywikibot + import pywikibot # noqa pywikibot.version._get_program_dir()
def output(self, *args, **kwargs): - import pywikibot + import pywikibot # noqa return pywikibot.output(*args, **kwargs)
def request_input(self, *args, **kwargs): - import pywikibot + import pywikibot # noqa self.input = None
def threadedinput(): @@ -62,17 +65,20 @@ return self.input
def set_config(self, key, value): - import pywikibot + import pywikibot # noqa setattr(pywikibot.config, key, value)
def set_ui(self, key, value): - import pywikibot + import pywikibot # noqa setattr(pywikibot.ui, key, value)
def cls(self): os.system('cls')
class pywikibotManager(BaseManager): + + """pywikibot manager class.""" + pass
pywikibotManager.register('pywikibot', pywikibotWrapper) @@ -91,11 +97,13 @@ newstdin = StringIO()
def patch(): + """Patch standard terminal files.""" sys.stdout = newstdout sys.stderr = newstderr sys.stdin = newstdin
def unpatch(): + """un-patch standard terminal files.""" sys.stdout = oldstdout sys.stderr = oldstderr sys.stdin = oldstdin @@ -115,6 +123,9 @@ 'newline': "\n"}
class UITestCase(unittest.TestCase): + + """UI tests.""" + def setUp(self): patch() newstdout.truncate(0) @@ -130,6 +141,9 @@ unpatch()
class TestTerminalOutput(UITestCase): + + """Terminal output tests.""" + def testOutputLevels_logging_debug(self): logger.log(DEBUG, 'debug', extra=loggingcontext) self.assertEqual(newstdout.getvalue(), "") @@ -232,6 +246,9 @@ self.assertNotEqual(stderrlines[-1], "\n")
class TestTerminalInput(UITestCase): + + """Terminal input tests.""" + def testInput(self): newstdin.write("input to read\n") newstdin.seek(0) @@ -295,6 +312,9 @@
@unittest.skipUnless(os.name == "posix", "requires Unix console") class TestTerminalOutputColorUnix(UITestCase): + + """Terminal output color tests.""" + def testOutputColorizedText(self): pywikibot.output(u"normal text \03{lightpurple}light purple text\03{default} normal text") self.assertEqual(newstdout.getvalue(), "") @@ -313,13 +333,16 @@ self.assertEqual(newstderr.getvalue(), "normal text \x1b[35;1m light purple \x1b[94;1m light blue \x1b[35;1m light purple \x1b[0m normal text\n\x1b[0m")
def testOutputColorCascade_incorrect(self): - ''' This test documents current (incorrect) behavior ''' + """ Test incorrect behavior of testOutputColorCascade. """ pywikibot.output(u"normal text \03{lightpurple} light purple \03{lightblue} light blue \03{default} light purple \03{default} normal text") self.assertEqual(newstdout.getvalue(), "") self.assertEqual(newstderr.getvalue(), "normal text \x1b[35;1m light purple \x1b[94;1m light blue \x1b[0m light purple \x1b[0m normal text\n\x1b[0m")
@unittest.skipUnless(os.name == "posix", "requires Unix console") class TestTerminalUnicodeUnix(UITestCase): + + """Terminal output tests for unix.""" + def testOutputUnicodeText(self): pywikibot.output(u"Заглавная_страница") self.assertEqual(newstdout.getvalue(), "") @@ -339,6 +362,9 @@
@unittest.skipUnless(os.name == "posix", "requires Unix console") class TestTransliterationUnix(UITestCase): + + """Terminal output transliteration tests.""" + def testOutputTransliteratedUnicodeText(self): pywikibot.ui.encoding = 'latin-1' pywikibot.config.transliterate = True @@ -348,6 +374,9 @@
@unittest.skipUnless(os.name == "nt", "requires Windows console") class WindowsTerminalTestCase(UITestCase): + + """MS Windows terminal tests.""" + @classmethod def setUpProcess(cls, command): import pywinauto @@ -412,6 +441,9 @@ self._app.window_().TypeKeys('% {UP}{UP}{UP}{RIGHT}{DOWN}{DOWN}{ENTER}', with_spaces=True)
class TestWindowsTerminalUnicode(WindowsTerminalTestCase): + + """MS Windows terminal unicode tests.""" + @classmethod def setUpClass(cls): import inspect @@ -458,6 +490,9 @@ self.assertEqual(returned, u"Заглавная_страница")
class TestWindowsTerminalUnicodeArguments(WindowsTerminalTestCase): + + """MS Windows terminal unicode argument tests.""" + @classmethod def setUpClass(cls): cls.setUpProcess(["cmd", "/k", "echo off"]) @@ -488,6 +523,9 @@
else: class TestTerminalUI(unittest.TestCase): + + """Class to show all tests skipped under unittest.""" + @unittest.skip("Terminal UI tests can only be run by directly running tests/ui_tests.py") def testCannotBeRun(self): pass diff --git a/tests/weblib_tests.py b/tests/weblib_tests.py index 5a00dd0..14e338a 100644 --- a/tests/weblib_tests.py +++ b/tests/weblib_tests.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""Weblib test module.""" # # (C) Pywikibot team, 2014 # @@ -19,6 +20,8 @@
class TestArchiveSites(TestCase):
+ """Test weblib methods to access archive websites.""" + net = True
@classmethod diff --git a/tests/wikibase_tests.py b/tests/wikibase_tests.py index 4c6d932..d78bf9b 100644 --- a/tests/wikibase_tests.py +++ b/tests/wikibase_tests.py @@ -23,6 +23,7 @@ # fetch a page which is very likely to be unconnected, which doesnt have # a generator, and unit tests may be used to test old versions of pywikibot def _get_test_unconnected_page(site): + """Get unconnected page from site for tests.""" gen = pagegenerators.NewpagesPageGenerator(site=site, total=10, namespaces=[1, ]) for page in gen: @@ -31,6 +32,8 @@
class TestGeneral(WikidataTestCase): + + """General Wikibase tests."""
@classmethod def setUpClass(cls): @@ -443,6 +446,8 @@
class TestPropertyPage(WikidataTestCase):
+ """Test PropertyPage.""" + def test_property_empty_property(self): """Test creating a PropertyPage without a title.""" wikidata = self.get_repo() @@ -482,6 +487,8 @@
class TestClaimSetValue(WikidataTestCase): + + """Test setting claim values."""
def test_set_website(self): wikidata = self.get_repo() @@ -817,6 +824,8 @@
class TestOwnClient(TestCase):
+ """Test that a data repository family can be its own client.""" + sites = { # The main Wikidata is its own client. 'wikidata': { diff --git a/tests/wikidataquery_tests.py b/tests/wikidataquery_tests.py index ecfe70a..4c3b018 100644 --- a/tests/wikidataquery_tests.py +++ b/tests/wikidataquery_tests.py @@ -21,9 +21,7 @@
class TestApiFunctions(WikidataTestCase):
- def setUp(self): - super(TestApiFunctions, self).setUp() - self.repo = self.get_repo() + """Test WikiDataQuery API functions."""
def testQueries(self): """ @@ -93,7 +91,7 @@ self.assertEqual(str(q), "claim[99:(tree[1][2,5][3,90])]")
def testQueriesWDStructures(self): - """Queries using Wikibase page structures like ItemPage.""" + """Test queries using Wikibase page structures like ItemPage.""" q = query.HasClaim(PropertyPage(self.repo, "P99")) self.assertEqual(str(q), "claim[99]")
@@ -217,6 +215,8 @@
class TestApiSlowFunctions(TestCase):
+ """Test slow WikiDataQuery API functions.""" + net = True
def testQueryApiGetter(self): diff --git a/tests/xmlreader_tests.py b/tests/xmlreader_tests.py index 292be70..8399d0a 100644 --- a/tests/xmlreader_tests.py +++ b/tests/xmlreader_tests.py @@ -16,6 +16,8 @@
class XmlReaderTestCase(TestCase):
+ """XML Reader test cases.""" + net = False
def test_XmlDumpAllRevs(self): diff --git a/tox.ini b/tox.ini index b422aad..1e394e9 100644 --- a/tox.ini +++ b/tox.ini @@ -100,15 +100,8 @@ ./scripts/watchlist.py \ ./scripts/weblinkchecker.py \ ./scripts/welcome.py \ - ./tests/aspects.py \ - ./tests/deprecation_tests.py \ - ./tests/api_tests.py \ - ./tests/dry_api_tests.py \ - ./tests/dry_site_tests.py \ - ./tests/family_tests.py \ - ./tests/http_tests.py \ ./scripts/maintenance/cache.py \ - ./tests/upload_tests.py + ./tests/
deps = flake8>=2.2.5 flake8-docstrings
pywikibot-commits@lists.wikimedia.org