cmark

My personal build of CMark ✏️

Commit
0e7d3a2e6ef6430e2de7eafc483b0ffe982d970d
Parent
2a59afee08f9abdb647e4d7c9a01b659b08b31f4
Author
John MacFarlane <jgm@berkeley.edu>
Date

Run the spec tests only if python3 is found.

Otherwise skip them, running a dummy test skipping_spec_tests to signal that they are being skipped.

To require the spec tests, do `cmake .. -DSPEC_TESTS=1`.

Closes #278.

Although I still have some qualms about tests that can appear to pass while being incomplete, I see the advantages of allowing the package to build without python3.

Diffstat

1 file changed, 37 insertions, 20 deletions

Status File Name N° Changes Insertions Deletions
Modified test/CMakeLists.txt 57 37 20
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
@@ -1,22 +1,13 @@
 # To get verbose output: cmake --build build --target "test" -- ARGS='-V'
 
-find_package(PythonInterp 3 REQUIRED)
-set(PYTHON ${PYTHON_EXECUTABLE})
+# By default, we run the spec tests only if python3 is available.
+# To require the spec tests, compile with -DSPEC_TESTS=1
 
-add_test(html_normalization
-  ${PYTHON} "-m" "doctest"
-  "${CMAKE_CURRENT_SOURCE_DIR}/normalize.py"
-)
-
-add_test(spectest_library
-   ${PYTHON} "${CMAKE_CURRENT_SOURCE_DIR}/spec_tests.py" "--no-normalize" "--spec"
-   "${CMAKE_SOURCE_DIR}/spec.txt" "--library-dir" "${CMAKE_BINARY_DIR}/src"
-)
-
-add_test(pathological_tests_library
-   ${PYTHON} "${CMAKE_CURRENT_SOURCE_DIR}/pathological_tests.py"
-   "--library-dir" "${CMAKE_BINARY_DIR}/src"
-)
+if (SPEC_TESTS)
+  find_package(PythonInterp 3 REQUIRED)
+else(SPEC_TESTS)
+  find_package(PythonInterp 3)
+endif(SPEC_TESTS)
 
 add_test(NAME api_test COMMAND api_test)
 
@@ -24,9 +15,35 @@ if (WIN32)
   file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR}/src WIN_DLL_DIR)
   set_tests_properties(api_test PROPERTIES
     ENVIRONMENT "PATH=${WIN_DLL_DIR};$ENV{PATH}"
-  )
+    )
 endif(WIN32)
 
-add_test(spectest_executable
-   ${PYTHON} "${CMAKE_CURRENT_SOURCE_DIR}/spec_tests.py" "--no-normalize" "--spec" "${CMAKE_SOURCE_DIR}/spec.txt" "--program" "${CMAKE_BINARY_DIR}/src/cmark"
-)
+IF (PYTHONINTERP_FOUND)
+
+  add_test(html_normalization
+    ${PYTHON_EXECUTABLE} "-m" "doctest"
+    "${CMAKE_CURRENT_SOURCE_DIR}/normalize.py"
+    )
+
+  add_test(spectest_library
+    ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/spec_tests.py" "--no-normalize" "--spec"
+    "${CMAKE_SOURCE_DIR}/spec.txt" "--library-dir" "${CMAKE_BINARY_DIR}/src"
+    )
+
+  add_test(pathological_tests_library
+    ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/pathological_tests.py"
+    "--library-dir" "${CMAKE_BINARY_DIR}/src"
+    )
+
+  add_test(spectest_executable
+    ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/spec_tests.py" "--no-normalize" "--spec" "${CMAKE_SOURCE_DIR}/spec.txt" "--program" "${CMAKE_BINARY_DIR}/src/cmark"
+    )
+
+ELSE(PYTHONINTERP_FOUND)
+
+  message("\n*** A python 3 interpreter is required to run the spec tests.\n")
+  add_test(skipping_spectests
+    echo "Skipping spec tests, because no python 3 interpreter is available.")
+
+ENDIF(PYTHONINTERP_FOUND)
+