⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utf8_tests.py

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻 PY
字号:
#!/usr/bin/env python#  -*- coding: utf-8 -*-##  utf8_tests.py:  testing the svn client's utf8 (i18n) handling##  Subversion is a tool for revision control. #  See http://subversion.tigris.org for more information.#    # ====================================================================# Copyright (c) 2000-2004 CollabNet.  All rights reserved.## This software is licensed as described in the file COPYING, which# you should have received as part of this distribution.  The terms# are also available at http://subversion.tigris.org/license-1.html.# If newer versions of this license are posted there, you may use a# newer version instead, at your option.######################################################################## General modulesimport shutil, stat, string, sys, re, os.path, os, locale# Our testing moduleimport svntestfrom svntest import wc# (abbreviation)Item = wc.StateItemSkip = svntest.testcase.Skip#--------------------------------------------------------------------# Data# Here's a filename and a log message which contain some high-ascii# data.  In theory this data has different interpretations when# converting from 2 different charsets into UTF-8.### "b脭莽脜" in ISO-8859-1 encoding:i18n_filename = 'b\xd4\xe7\xc5'### "drie脙芦ntwintig keer was 脙漏脙漏n keer teveel" in ISO-8859-1 encoding:i18n_logmsg = 'drie\xc3\xabntwintig keer was \xc3\xa9\xc3\xa9n keer teveel'####################################################################### Tests##   Each test must return on success or raise on failure.def basic_utf8_conversion(sbox):  "conversion of paths and logs to/from utf8"  sbox.build()  wc_dir = sbox.wc_dir  # Create the new i18n file and schedule it for addition  svntest.main.file_append(os.path.join(wc_dir, i18n_filename), "hi")  svntest.actions.run_and_verify_svn(    "Failed to schedule i18n filename for addition", None, [],    'add', os.path.join(wc_dir, i18n_filename))  svntest.actions.run_and_verify_svn(    "Failed to commit i18n filename", None, [],    'commit', '-m', i18n_logmsg, wc_dir)# Here's how the test should really work:# 1. sh LC_ALL=ISO-8859-1 svn commit <filename> -m "<logmsg>"# 2. sh LC_ALL=UTF-8 svn log -rHEAD > output# 3. verify that output is the exact UTF-8 data that we expect.# 4. repeat the process using some other locale other than ISO8859-1,#    preferably some locale which will convert the high-ascii data to#    *different* UTF-8.  #----------------------------------------------------------------------######################################################################### Run the teststry:  # Generic setlocale so that getlocale returns something sensible  locale.setlocale(locale.LC_ALL, '')  # Try to make these test run in an ISO-8859-1 environment, otherwise  # they would run in whatever random locale the testing platform  # happens to have, and then we couldn't predict the exact results.  if svntest.main.windows:    # In this case, it would probably be "english_usa.1252", but you should    # be able to set just the encoding by using ".1252" (that's codepage    # 1252, which is almost but not quite entirely unlike tea; um, I mean    # it's very similar to ISO-8859-1).    #                                     -- Branko 膶ibej <brane@xbc.nu>    locale.setlocale(locale.LC_ALL, '.1252')  else:    locale.setlocale(locale.LC_ALL, 'en_US.ISO8859-1')    if os.putenv:      # propagate to the svn* executables, so they do the correct translation      # the line below works for Linux systems if they have the particular      # locale installed      os.environ['LC_ALL'] = "en_US.ISO8859-1"except:  pass# Check to see if the locale uses ISO-8859-1 encoding.  The regex is necessary# because some systems ommit the first hyphen or use lowercase letters for ISO.if sys.platform == 'win32':  localematch = 1else:  localeenc = locale.getlocale()[1]  if localeenc:    localeregex = re.compile('^ISO-?8859-1$', re.I)    localematch = localeregex.search(localeenc)    try:      svntest.actions.run_and_verify_svn("",svntest.SVNAnyOutput, [],"help")    except:      # We won't be able to run the client; this might be because the      # system does not support the iso-8859-1 locale. Anyhow, it makes      # no sense to run the test.      localematch = None  else:    localematch = None# Also check that the environment contains the expected locale settings# either by default, or because we set them above.if localematch:  localeregex = re.compile('^en_US\.ISO-?8859-1$', re.I)  for env in [ 'LC_ALL', 'LC_CTYPE', 'LANG' ]:    env_value = os.getenv(env)    if env_value:      if localeregex.search(env_value):        break      else:        localematch = None        break######################################################################### Run the tests# list all tests here, starting with None:test_list = [ None,              Skip(basic_utf8_conversion, 1)             ]if __name__ == '__main__':  svntest.main.run_tests(test_list)  # NOTREACHED### End of file.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -