mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-19 04:21:14 +00:00
45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import pytest
|
|
from thefuck.shells import Powershell
|
|
|
|
|
|
@pytest.mark.usefixtures('isfile', 'no_memoize', 'no_cache')
|
|
class TestPowershell(object):
|
|
@pytest.fixture
|
|
def shell(self):
|
|
return Powershell()
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def Popen(self, mocker):
|
|
mock = mocker.patch('thefuck.shells.powershell.Popen')
|
|
return mock
|
|
|
|
def test_and_(self, shell):
|
|
assert shell.and_('ls', 'cd') == '(ls) -and (cd)'
|
|
|
|
def test_app_alias(self, shell):
|
|
assert 'function fuck' in shell.app_alias('fuck')
|
|
assert 'function FUCK' in shell.app_alias('FUCK')
|
|
assert 'thefuck' in shell.app_alias('fuck')
|
|
|
|
def test_how_to_configure(self, shell):
|
|
assert not shell.how_to_configure().can_configure_automatically
|
|
|
|
@pytest.mark.parametrize('side_effect, expected_version, call_args', [
|
|
([b'''Major Minor Build Revision
|
|
----- ----- ----- --------
|
|
5 1 17763 316 \n'''], 'PowerShell 5.1.17763.316', ['powershell.exe']),
|
|
([IOError, b'PowerShell 6.1.2\n'], 'PowerShell 6.1.2', ['powershell.exe', 'pwsh'])])
|
|
def test_info(self, side_effect, expected_version, call_args, shell, Popen):
|
|
Popen.return_value.stdout.read.side_effect = side_effect
|
|
assert shell.info() == expected_version
|
|
assert Popen.call_count == len(call_args)
|
|
assert all([Popen.call_args_list[i][0][0][0] == call_arg for i, call_arg in enumerate(call_args)])
|
|
|
|
def test_get_version_error(self, shell, Popen):
|
|
Popen.return_value.stdout.read.side_effect = RuntimeError
|
|
with pytest.raises(RuntimeError):
|
|
shell._get_version()
|
|
assert Popen.call_args[0][0] == ['powershell.exe', '$PSVersionTable.PSVersion']
|