Add and use find_program() utility method instead of calling distutils find_executable directly.
This commit is contained in:
parent
fdb1f398bf
commit
9a80938e0a
|
@ -15,7 +15,6 @@
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
from distutils.spawn import find_executable
|
|
||||||
from . import util
|
from . import util
|
||||||
|
|
||||||
# Supported archive commands
|
# Supported archive commands
|
||||||
|
@ -195,7 +194,7 @@ def find_archive_program (format, command):
|
||||||
raise util.PatoolError("%s archive format `%s' is not supported" % (command, format))
|
raise util.PatoolError("%s archive format `%s' is not supported" % (command, format))
|
||||||
# return the first existing program
|
# return the first existing program
|
||||||
for program in programs:
|
for program in programs:
|
||||||
exe = find_executable(program)
|
exe = util.find_program(program)
|
||||||
if exe:
|
if exe:
|
||||||
if program == '7z' and format == 'rar' and not util.p7zip_supports_rar():
|
if program == '7z' and format == 'rar' and not util.p7zip_supports_rar():
|
||||||
continue
|
continue
|
||||||
|
@ -209,7 +208,7 @@ def find_encoding_program (program, encoding):
|
||||||
no encoding program could be found"""
|
no encoding program could be found"""
|
||||||
if program in ('tar', 'star'):
|
if program in ('tar', 'star'):
|
||||||
for enc_program in EncodingPrograms[encoding]:
|
for enc_program in EncodingPrograms[encoding]:
|
||||||
found = find_executable(enc_program)
|
found = util.find_program(enc_program)
|
||||||
if found:
|
if found:
|
||||||
return found
|
return found
|
||||||
return None
|
return None
|
||||||
|
@ -228,7 +227,7 @@ def list_formats ():
|
||||||
print " %8s: %s" % (command, program),
|
print " %8s: %s" % (command, program),
|
||||||
basename = os.path.basename(program)
|
basename = os.path.basename(program)
|
||||||
if format == 'tar':
|
if format == 'tar':
|
||||||
encs = [x for x in ArchiveEncodings if find_executable(x)]
|
encs = [x for x in ArchiveEncodings if util.find_program(x)]
|
||||||
if encs:
|
if encs:
|
||||||
print "(supported encodings: %s)" % ", ".join(encs),
|
print "(supported encodings: %s)" % ", ".join(encs),
|
||||||
elif format == '7z':
|
elif format == '7z':
|
||||||
|
|
|
@ -20,6 +20,7 @@ import subprocess
|
||||||
import mimetypes
|
import mimetypes
|
||||||
import tempfile
|
import tempfile
|
||||||
import traceback
|
import traceback
|
||||||
|
from distutils.spawn import find_executable
|
||||||
|
|
||||||
mimedb = mimetypes.MimeTypes(strict=False)
|
mimedb = mimetypes.MimeTypes(strict=False)
|
||||||
# add missing encodings and mimetypes
|
# add missing encodings and mimetypes
|
||||||
|
@ -103,3 +104,10 @@ def log_internal_error (out=sys.stderr):
|
||||||
def p7zip_supports_rar ():
|
def p7zip_supports_rar ():
|
||||||
"""Determine if the RAR codec is installed for 7z program."""
|
"""Determine if the RAR codec is installed for 7z program."""
|
||||||
return os.path.exists('/usr/lib/p7zip/Codecs/Rar29.so')
|
return os.path.exists('/usr/lib/p7zip/Codecs/Rar29.so')
|
||||||
|
|
||||||
|
|
||||||
|
def find_program (program):
|
||||||
|
"""Look for program in environment PATH variable."""
|
||||||
|
# XXX memoize result of this function
|
||||||
|
path = os.environ['PATH']
|
||||||
|
return find_executable(program, path=path)
|
||||||
|
|
|
@ -18,7 +18,6 @@ import os
|
||||||
import shutil
|
import shutil
|
||||||
import nose
|
import nose
|
||||||
import patoolib
|
import patoolib
|
||||||
from distutils.spawn import find_executable
|
|
||||||
|
|
||||||
basedir = os.path.dirname(__file__)
|
basedir = os.path.dirname(__file__)
|
||||||
datadir = os.path.join(basedir, 'data')
|
datadir = os.path.join(basedir, 'data')
|
||||||
|
@ -86,7 +85,7 @@ def needs_program (program):
|
||||||
"""Decorator skipping test if given program is not available."""
|
"""Decorator skipping test if given program is not available."""
|
||||||
def check_prog (f):
|
def check_prog (f):
|
||||||
def newfunc (*args, **kwargs):
|
def newfunc (*args, **kwargs):
|
||||||
if not find_executable(program):
|
if not patoolib.util.find_program(program):
|
||||||
raise nose.SkipTest("program `%s' not available" % program)
|
raise nose.SkipTest("program `%s' not available" % program)
|
||||||
return f(*args, **kwargs)
|
return f(*args, **kwargs)
|
||||||
newfunc.func_name = f.func_name
|
newfunc.func_name = f.func_name
|
||||||
|
@ -98,7 +97,7 @@ def needs_codec (program, codec):
|
||||||
"""Decorator skipping test if given program codec is not available."""
|
"""Decorator skipping test if given program codec is not available."""
|
||||||
def check_prog (f):
|
def check_prog (f):
|
||||||
def newfunc (*args, **kwargs):
|
def newfunc (*args, **kwargs):
|
||||||
if not find_executable(program):
|
if not patoolib.util.find_program(program):
|
||||||
raise nose.SkipTest("program `%s' not available" % program)
|
raise nose.SkipTest("program `%s' not available" % program)
|
||||||
if not find_codec(program, codec):
|
if not find_codec(program, codec):
|
||||||
raise nose.SkipTest("codec `%s' for program `%s' not available" % (codec, program))
|
raise nose.SkipTest("codec `%s' for program `%s' not available" % (codec, program))
|
||||||
|
|
Loading…
Reference in New Issue