merge #11696
This commit is contained in:
commit
987403bf14
|
@ -172,9 +172,8 @@ def add_tables(db, module):
|
|||
add_data(db, table, getattr(module, table))
|
||||
|
||||
def make_id(str):
|
||||
#str = str.replace(".", "_") # colons are allowed
|
||||
for c in " -+~;":
|
||||
str = str.replace(c, "_")
|
||||
identifier_chars = string.ascii_letters + string.digits + "._"
|
||||
str = "".join([c if c in identifier_chars else "_" for c in str])
|
||||
if str[0] in (string.digits + "."):
|
||||
str = "_" + str
|
||||
assert re.match("^[A-Za-z_][A-Za-z0-9_.]*$", str), "FILE"+str
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
""" Test suite for the code in msilib """
|
||||
import unittest
|
||||
import os
|
||||
from test.support import run_unittest, import_module
|
||||
msilib = import_module('msilib')
|
||||
|
||||
class Test_make_id(unittest.TestCase):
|
||||
#http://msdn.microsoft.com/en-us/library/aa369212(v=vs.85).aspx
|
||||
"""The Identifier data type is a text string. Identifiers may contain the
|
||||
ASCII characters A-Z (a-z), digits, underscores (_), or periods (.).
|
||||
However, every identifier must begin with either a letter or an
|
||||
underscore.
|
||||
"""
|
||||
|
||||
def test_is_no_change_required(self):
|
||||
self.assertEqual(
|
||||
msilib.make_id("short"), "short")
|
||||
self.assertEqual(
|
||||
msilib.make_id("nochangerequired"), "nochangerequired")
|
||||
self.assertEqual(
|
||||
msilib.make_id("one.dot"), "one.dot")
|
||||
self.assertEqual(
|
||||
msilib.make_id("_"), "_")
|
||||
self.assertEqual(
|
||||
msilib.make_id("a"), "a")
|
||||
#self.assertEqual(
|
||||
# msilib.make_id(""), "")
|
||||
|
||||
def test_invalid_first_char(self):
|
||||
self.assertEqual(
|
||||
msilib.make_id("9.short"), "_9.short")
|
||||
self.assertEqual(
|
||||
msilib.make_id(".short"), "_.short")
|
||||
|
||||
def test_invalid_any_char(self):
|
||||
self.assertEqual(
|
||||
msilib.make_id(".s\x82ort"), "_.s_ort")
|
||||
self.assertEqual (
|
||||
msilib.make_id(".s\x82o?*+rt"), "_.s_o___rt")
|
||||
|
||||
|
||||
def test_main():
|
||||
run_unittest(__name__)
|
||||
|
||||
if __name__ == '__main__':
|
||||
test_main()
|
|
@ -570,6 +570,7 @@ Chris McDonough
|
|||
Greg McFarlane
|
||||
Alan McIntyre
|
||||
Michael McLay
|
||||
Mark Mc Mahon
|
||||
Gordon McMillan
|
||||
Caolan McNamara
|
||||
Andrew McNamara
|
||||
|
|
Loading…
Reference in New Issue