Updated test_win32_manifest.py to throw custom exception objects, rather than relying on string comparison.

master
brad kittenbrink 2009-09-30 18:57:00 -07:00
parent 0c0b59e104
commit 292aecbb3e
2 changed files with 24 additions and 7 deletions

View File

@ -33,6 +33,21 @@ import sys, os
import tempfile
from xml.dom.minidom import parse
class AssemblyTestException(Exception):
pass
class NoManifestException(AssemblyTestException):
pass
class MultipleBindingsException(AssemblyTestException):
pass
class UnexpectedVersionException(AssemblyTestException):
pass
class NoMatchingAssemblyException(AssemblyTestException):
pass
def get_HKLM_registry_value(key_str, value_str):
import _winreg
reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE)
@ -81,7 +96,7 @@ def test_assembly_binding(src_filename, assembly_name, assembly_ver):
mt_result = os.system(system_call)
if mt_result == 31:
print "No manifest found in %s" % src_filename
raise Exception("No manifest found")
raise NoManifestException()
manifest_dom = parse(tmp_file_name)
nodes = manifest_dom.getElementsByTagName('assemblyIdentity')
@ -93,19 +108,19 @@ def test_assembly_binding(src_filename, assembly_name, assembly_ver):
if len(versions) == 0:
print "No matching assemblies found in %s" % src_filename
raise Exception("No matching assembly")
raise NoMatchingAssemblyException()
elif len(versions) > 1:
print "Multiple bindings to %s found:" % assembly_name
print versions
print
raise Exception("Multiple bindings")
raise MultipleBindingsException(versions)
elif versions[0] != assembly_ver:
print "Unexpected version found for %s:" % assembly_name
print "Wanted %s, found %s" % (assembly_ver, versions[0])
print
raise Exception("Unexpected version")
raise UnexpectedVersionException(assembly_ver, versions[0])
os.remove(tmp_file_name)

View File

@ -187,6 +187,7 @@ class WindowsManifest(ViewerManifest):
# This is used to test that no manifest for the msvcrt exists.
# It is used as a temporary override during the construct method
from test_win32_manifest import test_assembly_binding
from test_win32_manifest import NoManifestException, NoMatchingAssemblyException
if src and (os.path.exists(src) or os.path.islink(src)):
# ensure that destination path exists
self.cmakedirs(os.path.dirname(dst))
@ -198,9 +199,10 @@ class WindowsManifest(ViewerManifest):
else:
test_assembly_binding(src, "Microsoft.VC80.CRT", "")
raise Exception("Unknown condition")
except Exception, err:
if err.message != "No matching assembly" or err.message != "No manifest found":
raise Exception("Found unexpected MSVCRT manifest binding")
except NoManifestException, err:
pass
except NoMatchingAssemblyException, err:
pass
self.ccopy(src,dst)
else: