mirror of
https://github.com/pypa/pipenv.git
synced 2026-05-09 09:49:47 -04:00
68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
import pytest
|
|
|
|
from pipenv.cmdparse import Script, ScriptEmptyError
|
|
|
|
|
|
@pytest.mark.run
|
|
@pytest.mark.script
|
|
def test_parse():
|
|
script = Script.parse(['python', '-c', "print('hello')"])
|
|
assert script.command == 'python'
|
|
assert script.args == ['-c', "print('hello')"], script
|
|
|
|
|
|
@pytest.mark.run
|
|
@pytest.mark.script
|
|
def test_parse_error():
|
|
with pytest.raises(ScriptEmptyError) as e:
|
|
Script.parse('')
|
|
assert str(e.value) == "[]"
|
|
|
|
|
|
@pytest.mark.run
|
|
def test_extend():
|
|
script = Script('python', ['-c', "print('hello')"])
|
|
script.extend(['--verbose'])
|
|
assert script.command == 'python'
|
|
assert script.args == ['-c', "print('hello')", "--verbose"], script
|
|
|
|
|
|
@pytest.mark.run
|
|
@pytest.mark.script
|
|
def test_cmdify():
|
|
script = Script('python', ['-c', "print('hello world')"])
|
|
cmd = script.cmdify()
|
|
assert cmd == 'python -c "print(\'hello world\')"', script
|
|
|
|
|
|
@pytest.mark.run
|
|
@pytest.mark.script
|
|
def test_cmdify_complex():
|
|
script = Script.parse(' '.join([
|
|
'"C:\\Program Files\\Python36\\python.exe" -c',
|
|
""" "print(\'Double quote: \\\"\')" """.strip(),
|
|
]))
|
|
assert script.cmdify() == ' '.join([
|
|
'"C:\\Program Files\\Python36\\python.exe"',
|
|
'-c',
|
|
""" "print(\'Double quote: \\\"\')" """.strip(),
|
|
]), script
|
|
|
|
|
|
@pytest.mark.run
|
|
@pytest.mark.script
|
|
def test_cmdify_quote_if_paren_in_command():
|
|
"""Ensure ONLY the command is quoted if it contains parentheses.
|
|
"""
|
|
script = Script.parse('"C:\\Python36(x86)\\python.exe" -c print(123)')
|
|
assert script.cmdify() == '"C:\\Python36(x86)\\python.exe" -c print(123)', script
|
|
|
|
|
|
@pytest.mark.run
|
|
@pytest.mark.script
|
|
def test_cmdify_quote_if_carets():
|
|
"""Ensure arguments are quoted if they contain carets.
|
|
"""
|
|
script = Script('foo^bar', ['baz^rex'])
|
|
assert script.cmdify() == '"foo^bar" "baz^rex"', script
|