from __future__ import absolute_import
from __future__ import unicode_literals

import contextlib
import io
import os.path


TESTING_DIR = os.path.abspath(os.path.dirname(__file__))


@contextlib.contextmanager
def cwd(path):
    pwd = os.getcwd()
    os.chdir(path)
    try:
        yield
    finally:
        os.chdir(pwd)


def get_resource_path(path):
    return os.path.join(TESTING_DIR, 'resources', path)


def write_file(filename, contents):
    """Hax because coveragepy chokes on nested context managers."""
    with io.open(filename, 'w') as file_obj:
        file_obj.write(contents)
