#!/usr/bin/env python3 # pylint: disable=unused-import,import-error import sys try: from tempfile import TemporaryDirectory except ImportError: import shutil import tempfile class TemporaryDirectory(object): def __init__(self, suffix='', prefix='tmp', dir=None): # pylint: disable=redefined-builtin self.name = tempfile.mkdtemp(suffix, prefix, dir) def __del__(self): self.cleanup() def __enter__(self): return self.name def __exit__(self, exc, value, tb): self.cleanup() def cleanup(self): if self.name: shutil.rmtree(self.name) self.name = None if sys.version_info >= (3, 0): from os import makedirs else: import os def makedirs(path, exist_ok): if exist_ok and os.path.exists(path): return os.makedirs(path) if sys.version_info >= (3, 0): from io import StringIO else: from StringIO import StringIO try: from unittest.mock import patch except ImportError: import contextlib @contextlib.contextmanager def patch(target, mock): obj, attr = target.rsplit('.') obj = __import__(obj) original_value = getattr(obj, attr) setattr(obj, attr, mock) try: yield finally: setattr(obj, attr, original_value) if sys.version_info >= (3, 2): from unittest import TestCase else: import unittest class TestCase(unittest.TestCase): def assertRegex(self, text, expected_regex, msg=None): # pylint: disable=deprecated-method self.assertRegexpMatches(text, expected_regex, msg) def assertNotRegex(self, text, unexpected_regex, msg=None): # pylint: disable=deprecated-method self.assertNotRegexpMatches(text, unexpected_regex, msg)