import os.path import pytest from contextlib import contextmanager from unittest.mock import MagicMock from xonsh.aliases import source_alias, builtins @pytest.fixture def mockopen(xonsh_builtins, monkeypatch): @contextmanager def mocked_open(fpath, *args, **kwargs): yield MagicMock(read=lambda: fpath) monkeypatch.setattr(builtins, "open", mocked_open) def test_source_current_dir(mockopen, monkeypatch): checker = [] def mocked_execx(src, *args, **kwargs): checker.append(src.strip()) monkeypatch.setattr(builtins, "execx", mocked_execx) monkeypatch.setattr(os.path, "isfile", lambda x: True) source_alias(["foo", "bar"]) assert checker == ["foo", "bar"] def test_source_path(mockopen, monkeypatch): checker = [] def mocked_execx(src, *args, **kwargs): checker.append(src.strip()) monkeypatch.setattr(builtins, "execx", mocked_execx) source_alias(["foo", "bar"]) path_foo = os.path.join("tests", "bin", "foo") path_bar = os.path.join("tests", "bin", "bar") assert checker[0].endswith(path_foo) assert checker[1].endswith(path_bar)