[lit] Change lit.Test.ResultCode to be unique across pickling.

llvm-svn: 189549
This commit is contained in:
Daniel Dunbar 2013-08-29 00:48:39 +00:00
parent f8a75c3793
commit d73eaabc8f
1 changed files with 11 additions and 0 deletions

View File

@ -5,6 +5,17 @@ import os
class ResultCode(object):
"""Test result codes."""
# We override __new__ and __getnewargs__ to ensure that pickling still
# provides unique ResultCode objects in any particular instance.
_instances = {}
def __new__(cls, name, isFailure):
res = cls._instances.get(name)
if res is None:
cls._instances[name] = res = super(ResultCode, cls).__new__(cls)
return res
def __getnewargs__(self):
return (self.name, self.isFailure)
def __init__(self, name, isFailure):
self.name = name
self.isFailure = isFailure