parent
92b60d55d9
commit
f8d887e0d3
@ -173,9 +173,8 @@ def add_tables(db, module):
|
|||||||
add_data(db, table, getattr(module, table))
|
add_data(db, table, getattr(module, table))
|
||||||
|
|
||||||
def make_id(str):
|
def make_id(str):
|
||||||
#str = str.replace(".", "_") # colons are allowed
|
identifier_chars = string.ascii_letters + string.digits + "._"
|
||||||
for c in " -+~;":
|
str = "".join([c if c in identifier_chars else "_" for c in str])
|
||||||
str = str.replace(c, "_")
|
|
||||||
if str[0] in (string.digits + "."):
|
if str[0] in (string.digits + "."):
|
||||||
str = "_" + str
|
str = "_" + str
|
||||||
assert re.match("^[A-Za-z_][A-Za-z0-9_.]*$", str), "FILE"+str
|
assert re.match("^[A-Za-z_][A-Za-z0-9_.]*$", str), "FILE"+str
|
||||||
|
46
Lib/test/test_msilib.py
Normal file
46
Lib/test/test_msilib.py
Normal file
@ -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()
|
@ -531,6 +531,7 @@ Chris McDonough
|
|||||||
Greg McFarlane
|
Greg McFarlane
|
||||||
Alan McIntyre
|
Alan McIntyre
|
||||||
Michael McLay
|
Michael McLay
|
||||||
|
Mark Mc Mahon
|
||||||
Gordon McMillan
|
Gordon McMillan
|
||||||
Caolan McNamara
|
Caolan McNamara
|
||||||
Andrew McNamara
|
Andrew McNamara
|
||||||
|
@ -44,6 +44,8 @@ Core and Builtins
|
|||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #11696: Fix ID generation in msilib.
|
||||||
|
|
||||||
- Issue #9696: Fix exception incorrectly raised by xdrlib.Packer.pack_int when
|
- Issue #9696: Fix exception incorrectly raised by xdrlib.Packer.pack_int when
|
||||||
trying to pack a negative (in-range) integer.
|
trying to pack a negative (in-range) integer.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user