diff options
author | Todd Leonhardt <todd.leonhardt@gmail.com> | 2020-11-25 18:52:56 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-25 18:52:56 -0500 |
commit | 03c65c60b39e369958b056c5c844d36d515c8a63 (patch) | |
tree | 02cf6743ce8b8d411fd4e2148b8e90d5806c483a /tests/test_utils.py | |
parent | 9f1c6b1f000593b777c3ee2c62b68edd053f2a3a (diff) | |
parent | 20951e94a213eaec3a2f46f8089099256329d0e7 (diff) | |
download | cmd2-git-03c65c60b39e369958b056c5c844d36d515c8a63.tar.gz |
Merge pull request #1021 from python-cmd2/editors
Updated utils.find_editor() to include more Windows editors
Diffstat (limited to 'tests/test_utils.py')
-rw-r--r-- | tests/test_utils.py | 61 |
1 files changed, 12 insertions, 49 deletions
diff --git a/tests/test_utils.py b/tests/test_utils.py index ab3647e4..5336ccfd 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -641,55 +641,18 @@ def test_str_to_bool_bad_input(): with pytest.raises(ValueError): cu.str_to_bool(1) -@mock.patch('cmd2.utils.probe_editors') -def test_find_editor_specified(mock_probe_editors): - expected_editor = 'vim' +def test_find_editor_specified(): + expected_editor = os.path.join('fake_dir', 'editor') with mock.patch.dict(os.environ, {'EDITOR': expected_editor}): editor = cu.find_editor() assert editor == expected_editor - mock_probe_editors.assert_not_called() - -@pytest.mark.skipif(sys.platform.startswith('win'), - reason="test 'find_editor' unix codepath") -def test_find_editor_not_specified_unix(): - expected_editor = 'vim' - with mock.patch.dict(os.environ, {'EDITOR': ''}): - with mock.patch( - 'cmd2.utils.probe_editors', - return_value=expected_editor - ) as mock_probe_editors: - editor = cu.find_editor() - assert editor == expected_editor - mock_probe_editors.assert_called_once() - -@pytest.mark.skipif(not sys.platform.startswith('win'), - reason="test 'find_editor' win codepath") -def test_find_editor_not_specified_win(): - expected_editor = 'notepad' - with mock.patch.dict(os.environ, {'EDITOR': ''}): - with mock.patch('cmd2.utils.probe_editors') as mock_probe_editors: - editor = cu.find_editor() - assert editor == expected_editor - mock_probe_editors.assert_not_called() - -@pytest.mark.skipif(sys.platform.startswith('win'), - reason="test 'probe_editors' codepath") -def test_probe_editors(tmpdir): - path = tmpdir.mkdir('bin') - vi_path = str(path.join('vi')) - with mock.patch.dict(os.environ, {'PATH': str(path)}): - editor = cu.probe_editors() - assert not editor - - def mock_is_executable(p): - print(p, vi_path) - if p == vi_path: - return True - - with mock.patch.dict(os.environ, {'PATH': str(path)}): - with mock.patch( - 'cmd2.utils.is_executable', - mock_is_executable - ): - editor = cu.probe_editors() - assert editor == vi_path + +def test_find_editor_not_specified(): + # Use existing path env setting. Something in the editor list should be found. + editor = cu.find_editor() + assert editor + + # Overwrite path env setting with invalid path, clear all other env vars so no editor should be found. + with mock.patch.dict(os.environ, {'PATH': 'fake_dir'}, clear=True): + editor = cu.find_editor() + assert editor is None |