Esempio n. 1
0
def test_prompt_toolkit_version_checks(
    ptk_ver,
    ini_shell_type,
    exp_shell_type,
    warn_snip,
    using_vended_ptk,
    monkeypatch,
    xonsh_builtins,
):

    mocked_warn = ""

    def mock_warning(msg):
        nonlocal mocked_warn
        mocked_warn = msg
        return

    def mock_ptk_above_min_supported():
        nonlocal ptk_ver
        return ptk_ver and (ptk_ver[:3] >= minimum_required_ptk_version)

    def mock_has_prompt_toolkit():
        nonlocal ptk_ver
        return ptk_ver is not None

    monkeypatch.setattr(
        "xonsh.shell.warnings.warn", mock_warning
    )  # hardwon: patch the caller!
    monkeypatch.setattr(
        "xonsh.shell.ptk_above_min_supported", mock_ptk_above_min_supported
    )  # have to patch both callers
    monkeypatch.setattr(
        "xonsh.platform.ptk_above_min_supported", mock_ptk_above_min_supported
    )
    monkeypatch.setattr("xonsh.platform.has_prompt_toolkit", mock_has_prompt_toolkit)

    old_syspath = sys.path.copy()

    act_shell_type = Shell.choose_shell_type(ini_shell_type, {})

    if using_vended_ptk:
        # ensure PTK has been unloaded and the vended version added to sys.path
        assert len(old_syspath) < len(sys.path)
    else:
        assert len(old_syspath) == len(sys.path)

    sys.path = old_syspath

    assert act_shell_type == exp_shell_type

    if warn_snip:
        assert warn_snip in mocked_warn

    pass
Esempio n. 2
0
def test_prompt_toolkit_version_checks(ptk_ver, ini_shell_type, exp_shell_type,
                                       warn_snip, monkeypatch, xonsh_builtins):

    mocked_warn = ""

    def mock_warning(msg):
        nonlocal mocked_warn
        mocked_warn = msg
        return

    def mock_ptk_above_min_supported():
        nonlocal ptk_ver
        return ptk_ver and (ptk_ver[:2] >= minimum_required_ptk_version)

    def mock_has_prompt_toolkit():
        nonlocal ptk_ver
        return ptk_ver is not None

    monkeypatch.setattr("xonsh.shell.warnings.warn",
                        mock_warning)  # hardwon: patch the caller!
    monkeypatch.setattr(
        "xonsh.shell.ptk_above_min_supported",
        mock_ptk_above_min_supported)  # have to patch both callers
    monkeypatch.setattr("xonsh.platform.ptk_above_min_supported",
                        mock_ptk_above_min_supported)
    monkeypatch.setattr("xonsh.shell.has_prompt_toolkit",
                        mock_has_prompt_toolkit)
    monkeypatch.setattr("xonsh.platform.has_prompt_toolkit",
                        mock_has_prompt_toolkit)

    act_shell_type = Shell.choose_shell_type(ini_shell_type, {})

    assert act_shell_type == exp_shell_type

    if warn_snip:
        assert warn_snip in mocked_warn

    pass