Tests: move "make test" on macOS and Linux to Python script
authorBrecht Van Lommel <brechtvanlommel@gmail.com>
Fri, 30 Aug 2019 12:20:29 +0000 (14:20 +0200)
committerBrecht Van Lommel <brechtvanlommel@gmail.com>
Fri, 30 Aug 2019 15:57:18 +0000 (17:57 +0200)
GNUmakefile
build_files/utils/make_test.py [new file with mode: 0755]
build_files/utils/make_update.py
build_files/utils/make_utils.py [new file with mode: 0755]

index 92d1efca21d0d76f0b9a806fdb118a95330b43bf..ef1b6b711d2b69f8caa229267b65cee155568df5 100644 (file)
@@ -375,7 +375,7 @@ package_archive: .FORCE
 # Tests
 #
 test: .FORCE
-       cd $(BUILD_DIR) ; ctest . --output-on-failure
+       python3 ./build_files/utils/make_test.py "$(BUILD_DIR)"
 
 # run pep8 check check on scripts we distribute.
 test_pep8: .FORCE
diff --git a/build_files/utils/make_test.py b/build_files/utils/make_test.py
new file mode 100755 (executable)
index 0000000..1522631
--- /dev/null
@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+#
+# "make test" for all platforms, running automated tests.
+
+import argparse
+import os
+import shutil
+import sys
+
+from make_utils import call
+
+# Parse arguments
+
+def parse_arguments():
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--ctest-command", default="ctest")
+    parser.add_argument("build_directory")
+    return parser.parse_args()
+
+args = parse_arguments()
+ctest_command = args.ctest_command
+build_dir = args.build_directory
+
+if shutil.which(ctest_command) is None:
+    sys.stderr.write("ctest not found, can't run tests\n")
+    sys.exit(1)
+
+# Run tests
+os.chdir(build_dir)
+call([ctest_command, ".", "--output-on-failure"])
index 5d82075d562d59ed909380eb0027ec21ce4d5244..a019e17e0a8df8231f58035193ff8d56a7ec3cd0 100755 (executable)
@@ -13,6 +13,8 @@ import shutil
 import subprocess
 import sys
 
+from make_utils import call
+
 # Parse arguments
 
 def parse_arguments():
@@ -35,19 +37,6 @@ if shutil.which(svn_command) is None:
     sys.stderr.write("svn not found, can't update libraries\n")
     sys.exit(1)
 
-# Utility functions
-
-def call(cmd):
-    print(" ".join(cmd))
-
-    # Flush to ensure correct order output on Windows.
-    sys.stdout.flush()
-    sys.stderr.flush()
-
-    retcode = subprocess.call(cmd)
-    if retcode != 0:
-      sys.exit(retcode)
-
 def print_stage(text):
     print("")
     print(text)
diff --git a/build_files/utils/make_utils.py b/build_files/utils/make_utils.py
new file mode 100755 (executable)
index 0000000..9853687
--- /dev/null
@@ -0,0 +1,17 @@
+#!/usr/bin/env python3
+#
+# Utility functions for make update and make tests.
+
+import subprocess
+import sys
+
+def call(cmd):
+    print(" ".join(cmd))
+
+    # Flush to ensure correct order output on Windows.
+    sys.stdout.flush()
+    sys.stderr.flush()
+
+    retcode = subprocess.call(cmd)
+    if retcode != 0:
+      sys.exit(retcode)