summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_locale.py94
-rw-r--r--Misc/NEWS3
2 files changed, 39 insertions, 58 deletions
diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py
index 51a7bca..48bf36d 100644
--- a/Lib/test/test_locale.py
+++ b/Lib/test/test_locale.py
@@ -1,52 +1,50 @@
-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")
+ try:
+ 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
+ finally:
+ locale.setlocale(locale.LC_NUMERIC, oldlocale)
+
def setUp(self):
- self.oldlocale = locale.setlocale(self.locale_type)
- locale.setlocale(self.locale_type, enUS_locale)
+ oldlocale = locale.setlocale(self.locale_type)
+ self.addCleanup(locale.setlocale, self.locale_type, oldlocale)
+ locale.setlocale(self.locale_type, self.enUS_locale)
if verbose:
- print("testing with \"%s\"..." % enUS_locale, end=' ')
-
- def tearDown(self):
- locale.setlocale(self.locale_type, self.oldlocale)
+ print("testing with %r..." % self.enUS_locale, end=' ', flush=True)
class BaseCookedTest(unittest.TestCase):
@@ -415,25 +413,5 @@ class TestMiscellaneous(unittest.TestCase):
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()
diff --git a/Misc/NEWS b/Misc/NEWS
index d89f208..114a1cd 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -198,6 +198,9 @@ IDLE
Tests
-----
+- Issue #17767: test_locale now works with unittest test discovery.
+ Original patch by Zachary Ware.
+
- Issue #18375: Assume --randomize when --randseed is used for running the
testsuite.