diff --git a/CMakeLists.txt b/CMakeLists.txt index c3e60799..8c692dc6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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() diff --git a/example/run_test.py b/example/run_test.py index 802b851b..883d54e5 100755 --- a/example/run_test.py +++ b/example/run_test.py @@ -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 [--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)