From 32ee69c56241e4991269a8d114339878363ead61 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 28 Sep 2016 11:25:54 -0400 Subject: [PATCH] FindCxxTest: Do not run cxxtestgen through interpreter unless necessary On platforms that support shebang lines the `cxxtestgen` script should be able to execute without an explicit interpreter. Do this if possible so that the proper interpreter specified by the shebang line is honored. Ideally we shouldn't even need to find `python` in this case, but that will be a larger change better made by a dedicated module maintainer. Closes: #16331 --- Modules/FindCxxTest.cmake | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Modules/FindCxxTest.cmake b/Modules/FindCxxTest.cmake index 62489f978..9ba1ff3e9 100644 --- a/Modules/FindCxxTest.cmake +++ b/Modules/FindCxxTest.cmake @@ -58,7 +58,8 @@ # The test generator that is actually used (chosen using user preferences # and interpreters found in the system) # CXXTEST_TESTGEN_INTERPRETER (since CMake 2.8.3) -# The full path to the Perl or Python executable on the system +# The full path to the Perl or Python executable on the system, on +# platforms where the script cannot be executed using its shebang line. # # # @@ -210,7 +211,13 @@ if(PYTHONINTERP_FOUND OR PERL_FOUND) if(PYTHONINTERP_FOUND AND (CXXTEST_USE_PYTHON OR NOT PERL_FOUND OR NOT DEFINED CXXTEST_USE_PYTHON)) set(CXXTEST_TESTGEN_EXECUTABLE ${CXXTEST_PYTHON_TESTGEN_EXECUTABLE}) - set(CXXTEST_TESTGEN_INTERPRETER ${PYTHON_EXECUTABLE}) + execute_process(COMMAND ${CXXTEST_PYTHON_TESTGEN_EXECUTABLE} --version + OUTPUT_VARIABLE _CXXTEST_OUT ERROR_VARIABLE _CXXTEST_OUT RESULT_VARIABLE _CXXTEST_RESULT) + if(_CXXTEST_RESULT EQUAL 0) + set(CXXTEST_TESTGEN_INTERPRETER "") + else() + set(CXXTEST_TESTGEN_INTERPRETER ${PYTHON_EXECUTABLE}) + endif() FIND_PACKAGE_HANDLE_STANDARD_ARGS(CxxTest DEFAULT_MSG CXXTEST_INCLUDE_DIR CXXTEST_PYTHON_TESTGEN_EXECUTABLE)