mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-18 12:06:04 +00:00
Add BARE
option for running functional tests without docker
This commit is contained in:
parent
d7c8a43bbb
commit
2da3d02361
12
.travis.yml
12
.travis.yml
@ -3,6 +3,16 @@ python:
|
||||
- "3.4"
|
||||
- "3.3"
|
||||
- "2.7"
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- bash
|
||||
- zsh
|
||||
- fish
|
||||
- tcsh
|
||||
env:
|
||||
- FUNCTIONAL=true
|
||||
- BARE=true
|
||||
install:
|
||||
- pip install coveralls
|
||||
- pip install -r requirements.txt
|
||||
@ -10,5 +20,5 @@ install:
|
||||
- rm -rf build
|
||||
script:
|
||||
- export COVERAGE_PYTHON_VERSION=python-${TRAVIS_PYTHON_VERSION:0:1}
|
||||
- coverage run --source=thefuck,tests -m py.test -v
|
||||
- coverage run --source=thefuck,tests -m py.test -v --capture=sys
|
||||
after_success: coveralls
|
||||
|
@ -1,5 +1,8 @@
|
||||
def with_confirmation(proc):
|
||||
"""Ensures that command can be fixed when confirmation enabled."""
|
||||
proc.sendline('mkdir -p ~/.thefuck')
|
||||
proc.sendline('echo "require_confirmation = True" > ~/.thefuck/settings.py')
|
||||
|
||||
proc.sendline('ehco test')
|
||||
|
||||
proc.sendline('fuck')
|
||||
@ -13,6 +16,9 @@ def with_confirmation(proc):
|
||||
|
||||
def refuse_with_confirmation(proc):
|
||||
"""Ensures that fix can be refused when confirmation enabled."""
|
||||
proc.sendline('mkdir -p ~/.thefuck')
|
||||
proc.sendline('echo "require_confirmation = True" > ~/.thefuck/settings.py')
|
||||
|
||||
proc.sendline('ehco test')
|
||||
|
||||
proc.sendline('fuck')
|
||||
@ -26,6 +32,9 @@ def refuse_with_confirmation(proc):
|
||||
|
||||
def without_confirmation(proc):
|
||||
"""Ensures that command can be fixed when confirmation disabled."""
|
||||
proc.sendline('mkdir -p ~/.thefuck')
|
||||
proc.sendline('echo "require_confirmation = False" > ~/.thefuck/settings.py')
|
||||
|
||||
proc.sendline('ehco test')
|
||||
|
||||
proc.sendline('fuck')
|
||||
|
@ -1,29 +1,27 @@
|
||||
import pytest
|
||||
from tests.functional.plots import with_confirmation, without_confirmation,\
|
||||
from tests.functional.plots import with_confirmation, without_confirmation, \
|
||||
refuse_with_confirmation
|
||||
from tests.functional.utils import spawn, functional
|
||||
from tests.functional.utils import spawn, functional, images
|
||||
|
||||
containers = [('ubuntu-python3-bash', '''
|
||||
containers = images(('ubuntu-python3-bash', '''
|
||||
FROM ubuntu:latest
|
||||
RUN apt-get update
|
||||
RUN apt-get install -yy python3 python3-pip python3-dev
|
||||
RUN pip3 install -U setuptools
|
||||
RUN ln -s /usr/bin/pip3 /usr/bin/pip
|
||||
CMD ["/bin/bash"]
|
||||
'''),
|
||||
('ubuntu-python2-bash', '''
|
||||
('ubuntu-python2-bash', '''
|
||||
FROM ubuntu:latest
|
||||
RUN apt-get update
|
||||
RUN apt-get install -yy python python-pip python-dev
|
||||
RUN pip2 install -U pip setuptools
|
||||
CMD ["/bin/bash"]
|
||||
''')]
|
||||
'''))
|
||||
|
||||
|
||||
@functional
|
||||
@pytest.mark.parametrize('tag, dockerfile', containers)
|
||||
def test_with_confirmation(tag, dockerfile):
|
||||
with spawn(tag, dockerfile) as proc:
|
||||
with spawn(tag, dockerfile, 'bash') as proc:
|
||||
proc.sendline('eval $(thefuck-alias)')
|
||||
with_confirmation(proc)
|
||||
|
||||
@ -31,7 +29,7 @@ def test_with_confirmation(tag, dockerfile):
|
||||
@functional
|
||||
@pytest.mark.parametrize('tag, dockerfile', containers)
|
||||
def test_refuse_with_confirmation(tag, dockerfile):
|
||||
with spawn(tag, dockerfile) as proc:
|
||||
with spawn(tag, dockerfile, 'bash') as proc:
|
||||
proc.sendline('eval $(thefuck-alias)')
|
||||
refuse_with_confirmation(proc)
|
||||
|
||||
@ -39,7 +37,6 @@ def test_refuse_with_confirmation(tag, dockerfile):
|
||||
@functional
|
||||
@pytest.mark.parametrize('tag, dockerfile', containers)
|
||||
def test_without_confirmation(tag, dockerfile):
|
||||
with spawn(tag, dockerfile) as proc:
|
||||
proc.sendline('export THEFUCK_REQUIRE_CONFIRMATION=false')
|
||||
with spawn(tag, dockerfile, 'bash') as proc:
|
||||
proc.sendline('eval $(thefuck-alias)')
|
||||
without_confirmation(proc)
|
||||
|
@ -1,30 +1,28 @@
|
||||
import pytest
|
||||
from tests.functional.plots import with_confirmation, without_confirmation, \
|
||||
refuse_with_confirmation
|
||||
from tests.functional.utils import spawn, functional
|
||||
from tests.functional.utils import spawn, functional, images
|
||||
|
||||
containers = [('ubuntu-python3-fish', '''
|
||||
containers = images(('ubuntu-python3-fish', '''
|
||||
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"]
|
||||
'''),
|
||||
('ubuntu-python2-fish', '''
|
||||
('ubuntu-python2-fish', '''
|
||||
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')
|
||||
with spawn(tag, dockerfile, 'fish') as proc:
|
||||
proc.sendline('thefuck-alias > ~/.config/fish/config.fish')
|
||||
proc.sendline('fish')
|
||||
with_confirmation(proc)
|
||||
|
||||
@ -32,8 +30,8 @@ def test_with_confirmation(tag, dockerfile):
|
||||
@functional
|
||||
@pytest.mark.parametrize('tag, dockerfile', containers)
|
||||
def test_refuse_with_confirmation(tag, dockerfile):
|
||||
with spawn(tag, dockerfile) as proc:
|
||||
proc.sendline('thefuck-alias >> ~/.config/fish/config.fish')
|
||||
with spawn(tag, dockerfile, 'fish') as proc:
|
||||
proc.sendline('thefuck-alias > ~/.config/fish/config.fish')
|
||||
proc.sendline('fish')
|
||||
refuse_with_confirmation(proc)
|
||||
|
||||
@ -41,9 +39,7 @@ def test_refuse_with_confirmation(tag, dockerfile):
|
||||
@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')
|
||||
with spawn(tag, dockerfile, 'fish') as proc:
|
||||
proc.sendline('thefuck-alias > ~/.config/fish/config.fish')
|
||||
proc.sendline('fish')
|
||||
without_confirmation(proc)
|
||||
|
@ -1,29 +1,27 @@
|
||||
import pytest
|
||||
from tests.functional.utils import spawn, functional
|
||||
from tests.functional.utils import spawn, functional, images
|
||||
from tests.functional.plots import with_confirmation, without_confirmation, \
|
||||
refuse_with_confirmation
|
||||
|
||||
containers = [('ubuntu-python3-tcsh', '''
|
||||
containers = images(('ubuntu-python3-tcsh', '''
|
||||
FROM ubuntu:latest
|
||||
RUN apt-get update
|
||||
RUN apt-get install -yy python3 python3-pip python3-dev tcsh
|
||||
RUN pip3 install -U setuptools
|
||||
RUN ln -s /usr/bin/pip3 /usr/bin/pip
|
||||
CMD ["/usr/bin/tcsh"]
|
||||
'''),
|
||||
('ubuntu-python2-tcsh', '''
|
||||
('ubuntu-python2-tcsh', '''
|
||||
FROM ubuntu:latest
|
||||
RUN apt-get update
|
||||
RUN apt-get install -yy python python-pip python-dev tcsh
|
||||
RUN pip2 install -U pip setuptools
|
||||
CMD ["/usr/bin/tcsh"]
|
||||
''')]
|
||||
'''))
|
||||
|
||||
|
||||
@functional
|
||||
@pytest.mark.parametrize('tag, dockerfile', containers)
|
||||
def test_with_confirmation(tag, dockerfile):
|
||||
with spawn(tag, dockerfile) as proc:
|
||||
with spawn(tag, dockerfile, 'tcsh') as proc:
|
||||
proc.sendline('tcsh')
|
||||
proc.sendline('eval `thefuck-alias`')
|
||||
with_confirmation(proc)
|
||||
@ -32,7 +30,7 @@ def test_with_confirmation(tag, dockerfile):
|
||||
@functional
|
||||
@pytest.mark.parametrize('tag, dockerfile', containers)
|
||||
def test_refuse_with_confirmation(tag, dockerfile):
|
||||
with spawn(tag, dockerfile) as proc:
|
||||
with spawn(tag, dockerfile, 'tcsh') as proc:
|
||||
proc.sendline('tcsh')
|
||||
proc.sendline('eval `thefuck-alias`')
|
||||
refuse_with_confirmation(proc)
|
||||
@ -41,9 +39,7 @@ def test_refuse_with_confirmation(tag, dockerfile):
|
||||
@functional
|
||||
@pytest.mark.parametrize('tag, dockerfile', containers)
|
||||
def test_without_confirmation(tag, dockerfile):
|
||||
with spawn(tag, dockerfile) as proc:
|
||||
with spawn(tag, dockerfile, 'tcsh') as proc:
|
||||
proc.sendline('tcsh')
|
||||
proc.sendline('mkdir ~/.thefuck')
|
||||
proc.sendline('echo "require_confirmation = False" >> ~/.thefuck/settings.py')
|
||||
proc.sendline('eval `thefuck-alias`')
|
||||
without_confirmation(proc)
|
||||
|
@ -1,29 +1,27 @@
|
||||
import pytest
|
||||
from tests.functional.utils import spawn, functional
|
||||
from tests.functional.utils import spawn, functional, images
|
||||
from tests.functional.plots import with_confirmation, without_confirmation,\
|
||||
refuse_with_confirmation
|
||||
|
||||
containers = [('ubuntu-python3-zsh', '''
|
||||
containers = images(('ubuntu-python3-zsh', '''
|
||||
FROM ubuntu:latest
|
||||
RUN apt-get update
|
||||
RUN apt-get install -yy python3 python3-pip python3-dev zsh
|
||||
RUN pip3 install -U setuptools
|
||||
RUN ln -s /usr/bin/pip3 /usr/bin/pip
|
||||
CMD ["/bin/zsh"]
|
||||
'''),
|
||||
('ubuntu-python2-zsh', '''
|
||||
FROM ubuntu:latest
|
||||
RUN apt-get update
|
||||
RUN apt-get install -yy python python-pip python-dev zsh
|
||||
RUN pip2 install -U pip setuptools
|
||||
CMD ["/bin/zsh"]
|
||||
''')]
|
||||
'''))
|
||||
|
||||
|
||||
@functional
|
||||
@pytest.mark.parametrize('tag, dockerfile', containers)
|
||||
def test_with_confirmation(tag, dockerfile):
|
||||
with spawn(tag, dockerfile) as proc:
|
||||
with spawn(tag, dockerfile, 'zsh') as proc:
|
||||
proc.sendline('eval $(thefuck-alias)')
|
||||
with_confirmation(proc)
|
||||
|
||||
@ -31,7 +29,7 @@ def test_with_confirmation(tag, dockerfile):
|
||||
@functional
|
||||
@pytest.mark.parametrize('tag, dockerfile', containers)
|
||||
def test_refuse_with_confirmation(tag, dockerfile):
|
||||
with spawn(tag, dockerfile) as proc:
|
||||
with spawn(tag, dockerfile, 'zsh') as proc:
|
||||
proc.sendline('eval $(thefuck-alias)')
|
||||
refuse_with_confirmation(proc)
|
||||
|
||||
@ -39,7 +37,6 @@ def test_refuse_with_confirmation(tag, dockerfile):
|
||||
@functional
|
||||
@pytest.mark.parametrize('tag, dockerfile', containers)
|
||||
def test_without_confirmation(tag, dockerfile):
|
||||
with spawn(tag, dockerfile) as proc:
|
||||
proc.sendline('export THEFUCK_REQUIRE_CONFIRMATION=false')
|
||||
with spawn(tag, dockerfile, 'zsh') as proc:
|
||||
proc.sendline('eval $(thefuck-alias)')
|
||||
without_confirmation(proc)
|
||||
|
@ -9,6 +9,7 @@ import pexpect
|
||||
import pytest
|
||||
|
||||
root = str(Path(__file__).parent.parent.parent.resolve())
|
||||
bare = os.environ.get('BARE')
|
||||
|
||||
|
||||
def build_container(tag, dockerfile):
|
||||
@ -22,18 +23,29 @@ def build_container(tag, dockerfile):
|
||||
|
||||
|
||||
@contextmanager
|
||||
def spawn(tag, dockerfile):
|
||||
tag = 'thefuck/{}'.format(tag)
|
||||
build_container(tag, dockerfile)
|
||||
proc = pexpect.spawnu(
|
||||
'docker run --volume {}:/src --tty=true --interactive=true {}'.format(root, tag))
|
||||
def spawn(tag, dockerfile, cmd):
|
||||
if bare:
|
||||
proc = pexpect.spawnu(cmd)
|
||||
else:
|
||||
tag = 'thefuck/{}'.format(tag)
|
||||
build_container(tag, dockerfile)
|
||||
proc = pexpect.spawnu('docker run --volume {}:/src --tty=true '
|
||||
'--interactive=true {} {}'.format(root, tag, cmd))
|
||||
proc.sendline('pip install /src')
|
||||
|
||||
proc.logfile = sys.stdout
|
||||
proc.sendline('pip install /src')
|
||||
|
||||
try:
|
||||
yield proc
|
||||
finally:
|
||||
proc.terminate()
|
||||
proc.terminate(force=bare)
|
||||
|
||||
|
||||
def images(*items):
|
||||
if bare:
|
||||
return [items[0]]
|
||||
else:
|
||||
return items
|
||||
|
||||
|
||||
functional = pytest.mark.skipif(
|
||||
|
Loading…
x
Reference in New Issue
Block a user