Author: rinrab
Date: Tue Jun 17 18:31:22 2025
New Revision: 1926510
URL: http://svn.apache.org/viewvc?rev=1926510&view=rev
Log:
On the 'utf8-cmdline-prototype' branch: Add RequireUtf8 decorator and
run the basic_tests#unicode_arguments_test test in UTF8 environment to fix
failure its constant failures on Unix platforms.
* subversion/tests/cmdline/basic_tests.py
(): Import RequireUtf8 decorator from testcase.py
(unicode_arguments_test): Require UTF-8.
* subversion/tests/cmdline/svntest/testcase.py
(_detect_utf8_locale): New local helper.
(RequireUtf8_deco): Declare the decorator.
Patch by: jun66j5
PS: Sorry for committing this on my own, but I think you left it up to
me. Am I right? 😁
Modified:
subversion/branches/utf8-cmdline-prototype/subversion/tests/cmdline/basic_tests.py
subversion/branches/utf8-cmdline-prototype/subversion/tests/cmdline/svntest/testcase.py
Modified:
subversion/branches/utf8-cmdline-prototype/subversion/tests/cmdline/basic_tests.py
URL:
http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/tests/cmdline/basic_tests.py?rev=1926510&r1=1926509&r2=1926510&view=diff
==============================================================================
---
subversion/branches/utf8-cmdline-prototype/subversion/tests/cmdline/basic_tests.py
(original)
+++
subversion/branches/utf8-cmdline-prototype/subversion/tests/cmdline/basic_tests.py
Tue Jun 17 18:31:22 2025
@@ -40,6 +40,7 @@ XFail = svntest.testcase.XFail_deco
Issues = svntest.testcase.Issues_deco
Issue = svntest.testcase.Issue_deco
Wimp = svntest.testcase.Wimp_deco
+RequireUtf8 = svntest.testcase.RequireUtf8_deco
Item = wc.StateItem
# Generic UUID-matching regular expression
@@ -3346,6 +3347,7 @@ def argv_with_best_fit_chars(sbox):
if count == 0:
raise svntest.Skip('No best fit characters in code page %r' % codepage)
+@RequireUtf8
def unicode_arguments_test(sbox: svntest.sandbox.Sandbox):
"""test unicode arguments"""
Modified:
subversion/branches/utf8-cmdline-prototype/subversion/tests/cmdline/svntest/testcase.py
URL:
http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/tests/cmdline/svntest/testcase.py?rev=1926510&r1=1926509&r2=1926510&view=diff
==============================================================================
---
subversion/branches/utf8-cmdline-prototype/subversion/tests/cmdline/svntest/testcase.py
(original)
+++
subversion/branches/utf8-cmdline-prototype/subversion/tests/cmdline/svntest/testcase.py
Tue Jun 17 18:31:22 2025
@@ -349,3 +349,50 @@ def SkipDumpLoadCrossCheck_deco(cond_fun
# Create a singular alias, for linguistic correctness
Issue_deco = Issues_deco
+
+
+# Determines the name of UTF-8 locale on the system, or returns None if one
+# couldn't be found.
+def _detect_utf8_locale():
+ import locale
+
+ orig = None
+ try:
+ for name in ('C.UTF-8', 'en_US.UTF-8'):
+ try:
+ orig = locale.setlocale(locale.LC_ALL, name)
+ except locale.Error:
+ continue
+ else:
+ return name
+ finally:
+ if orig is not None:
+ locale.setlocale(locale.LC_ALL, orig)
+
+ return None # utf-8 locale unavailable
+
+_utf8_locale = _detect_utf8_locale() if os.name != 'nt' else False
+
+# Decorator that runs the test in UTF-8 environment. If there are no good
+# UTF-8 locales availible on the system, skips the test.
+def RequireUtf8_deco(f):
+
+ import functools
+
+ @functools.wraps(f)
+ def wrapper(sbox: svntest.sandbox.Sandbox):
+ if _utf8_locale is None:
+ raise svntest.Skip
+ if _utf8_locale is not False:
+ orig = os.environ.get('LC_ALL')
+ os.environ['LC_ALL'] = _utf8_locale
+ try:
+ return f(sbox)
+ finally:
+ if _utf8_locale is not False:
+ if orig is None:
+ del os.environ['LC_ALL']
+ else:
+ os.environ['LC_ALL'] = orig
+
+ return wrapper