| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | 
							- #!/usr/bin/env python3
 
- #              Copyright Catch2 Authors
 
- # Distributed under the Boost Software License, Version 1.0.
 
- #   (See accompanying file LICENSE_1_0.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)
 
 
  |