def METHOD_NAME(build_info: List[Build], output_path: str) -> \
        List[Tuple[Build, subprocess.Popen]]:
    build_status: List[Tuple[Build, subprocess.Popen]] = []
    results: List[Tuple[str, int]] = []
    if not os.path.exists(output_path):
        os.makedirs(output_path)
    files = []
    for build in build_info:
        file_path = os.path.join(output_path, build.file_name())
        files.append(open(file_path, "w", encoding="utf-8"))
        build_id = subprocess.Popen(
                                build.command(),
                                shell=True,
                                stdout=files[-1],
                                stderr=subprocess.STDOUT)
        build_status.append((build, build_id))
        print('Test building [{}]'.format(build.tag()))
        print('[CMD] {}'.format(build.command()))
    for i, (build, build_id) in enumerate(build_status):
        build_id.communicate()
        results.append((build.tag(), build_id.returncode))
        files[i].close()
    return results