diff -r 8e838598eed1 Lib/test/test_locale.py --- a/Lib/test/test_locale.py Tue Jul 02 09:07:53 2013 -0400 +++ b/Lib/test/test_locale.py Thu Jul 04 00:15:42 2013 -0500 @@ -1,49 +1,47 @@ -from test.support import run_unittest, verbose +from test.support import verbose import unittest import locale import sys import codecs -enUS_locale = None - -def get_enUS_locale(): - global enUS_locale - if sys.platform == 'darwin': - import os - tlocs = ("en_US.UTF-8", "en_US.ISO8859-1", "en_US") - if int(os.uname().release.split('.')[0]) < 10: - # The locale test work fine on OSX 10.6, I (ronaldoussoren) - # haven't had time yet to verify if tests work on OSX 10.5 - # (10.4 is known to be bad) - raise unittest.SkipTest("Locale support on MacOSX is minimal") - elif sys.platform.startswith("win"): - tlocs = ("En", "English") - else: - tlocs = ("en_US.UTF-8", "en_US.ISO8859-1", "en_US.US-ASCII", "en_US") - oldlocale = locale.setlocale(locale.LC_NUMERIC) - for tloc in tlocs: - try: - locale.setlocale(locale.LC_NUMERIC, tloc) - except locale.Error: - continue - break - else: - raise unittest.SkipTest( - "Test locale not supported (tried %s)" % (', '.join(tlocs))) - enUS_locale = tloc - locale.setlocale(locale.LC_NUMERIC, oldlocale) - - class BaseLocalizedTest(unittest.TestCase): # # Base class for tests using a real locale # + @classmethod + def setUpClass(cls): + if sys.platform == 'darwin': + import os + tlocs = ("en_US.UTF-8", "en_US.ISO8859-1", "en_US") + if int(os.uname().release.split('.')[0]) < 10: + # The locale test work fine on OSX 10.6, I (ronaldoussoren) + # haven't had time yet to verify if tests work on OSX 10.5 + # (10.4 is known to be bad) + raise unittest.SkipTest("Locale support on MacOSX is minimal") + elif sys.platform.startswith("win"): + tlocs = ("En", "English") + else: + tlocs = ("en_US.UTF-8", "en_US.ISO8859-1", + "en_US.US-ASCII", "en_US") + oldlocale = locale.setlocale(locale.LC_NUMERIC) + for tloc in tlocs: + try: + locale.setlocale(locale.LC_NUMERIC, tloc) + except locale.Error: + continue + break + else: + raise unittest.SkipTest( + "Test locale not supported (tried %s)" % (', '.join(tlocs))) + cls.enUS_locale = tloc + locale.setlocale(locale.LC_NUMERIC, oldlocale) + def setUp(self): self.oldlocale = locale.setlocale(self.locale_type) - locale.setlocale(self.locale_type, enUS_locale) + locale.setlocale(self.locale_type, self.enUS_locale) if verbose: - print("testing with \"%s\"..." % enUS_locale, end=' ') + print("testing with %r..." % self.enUS_locale, end=' ', flush=True) def tearDown(self): locale.setlocale(self.locale_type, self.oldlocale) @@ -415,25 +413,5 @@ locale.setlocale(locale.LC_ALL, (b'not', b'valid')) -def test_main(): - tests = [ - TestMiscellaneous, - TestFormatPatternArg, - TestLocaleFormatString, - TestEnUSNumberFormatting, - TestCNumberFormatting, - TestFrFRNumberFormatting, - TestCollation - ] - # SkipTest can't be raised inside unittests, handle it manually instead - try: - get_enUS_locale() - except unittest.SkipTest as e: - if verbose: - print("Some tests will be disabled: %s" % e) - else: - tests += [TestNumberFormatting, TestEnUSCollation] - run_unittest(*tests) - if __name__ == '__main__': - test_main() + unittest.main()