def test_bash_config_windows_error(mocker): mocker.patch( "conda_env_tracker.gateways.utils.get_platform_name", mocker.Mock(return_value="win"), ) with pytest.raises(WindowsError) as err: io.add_auto_to_bash_config_file() assert str(err.value) == "Windows is unsupported at this time"
def test_do_not_add_auto_to_bash(mocker): symlink_mock = mocker.patch("conda_env_tracker.gateways.io.os.symlink") read_mock = mocker.patch("conda_env_tracker.gateways.io.Path.read_text") mocker.patch("conda_env_tracker.utils.prompt_yes_no", mocker.Mock(return_value=False)) io.add_auto_to_bash_config_file() symlink_mock.assert_not_called() read_mock.assert_called_once_with()
def test_add_auto_when_bash_missing(mocker): write_mock = mocker.patch("conda_env_tracker.gateways.io.Path.write_text") read_mock = mocker.patch("conda_env_tracker.gateways.io.Path.read_text") mocker.patch("conda_env_tracker.utils.prompt_yes_no", mocker.Mock(return_value=True)) mocker.patch("conda_env_tracker.gateways.io.Path.exists", mocker.Mock(return_value=False)) io.add_auto_to_bash_config_file() write_mock.assert_called_once_with(CET_AUTO_BASHRC_ADDITION) read_mock.assert_not_called()
def test_add_auto_when_bash_missing(mocker): write_mock = mocker.patch("conda_env_tracker.gateways.io.Path.write_text") read_mock = mocker.patch("conda_env_tracker.gateways.io.Path.read_text") mocker.patch("conda_env_tracker.utils.prompt_yes_no", mocker.Mock(return_value=True)) mocker.patch("conda_env_tracker.gateways.io.Path.exists", mocker.Mock(return_value=False)) addition = f"\nsource {Path.home()}/.cet/cet-auto.sh\n" io.add_auto_to_bash_config_file() write_mock.assert_called_once_with(addition) read_mock.assert_not_called()
def test_add_auto_to_bash_skipped(mocker, platform, bashrc_contents): write_mock = mocker.patch("conda_env_tracker.gateways.io.Path.write_text") read_mock = mocker.patch( "conda_env_tracker.gateways.io.Path.read_text", mocker.Mock(return_value=bashrc_contents), ) mocker.patch("conda_env_tracker.gateways.io.Path.exists", mocker.Mock(return_value=True)) mocker.patch( "conda_env_tracker.gateways.utils.get_platform_name", mocker.Mock(return_value=platform), ) io.add_auto_to_bash_config_file() write_mock.assert_not_called() read_mock.assert_called_once_with()
def test_add_auto_to_bash_occurs(mocker, platform, bashrc_contents): write_mock = mocker.patch("conda_env_tracker.gateways.io.Path.write_text") read_mock = mocker.patch( "conda_env_tracker.gateways.io.Path.read_text", mocker.Mock(return_value=bashrc_contents), ) mocker.patch("conda_env_tracker.utils.prompt_yes_no", mocker.Mock(return_value=True)) mocker.patch("conda_env_tracker.gateways.io.Path.exists", mocker.Mock(return_value=True)) mocker.patch( "conda_env_tracker.gateways.utils.get_platform_name", mocker.Mock(return_value=platform), ) mocker.patch("os.path.getmtime", return_value=0) expected = bashrc_contents + CET_AUTO_BASHRC_ADDITION io.add_auto_to_bash_config_file() write_mock.assert_called_once_with(expected) read_mock.assert_called_once_with()
def test_add_auto_to_bash_occurs(mocker, platform, bashrc_contents): write_mock = mocker.patch("conda_env_tracker.gateways.io.Path.write_text") read_mock = mocker.patch( "conda_env_tracker.gateways.io.Path.read_text", mocker.Mock(return_value=bashrc_contents), ) mocker.patch("conda_env_tracker.utils.prompt_yes_no", mocker.Mock(return_value=True)) mocker.patch("conda_env_tracker.gateways.io.Path.exists", mocker.Mock(return_value=True)) mocker.patch( "conda_env_tracker.gateways.utils.get_platform_name", mocker.Mock(return_value=platform), ) mocker.patch("os.path.getmtime", return_value=0) addition = f"\nsource {Path.home()}/.cet/cet-auto.sh\n" expected = bashrc_contents + addition io.add_auto_to_bash_config_file() write_mock.assert_called_once_with(expected) read_mock.assert_called_once_with()
def test_move_auto_to_end_of_bash_config(mocker, platform, bashrc_contents): """Only moved when conda initialize comes after the cet auto section.""" write_mock = mocker.patch("conda_env_tracker.gateways.io.Path.write_text") read_mock = mocker.patch( "conda_env_tracker.gateways.io.Path.read_text", mocker.Mock(return_value=bashrc_contents), ) mocker.patch("conda_env_tracker.utils.prompt_yes_no", mocker.Mock(return_value=True)) mocker.patch("conda_env_tracker.gateways.io.Path.exists", mocker.Mock(return_value=True)) mocker.patch( "conda_env_tracker.gateways.utils.get_platform_name", mocker.Mock(return_value=platform), ) mocker.patch("os.path.getmtime", return_value=0) expected = (bashrc_contents.replace(CET_AUTO_BASHRC_ADDITION, "") + CET_AUTO_BASHRC_ADDITION) io.add_auto_to_bash_config_file() write_mock.assert_called_once_with(expected) read_mock.assert_called_once_with()
def test_replace_old_auto(mocker, platform, bashrc_contents): write_mock = mocker.patch("conda_env_tracker.gateways.io.Path.write_text") read_mock = mocker.patch( "conda_env_tracker.gateways.io.Path.read_text", mocker.Mock(return_value=bashrc_contents), ) mocker.patch("conda_env_tracker.utils.prompt_yes_no", mocker.Mock(return_value=True)) mocker.patch("conda_env_tracker.gateways.io.Path.exists", mocker.Mock(return_value=True)) mocker.patch( "conda_env_tracker.gateways.utils.get_platform_name", mocker.Mock(return_value=platform), ) mocker.patch("os.path.getmtime", return_value=0) expected = (bashrc_contents.replace( f"source {Path.home() / '.cet' / 'cet-auto.sh'}", "") + CET_AUTO_BASHRC_ADDITION) io.add_auto_to_bash_config_file() write_mock.assert_called_once_with(expected) read_mock.assert_called_once_with()
def setup_auto_bash_config(activate: bool = False, sync: bool = False, yes: bool = False): """Setup bash config to automatically use conda env tracker push/pull when navigating to git repos""" # pylint: disable=redefined-outer-name add_auto_to_bash_config_file(activate=activate, sync=sync, yes=yes)
def setup_auto(activate: bool = False, sync: bool = False, yes: bool = False) -> None: """Setup the automatic use of cet push/pull when navigating to git repos""" # pylint: disable=redefined-outer-name link_auto() add_auto_to_bash_config_file(activate=activate, sync=sync, yes=yes)