test: do not silently ignore feature detection failures

When ASAN memleak detection is enabled, any memory leak would result in
an exception and subsequently all features are marked as missing.
With the default profile, any Lua plugin or certain configurations could
cause a memory leak. To avoid such interference, set the configuration
path to a dummy location and warn whenever an error happens nonetheless.

Do not call setProgramPath() immediately, there is no "tshark" binary in
the current working directory anymore. Rely on test.py to set the path.

Change-Id: Idccc3d68eb6f6bb64d3a0b32897acecc65e0dfb6
Reviewed-on: https://code.wireshark.org/review/28867
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Gerald Combs <gerald@wireshark.org>
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
This commit is contained in:
Peter Wu 2018-07-26 23:47:20 +02:00
parent 99242affde
commit 9ca8a9f87c
1 changed files with 19 additions and 19 deletions

View File

@ -9,6 +9,7 @@
#
'''Configuration'''
import logging
import os
import os.path
import re
@ -95,25 +96,25 @@ def getTsharkInfo():
global have_kerberos
global have_libgcrypt16
global have_libgcrypt17
have_lua = False
have_nghttp2 = False
have_kerberos = False
have_libgcrypt16 = False
have_libgcrypt17 = False
if not cmd_tshark:
logging.warning("tshark binary is not yet set")
return
try:
tshark_v_blob = str(subprocess.check_output((cmd_tshark, '--version'), stderr=subprocess.PIPE))
tshark_v = ' '.join(tshark_v_blob.splitlines())
if re.search('with +Lua', tshark_v):
have_lua = True
if re.search('with +nghttp2', tshark_v):
have_nghttp2 = True
if re.search('(with +MIT +Kerberos|with +Heimdal +Kerberos)', tshark_v):
have_kerberos = True
gcry_m = re.search('with +Gcrypt +([0-9]+\.[0-9]+)', tshark_v)
have_libgcrypt16 = gcry_m and float(gcry_m.group(1)) >= 1.6
have_libgcrypt17 = gcry_m and float(gcry_m.group(1)) >= 1.7
except:
pass
tshark_v = subprocess.check_output(
(cmd_tshark, '--version'),
stderr=subprocess.PIPE,
universal_newlines=True,
env={'WIRESHARK_CONFIG_DIR': '/dummy/non/existing'}
).replace('\n', ' ')
except subprocess.CalledProcessError as e:
logging.warning("Failed to detect tshark features: %s", e)
tshark_v = ''
have_lua = bool(re.search('with +Lua', tshark_v))
have_nghttp2 = bool(re.search('with +nghttp2', tshark_v))
have_kerberos = bool(re.search('(with +MIT +Kerberos|with +Heimdal +Kerberos)', tshark_v))
gcry_m = re.search('with +Gcrypt +([0-9]+\.[0-9]+)', tshark_v)
have_libgcrypt16 = gcry_m and float(gcry_m.group(1)) >= 1.6
have_libgcrypt17 = gcry_m and float(gcry_m.group(1)) >= 1.7
def getDefaultCaptureInterface():
'''Choose a default capture interface for our platform. Currently Windows only.'''
@ -255,4 +256,3 @@ if sys.platform.startswith('win32') or sys.platform.startswith('darwin'):
# Initialize ourself.
getPingCommand()
setProgramPath(os.path.curdir)