From 46da5746b0af23640e7b6a9a7f90494916a8aadc Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Tue, 11 Dec 2012 18:05:03 -0500 Subject: fix intermittent failures with deferred version test Need to get rid of the deferred string approach as the problem was overriding string methods is hard and flaky. There is just no other documented argparse hook to allow deferring of the version calculation as version passed in has to be a str or buffer. Added a test to try longer string and even run it in a loop just to be sure. Fixes LP #1087575 Change-Id: Icf83944d67b8ce5d3230627f3de10501da3276f2 --- tests/unit/test_version.py | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/unit/test_version.py b/tests/unit/test_version.py index 8e60f51..c67ccde 100644 --- a/tests/unit/test_version.py +++ b/tests/unit/test_version.py @@ -42,23 +42,23 @@ class DeferredVersionTestCase(BaseTestCase): super(DeferredVersionTestCase, self).setUp() self.conf = ConfigOpts() - def test_deferred_version(self): + def test_cached_version(self): class MyVersionInfo(version.VersionInfo): def _generate_version(self): return "5.5.5.5" deferred_string = MyVersionInfo("openstack").\ - deferred_version_string() + cached_version_string() self.conf([], project="project", prog="prog", version=deferred_string) self.assertEquals("5.5.5.5", str(self.conf.version)) - def test_print_deferred_version(self): + def test_print_cached_version(self): class MyVersionInfo(version.VersionInfo): def _generate_version(self): return "5.5.5.5" deferred_string = MyVersionInfo("openstack")\ - .deferred_version_string() + .cached_version_string() self.stubs.Set(sys, 'stderr', StringIO.StringIO()) self.assertRaises(SystemExit, self.conf, ['--version'], @@ -66,3 +66,22 @@ class DeferredVersionTestCase(BaseTestCase): prog="prog", version=deferred_string) self.assertEquals("5.5.5.5", sys.stderr.getvalue().strip()) + + def test_print_cached_version_with_long_string(self): + my_version = "11111222223333344444555556666677777888889999900000" + + class MyVersionInfo(version.VersionInfo): + def _generate_version(self): + return my_version + + deferred_string = MyVersionInfo("openstack")\ + .cached_version_string() + + for i in range(50): + self.stubs.Set(sys, 'stderr', StringIO.StringIO()) + self.assertRaises(SystemExit, + self.conf, ['--version'], + project="project", + prog="prog", + version=deferred_string) + self.assertEquals(my_version, sys.stderr.getvalue().strip()) -- cgit