use relaxed testing scheme for MSVC and the intel compiler (they miss some RV optimizations)

This commit is contained in:
Wenzel Jakob 2016-02-20 20:53:10 +01:00
parent d6e4cef65f
commit 80c2451ac5
2 changed files with 14 additions and 1 deletions

View File

@ -202,7 +202,12 @@ elseif (UNIX)
endif()
enable_testing()
set(RUN_TEST ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/example/run_test.py)
if (MSVC OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
set(RUN_TEST ${RUN_TEST} --relaxed)
endif()
foreach(i RANGE ${PYBIND11_FIRSTEXAMPLE} ${PYBIND11_LASTEXAMPLE})
add_test(NAME example${i} COMMAND ${RUN_TEST} example${i})
endforeach()

View File

@ -8,6 +8,7 @@ remove_long_marker = re.compile(r'([0-9])L')
remove_hex = re.compile(r'0x[0-9a-fA-F]+')
shorten_floats = re.compile(r'([1-9][0-9]*\.[0-9]{4})[0-9]*')
relaxed = False
def sanitize(lines):
lines = lines.split('\n')
@ -26,7 +27,7 @@ def sanitize(lines):
line = line.replace('example.EMode', 'EMode')
line = line.replace('method of builtins.PyCapsule instance', '')
line = line.strip()
if sys.platform == 'win32':
if relaxed:
lower = line.lower()
# The precise pattern of allocations and deallocations is dependent on the compiler
# and optimization level, so we unfortunately can't reliably check it in this kind of test case
@ -45,6 +46,13 @@ path = os.path.dirname(__file__)
if path != '':
os.chdir(path)
if len(sys.argv) < 2:
print("Syntax: %s <example> [--relaxed]" % sys.argv[0])
exit(0)
if len(sys.argv) == 3 and sys.argv[2] == '--relaxed':
relaxed = True
name = sys.argv[1]
output_bytes = subprocess.check_output([sys.executable, name + ".py"],
stderr=subprocess.STDOUT)