Use Shebang in cxxtestgen when appropriate (#3458)
authorAlex Ozdemir <aozdemir@hmc.edu>
Thu, 14 Nov 2019 18:39:05 +0000 (10:39 -0800)
committerAndres Noetzli <andres.noetzli@gmail.com>
Thu, 14 Nov 2019 18:39:05 +0000 (10:39 -0800)
CxxTest's generator has one of three names, depending on the CxxTest
version:
* `cxxtestgen.py`, a python program
* `cxxtestgen`, some kind of program with a shebang
* `cxxtestgen.pl`, a perl program

We were mistakenly assuming that the `cxxtestgen` form was always a
python program.

Now, if we find that form on the system, we assume that it is has a
shebang, and is executable.

cmake/FindCxxTest.cmake
test/unit/CMakeLists.txt

index cd7aed70d5f96d3ec27c73ec82ab24a40796a4fe..2348edb98f0e232098349b9288ed4222fc0cdf31 100644 (file)
@@ -20,11 +20,16 @@ find_program(CxxTest_PERL_TESTGEN_EXECUTABLE cxxtestgen.pl
 
 if(NOT CxxTest_HOME)
   find_path(CxxTest_INCLUDE_DIR cxxtest/TestSuite.h)
-  find_program(CxxTest_PYTHON_TESTGEN_EXECUTABLE NAMES cxxtestgen cxxtestgen.py)
+  find_program(CxxTest_PYTHON_TESTGEN_EXECUTABLE NAMES cxxtestgen.py)
+  find_program(CxxTest_SHEBANG_TESTGEN_EXECUTABLE NAMES cxxtestgen)
   find_program(CxxTest_PERL_TESTGEN_EXECUTABLE cxxtestgen.pl)
 endif()
 
-if(PYTHONINTERP_FOUND AND CxxTest_PYTHON_TESTGEN_EXECUTABLE)
+
+if(CxxTest_SHEBANG_TESTGEN_EXECUTABLE)
+  set(CxxTest_USE_SHEBANG ON)
+  set(CxxTest_TESTGEN_EXECUTABLE ${CxxTest_SHEBANG_TESTGEN_EXECUTABLE})
+elseif(PYTHONINTERP_FOUND AND CxxTest_PYTHON_TESTGEN_EXECUTABLE)
   set(CxxTest_TESTGEN_EXECUTABLE ${CxxTest_PYTHON_TESTGEN_EXECUTABLE})
   set(CxxTest_TESTGEN_INTERPRETER ${PYTHON_EXECUTABLE})
 elseif(PERL_FOUND AND CxxTest_PERL_TESTGEN_EXECUTABLE)
index 83b0ec0dbfe00983c1f5f930b691e4e3d233001d..0c82bcc1a8154c97faf9a7044923e36ccb0b973a 100644 (file)
@@ -32,14 +32,24 @@ macro(cvc4_add_unit_test is_white name output_dir)
   # generate the test sources
   set(test_src ${CMAKE_CURRENT_BINARY_DIR}/${name}.cpp)
   set(test_header ${CMAKE_CURRENT_LIST_DIR}/${name}.h)
-  add_custom_command(
-      OUTPUT  ${test_src}
-      DEPENDS ${test_header}
-      COMMAND
-        ${CxxTest_TESTGEN_INTERPRETER}
+  if (CxxTest_USE_SHEBANG)
+    add_custom_command(
+        OUTPUT  ${test_src}
+        DEPENDS ${test_header}
+        COMMAND
           ${CxxTest_TESTGEN_EXECUTABLE}
-          ${CxxTest_TESTGEN_ARGS} -o ${test_src} ${test_header}
-  )
+            ${CxxTest_TESTGEN_ARGS} -o ${test_src} ${test_header}
+    )
+  else()
+    add_custom_command(
+        OUTPUT  ${test_src}
+        DEPENDS ${test_header}
+        COMMAND
+          ${CxxTest_TESTGEN_INTERPRETER}
+            ${CxxTest_TESTGEN_EXECUTABLE}
+            ${CxxTest_TESTGEN_ARGS} -o ${test_src} ${test_header}
+    )
+  endif()
   set_source_files_properties(${test_src} PROPERTIES GENERATED true)
   # The build target is created without the path prefix (not supported),
   # e.g., for '<output_dir>/myunittest.h'