jenkins-bot has submitted this change and it was merged.
Change subject: Progressing dots to show test is running ......................................................................
Progressing dots to show test is running
- use a metaclass for this test - register all tests in different methods and run them separately
This test may be called by unittest.main() whereas the previous test needs unittest.TextTestRunner which isn't called by the automatic testing.
Change-Id: I01b3a7ca47ec7fcc3adf02285c803e934c67d52e Original-Change-Id: I30a7256f2b87e7e8a348731526e2d36b42a86f9a --- M tests/date_tests.py 1 file changed, 41 insertions(+), 23 deletions(-)
Approvals: Merlijn van Deen: Looks good to me, approved jenkins-bot: Verified
diff --git a/tests/date_tests.py b/tests/date_tests.py index 730c5b3..932b409 100644 --- a/tests/date_tests.py +++ b/tests/date_tests.py @@ -10,30 +10,48 @@ from pywikibot import date
+class TestDateMeta(type): + """Test meta class""" + + def __new__(cls, name, bases, dct): + """create the new class""" + + def test_method(formatname): + + def testMapEntry(self): + """The test ported from date.py""" + step = 1 + if formatname in date.decadeFormats: + step = 10 + try: + predicate, start, stop = date.formatLimits[formatname] + except KeyError: + return + + for code, convFunc in date.formats[formatname].items(): + for value in range(start, stop, step): + self.assertTrue( + predicate(value), + "date.formats['%(formatname)s']['%(code)s']:\n" + "invalid value %(value)d" % locals()) + + newValue = convFunc(convFunc(value)) + self.assertEqual( + newValue, value, + "date.formats['%(formatname)s']['%(code)s']:\n" + "value %(newValue)d does not match %(value)s" + % locals()) + return testMapEntry + + for formatname in date.formats: + test_name = "test_" + formatname + dct[test_name] = test_method(formatname) + return type.__new__(cls, name, bases, dct) + + class TestDate(unittest.TestCase): - """Test cases for date library""" - - def testMapEntry(self): - """Test the validity of the pywikibot.date format maps.""" - for formatName in date.formats: - step = 1 - if formatName in date.decadeFormats: - step = 10 - predicate, start, stop = date.formatLimits[formatName] - - for code, convFunc in date.formats[formatName].items(): - for value in range(start, stop, step): - self.assertTrue( - predicate(value), - "date.formats['%(formatName)s']['%(code)s']:\n" - "invalid value %(value)d" % locals()) - - newValue = convFunc(convFunc(value)) - self.assertEqual( - newValue, value, - "date.formats['%(formatName)s']['%(code)s']:\n" - "value %(newValue)d does not match %(value)s" - % locals()) + """Test cases for date library processed by unittest""" + __metaclass__ = TestDateMeta
if __name__ == '__main__':
pywikibot-commits@lists.wikimedia.org