]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blobdiff - src/allmydata/test/common_util.py
Fix tests on platforms without time.tzset (e.g. Windows). fixes ticket:2725
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / test / common_util.py
index 70a072454feb3c4dc04a1b4ff0419d0422de4c88..c95f71681ff10dca701bcb4d238aaeec02abfe63 100644 (file)
@@ -45,9 +45,12 @@ class NonASCIIPathMixin:
                 try:
                     fileutil.rm_dir(dirpath)
                 finally:
-                    log.err("We were unable to delete a non-ASCII directory %r created by the test. "
-                            "This is liable to cause failures on future builds." % (dirpath,))
-            self.addCleanup(self._cleanup_nonascii, dirpath)
+                    if os.path.exists(dirpath):
+                        msg = ("We were unable to delete a non-ASCII directory %r created by the test. "
+                               "This is liable to cause failures on future builds." % (dirpath,))
+                        print msg
+                        log.err(msg)
+            self.addCleanup(_cleanup)
         os.mkdir(dirpath)
 
     def unicode_or_fallback(self, unicode_name, fallback_name):
@@ -170,6 +173,32 @@ class TestMixin(SignalMixin):
         if required_to_quiesce and active:
             self.fail("Reactor was still active when it was required to be quiescent.")
 
+
+class TimezoneMixin(object):
+
+    def setTimezone(self, timezone):
+        def tzset_if_possible():
+            # Windows doesn't have time.tzset().
+            if hasattr(time, 'tzset'):
+                time.tzset()
+
+        unset = object()
+        originalTimezone = os.environ.get('TZ', unset)
+        def restoreTimezone():
+            if originalTimezone is unset:
+                del os.environ['TZ']
+            else:
+                os.environ['TZ'] = originalTimezone
+            tzset_if_possible()
+
+        os.environ['TZ'] = timezone
+        self.addCleanup(restoreTimezone)
+        tzset_if_possible()
+
+    def have_working_tzset(self):
+        return hasattr(time, 'tzset')
+
+
 try:
     import win32file
     import win32con