prevent leakage of FLAGS changes across tests
This commit is contained in:
@@ -90,6 +90,12 @@ class FlagValues(gflags.FlagValues):
|
|||||||
self.ClearDirty()
|
self.ClearDirty()
|
||||||
return args
|
return args
|
||||||
|
|
||||||
|
def Reset(self):
|
||||||
|
gflags.FlagValues.Reset(self)
|
||||||
|
self.__dict__['__dirty'] = []
|
||||||
|
self.__dict__['__was_already_parsed'] = False
|
||||||
|
self.__dict__['__stored_argv'] = []
|
||||||
|
|
||||||
def SetDirty(self, name):
|
def SetDirty(self, name):
|
||||||
"""Mark a flag as dirty so that accessing it will case a reparse."""
|
"""Mark a flag as dirty so that accessing it will case a reparse."""
|
||||||
self.__dict__['__dirty'].append(name)
|
self.__dict__['__dirty'].append(name)
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ from nova import exception
|
|||||||
from nova import flags
|
from nova import flags
|
||||||
from nova import test
|
from nova import test
|
||||||
|
|
||||||
|
FLAGS = flags.FLAGS
|
||||||
|
flags.DEFINE_string('flags_unittest', 'foo', 'for testing purposes only')
|
||||||
|
|
||||||
class FlagsTestCase(test.TrialTestCase):
|
class FlagsTestCase(test.TrialTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@@ -85,3 +87,13 @@ class FlagsTestCase(test.TrialTestCase):
|
|||||||
|
|
||||||
self.assert_('runtime_answer' in self.global_FLAGS)
|
self.assert_('runtime_answer' in self.global_FLAGS)
|
||||||
self.assertEqual(self.global_FLAGS.runtime_answer, 60)
|
self.assertEqual(self.global_FLAGS.runtime_answer, 60)
|
||||||
|
|
||||||
|
def test_flag_leak_left(self):
|
||||||
|
self.assertEqual(FLAGS.flags_unittest, 'foo')
|
||||||
|
FLAGS.flags_unittest = 'bar'
|
||||||
|
self.assertEqual(FLAGS.flags_unittest, 'bar')
|
||||||
|
|
||||||
|
def test_flag_leak_right(self):
|
||||||
|
self.assertEqual(FLAGS.flags_unittest, 'foo')
|
||||||
|
FLAGS.flags_unittest = 'bar'
|
||||||
|
self.assertEqual(FLAGS.flags_unittest, 'bar')
|
||||||
|
|||||||
Reference in New Issue
Block a user