ansible-test: prefer shlex.quote (#56823)

(cherry picked from commit 484c023316)
pull/57160/head
Martin Krizek 7 years ago committed by Toshio Kuratomi
parent 634690ede5
commit fa1cef7190

@ -11,7 +11,6 @@ import tempfile
import time import time
import textwrap import textwrap
import functools import functools
import pipes
import sys import sys
import hashlib import hashlib
import difflib import difflib
@ -55,6 +54,7 @@ from lib.util import (
generate_pip_command, generate_pip_command,
find_python, find_python,
get_docker_completion, get_docker_completion,
cmd_quote,
) )
from lib.docker_util import ( from lib.docker_util import (
@ -210,7 +210,7 @@ def install_command_requirements(args, python_version=None):
return # no changes means no conflicts return # no changes means no conflicts
raise ApplicationError('Conflicts detected in requirements. The following commands reported changes during verification:\n%s' % raise ApplicationError('Conflicts detected in requirements. The following commands reported changes during verification:\n%s' %
'\n'.join((' '.join(pipes.quote(c) for c in cmd) for cmd in changes))) '\n'.join((' '.join(cmd_quote(c) for c in cmd) for cmd in changes)))
def run_pip_commands(args, pip, commands, detect_pip_changes=False): def run_pip_commands(args, pip, commands, detect_pip_changes=False):

@ -3,7 +3,6 @@
from __future__ import absolute_import, print_function from __future__ import absolute_import, print_function
import os import os
import pipes
import tempfile import tempfile
import time import time
@ -14,6 +13,7 @@ from lib.util import (
ApplicationError, ApplicationError,
run_command, run_command,
intercept_command, intercept_command,
cmd_quote,
) )
from lib.core_ci import ( from lib.core_ci import (
@ -105,7 +105,7 @@ class ManageWindowsCI(object):
options.append('-tt') options.append('-tt')
if isinstance(command, list): if isinstance(command, list):
command = ' '.join(pipes.quote(c) for c in command) command = ' '.join(cmd_quote(c) for c in command)
run_command(self.core_ci.args, run_command(self.core_ci.args,
['ssh', '-q'] + self.ssh_args + ['ssh', '-q'] + self.ssh_args +
@ -267,14 +267,14 @@ class ManagePosixCI(object):
options = [] options = []
if isinstance(command, list): if isinstance(command, list):
command = ' '.join(pipes.quote(c) for c in command) command = ' '.join(cmd_quote(c) for c in command)
run_command(self.core_ci.args, run_command(self.core_ci.args,
['ssh', '-tt', '-q'] + self.ssh_args + ['ssh', '-tt', '-q'] + self.ssh_args +
options + options +
['-p', str(self.core_ci.connection.port), ['-p', str(self.core_ci.connection.port),
'%s@%s' % (self.core_ci.connection.username, self.core_ci.connection.hostname)] + '%s@%s' % (self.core_ci.connection.username, self.core_ci.connection.hostname)] +
self.become + [pipes.quote(command)]) self.become + [cmd_quote(command)])
def scp(self, src, dst): def scp(self, src, dst):
""" """

@ -9,7 +9,6 @@ import fcntl
import inspect import inspect
import json import json
import os import os
import pipes
import pkgutil import pkgutil
import random import random
import re import re
@ -41,6 +40,11 @@ except ImportError:
DOCKER_COMPLETION = {} DOCKER_COMPLETION = {}
COVERAGE_PATHS = {} # type: dict[str, str] COVERAGE_PATHS = {} # type: dict[str, str]
try:
from shlex import quote as cmd_quote
except ImportError:
from pipes import quote as cmd_quote
def get_docker_completion(): def get_docker_completion():
""" """
@ -339,7 +343,7 @@ def raw_command(cmd, capture=False, env=None, data=None, cwd=None, explain=False
cmd = list(cmd) cmd = list(cmd)
escaped_cmd = ' '.join(pipes.quote(c) for c in cmd) escaped_cmd = ' '.join(cmd_quote(c) for c in cmd)
display.info('Run command: %s' % escaped_cmd, verbosity=cmd_verbosity, truncate=True) display.info('Run command: %s' % escaped_cmd, verbosity=cmd_verbosity, truncate=True)
display.info('Working directory: %s' % cwd, verbosity=2) display.info('Working directory: %s' % cwd, verbosity=2)
@ -705,7 +709,7 @@ class SubprocessError(ApplicationError):
:type stderr: str | None :type stderr: str | None
:type runtime: float | None :type runtime: float | None
""" """
message = 'Command "%s" returned exit status %s.\n' % (' '.join(pipes.quote(c) for c in cmd), status) message = 'Command "%s" returned exit status %s.\n' % (' '.join(cmd_quote(c) for c in cmd), status)
if stderr: if stderr:
message += '>>> Standard Error\n' message += '>>> Standard Error\n'

Loading…
Cancel
Save