import builtins

import pytest
from unittest.mock import patch

from xonsh.environ import Env
import xonsh.completers.path as xcp


@pytest.fixture(autouse=True)
def xonsh_execer_autouse(xonsh_builtins, xonsh_execer):
    return xonsh_execer


def test_pattern_need_quotes():
    # just make sure the regex compiles
    xcp.PATTERN_NEED_QUOTES.match('')


def test_complete_path(xonsh_builtins):
    xonsh_builtins.__xonsh_env__ = {'CASE_SENSITIVE_COMPLETIONS': False,
                                    'GLOB_SORTED': True,
                                    'SUBSEQUENCE_PATH_COMPLETION': False,
                                    'FUZZY_PATH_COMPLETION': False,
                                    'SUGGEST_THRESHOLD': 3,
                                    'CDPATH': set(),
    }
    xcp.complete_path('[1-0.1]', '[1-0.1]', 0, 7, dict())


@patch('xonsh.completers.path._add_cdpaths')
def test_cd_path_no_cd(mock_add_cdpaths, xonsh_builtins):
    xonsh_builtins.__xonsh_env__ = {'CASE_SENSITIVE_COMPLETIONS': False,
                                    'GLOB_SORTED': True,
                                    'SUBSEQUENCE_PATH_COMPLETION': False,
                                    'FUZZY_PATH_COMPLETION': False,
                                    'SUGGEST_THRESHOLD': 3,
                                    'CDPATH': ['/'],
    }
    xcp.complete_path('a', 'cat a', 4, 5, dict())
    mock_add_cdpaths.assert_not_called()
