1
0
mirror of https://github.com/nvbn/thefuck.git synced 2025-09-21 04:32:37 +01:00

#N/A Add tests for fish

This commit is contained in:
nvbn
2015-07-24 08:04:49 +03:00
parent c34a56bc89
commit e1416a0127
5 changed files with 69 additions and 38 deletions

20
tests/functional/plots.py Normal file
View File

@@ -0,0 +1,20 @@
def with_confirmation(proc):
"""Ensures that command can be fixed when confirmation enabled."""
proc.sendline('ehco test')
proc.sendline('fuck')
proc.expect('echo test')
proc.expect('enter')
proc.expect_exact('ctrl+c')
proc.send('\n')
proc.expect('test')
def without_confirmation(proc):
"""Ensures that command can be fixed when confirmation disabled."""
proc.sendline('ehco test')
proc.sendline('fuck')
proc.expect('echo test')
proc.expect('test')

View File

@@ -1,4 +1,5 @@
import pytest import pytest
from tests.functional.plots import with_confirmation, without_confirmation
from tests.functional.utils import spawn, functional from tests.functional.utils import spawn, functional
containers = [('thefuck/ubuntu-python3-bash', ''' containers = [('thefuck/ubuntu-python3-bash', '''
@@ -23,17 +24,7 @@ CMD ["/bin/bash"]
def test_with_confirmation(tag, dockerfile): def test_with_confirmation(tag, dockerfile):
with spawn(tag, dockerfile) as proc: with spawn(tag, dockerfile) as proc:
proc.sendline('eval $(thefuck-alias)') proc.sendline('eval $(thefuck-alias)')
with_confirmation(proc)
proc.sendline('ehco test')
proc.expect('command not found')
proc.sendline('fuck')
proc.expect('echo test')
proc.expect('enter')
proc.expect_exact('ctrl+c')
proc.send('\n')
proc.expect('test')
@functional @functional
@@ -42,10 +33,4 @@ def test_without_confirmation(tag, dockerfile):
with spawn(tag, dockerfile) as proc: with spawn(tag, dockerfile) as proc:
proc.sendline('export THEFUCK_REQUIRE_CONFIRMATION=false') proc.sendline('export THEFUCK_REQUIRE_CONFIRMATION=false')
proc.sendline('eval $(thefuck-alias)') proc.sendline('eval $(thefuck-alias)')
without_confirmation(proc)
proc.sendline('ehco test')
proc.expect('command not found')
proc.sendline('fuck')
proc.expect('echo test')
proc.expect('test')

View File

@@ -0,0 +1,39 @@
import pytest
from tests.functional.plots import with_confirmation, without_confirmation
from tests.functional.utils import spawn, functional
containers = [('thefuck/ubuntu-python3-bash', '''
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -yy python3 python3-pip python3-dev fish
RUN pip3 install -U setuptools
RUN ln -s /usr/bin/pip3 /usr/bin/pip
CMD ["/usr/bin/fish"]
'''),
('thefuck/ubuntu-python2-bash', '''
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -yy python python-pip python-dev fish
RUN pip2 install -U pip setuptools
CMD ["/usr/bin/fish"]
''')]
@functional
@pytest.mark.parametrize('tag, dockerfile', containers)
def test_with_confirmation(tag, dockerfile):
with spawn(tag, dockerfile) as proc:
proc.sendline('thefuck-alias >> ~/.config/fish/config.fish')
proc.sendline('fish')
with_confirmation(proc)
@functional
@pytest.mark.parametrize('tag, dockerfile', containers)
def test_without_confirmation(tag, dockerfile):
with spawn(tag, dockerfile) as proc:
proc.sendline('thefuck-alias >> ~/.config/fish/config.fish')
proc.sendline('mkdir ~/.thefuck')
proc.sendline('echo "require_confirmation = False" >> ~/.thefuck/settings.py')
proc.sendline('fish')
without_confirmation(proc)

View File

@@ -1,5 +1,6 @@
import pytest import pytest
from tests.functional.utils import spawn, functional from tests.functional.utils import spawn, functional
from tests.functional.plots import with_confirmation, without_confirmation
containers = [('thefuck/ubuntu-python3-zsh', ''' containers = [('thefuck/ubuntu-python3-zsh', '''
FROM ubuntu:latest FROM ubuntu:latest
@@ -23,17 +24,7 @@ CMD ["/bin/zsh"]
def test_with_confirmation(tag, dockerfile): def test_with_confirmation(tag, dockerfile):
with spawn(tag, dockerfile) as proc: with spawn(tag, dockerfile) as proc:
proc.sendline('eval $(thefuck-alias)') proc.sendline('eval $(thefuck-alias)')
with_confirmation(proc)
proc.sendline('ehco test')
proc.expect('command not found')
proc.sendline('fuck')
proc.expect('echo test')
proc.expect('enter')
proc.expect_exact('ctrl+c')
proc.send('\n')
proc.expect('test')
@functional @functional
@@ -42,10 +33,4 @@ def test_without_confirmation(tag, dockerfile):
with spawn(tag, dockerfile) as proc: with spawn(tag, dockerfile) as proc:
proc.sendline('export THEFUCK_REQUIRE_CONFIRMATION=false') proc.sendline('export THEFUCK_REQUIRE_CONFIRMATION=false')
proc.sendline('eval $(thefuck-alias)') proc.sendline('eval $(thefuck-alias)')
without_confirmation(proc)
proc.sendline('ehco test')
proc.expect('command not found')
proc.sendline('fuck')
proc.expect('echo test')
proc.expect('test')

View File

@@ -1,11 +1,12 @@
import os import os
import pytest
from contextlib import contextmanager from contextlib import contextmanager
import pexpect
import subprocess import subprocess
import shutil import shutil
from tempfile import mkdtemp from tempfile import mkdtemp
from pathlib import Path from pathlib import Path
import sys
import pexpect
import pytest
root = str(Path(__file__).parent.parent.parent.resolve()) root = str(Path(__file__).parent.parent.parent.resolve())
@@ -25,6 +26,7 @@ def spawn(tag, dockerfile):
build_container(tag, dockerfile) build_container(tag, dockerfile)
proc = pexpect.spawnu( proc = pexpect.spawnu(
'docker run --volume {}:/src --tty=true --interactive=true {}'.format(root, tag)) 'docker run --volume {}:/src --tty=true --interactive=true {}'.format(root, tag))
proc.logfile = sys.stdout
proc.sendline('pip install /src') proc.sendline('pip install /src')
try: try: