aboutsummaryrefslogtreecommitdiffstats
path: root/tests/TestScripts/ConfigureTestsCommon.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/TestScripts/ConfigureTestsCommon.py')
-rw-r--r--tests/TestScripts/ConfigureTestsCommon.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/TestScripts/ConfigureTestsCommon.py b/tests/TestScripts/ConfigureTestsCommon.py
new file mode 100644
index 0000000..13b1d92
--- /dev/null
+++ b/tests/TestScripts/ConfigureTestsCommon.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python3
+
+# Copyright Catch2 Authors
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE.txt or copy at
+# https://www.boost.org/LICENSE_1_0.txt)
+
+# SPDX-License-Identifier: BSL-1.0
+
+from typing import List, Tuple
+
+import os
+import subprocess
+
+def configure_and_build(source_path: str, project_path: str, options: List[Tuple[str, str]]):
+ base_configure_cmd = ['cmake',
+ '-B{}'.format(project_path),
+ '-H{}'.format(source_path),
+ '-DCMAKE_BUILD_TYPE=Debug',
+ '-DCATCH_DEVELOPMENT_BUILD=ON']
+ for option, value in options:
+ base_configure_cmd.append('-D{}={}'.format(option, value))
+ try:
+ subprocess.run(base_configure_cmd,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.STDOUT,
+ check = True)
+ except subprocess.SubprocessError as ex:
+ print("Could not configure build to '{}' from '{}'".format(project_path, source_path))
+ print("Return code: {}".format(ex.returncode))
+ print("output: {}".format(ex.output))
+ raise
+ print('Configuring {} finished'.format(project_path))
+
+ build_cmd = ['cmake',
+ '--build', '{}'.format(project_path),
+ # For now we assume that we only need Debug config
+ '--config', 'Debug']
+ try:
+ subprocess.run(build_cmd,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.STDOUT,
+ check = True)
+ except subprocess.SubprocessError as ex:
+ print("Could not build project in '{}'".format(project_path))
+ print("Return code: {}".format(ex.returncode))
+ print("output: {}".format(ex.output))
+ raise
+ print('Building {} finished'.format(project_path))
+
+def run_and_return_output(base_path: str, binary_name: str, other_options: List[str]) -> Tuple[str, str]:
+ # For now we assume that Windows builds are done using MSBuild under
+ # Debug configuration. This means that we need to add "Debug" folder
+ # to the path when constructing it. On Linux, we don't add anything.
+ config_path = "Debug" if os.name == 'nt' else ""
+ full_path = os.path.join(base_path, config_path, binary_name)
+
+ base_cmd = [full_path]
+ base_cmd.extend(other_options)
+
+ try:
+ ret = subprocess.run(base_cmd,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.PIPE,
+ check = True,
+ universal_newlines = True)
+ except subprocess.SubprocessError as ex:
+ print('Could not run "{}"'.format(base_cmd))
+ print('Args: "{}"'.format(other_options))
+ print('Return code: {}'.format(ex.returncode))
+ print('stdout: {}'.format(ex.stdout))
+ print('stderr: {}'.format(ex.stdout))
+ raise
+
+ return (ret.stdout, ret.stderr)