import os

import mockssh
import pytest

from dvc.remote.ssh.connection import SSHConnection
from .basic_env import TestDirFixture
from .dir_helpers import *  # noqa


# Prevent updater and analytics from running their processes
os.environ["DVC_TEST"] = "true"
# Ensure progress output even when not outputting to raw sys.stderr console
os.environ["DVC_IGNORE_ISATTY"] = "true"


@pytest.fixture(autouse=True)
def reset_loglevel(request, caplog):
    """
    Use it to ensure log level at the start of each test
    regardless of dvc.logger.setup(), Repo configs or whatever.
    """
    level = request.config.getoption("--log-level")
    if level:
        with caplog.at_level(level.upper(), logger="dvc"):
            yield
    else:
        yield


# Wrap class like fixture as pytest-like one to avoid code duplication
@pytest.fixture
def repo_dir():
    old_fixture = TestDirFixture()
    old_fixture.setUp()
    try:
        yield old_fixture
    finally:
        old_fixture.tearDown()


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

user = "user"
key_path = os.path.join(here, "{0}.key".format(user))


@pytest.fixture
def ssh_server():
    users = {user: key_path}
    with mockssh.Server(users) as s:
        s.test_creds = {
            "host": s.host,
            "port": s.port,
            "username": user,
            "key_filename": key_path,
        }
        yield s


@pytest.fixture
def ssh(ssh_server):
    yield SSHConnection(**ssh_server.test_creds)


@pytest.fixture(scope="session", autouse=True)
def _close_pools():
    from dvc.remote.pool import close_pools

    yield
    close_pools()

@@ -90,46 +90,8 @@
 ion%0A
-from .basic_env import TestDirFixture%0A
 from
@@ -712,251 +712,8 @@
 d%0A%0A%0A
-# Wrap class like fixture as pytest-like one to avoid code duplication%0A@pytest.fixture%0Adef repo_dir():%0A    old_fixture = TestDirFixture()%0A    old_fixture.setUp()%0A    try:%0A        yield old_fixture%0A    finally:%0A        old_fixture.tearDown()%0A%0A%0A
 here

remove repo_dir