From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Mon, 11 Mar 2024 11:31:05 -0700 Subject: [PATCH] unittests: Add a helper for copying source trees This is a useful thing to do when a test needs to modify the source tree, as it prevents races between tests. --- unittests/baseplatformtests.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/unittests/baseplatformtests.py b/unittests/baseplatformtests.py index 6125ed933209..93bfc8905b73 100644 --- a/unittests/baseplatformtests.py +++ b/unittests/baseplatformtests.py @@ -1,14 +1,17 @@ # SPDX-License-Identifier: Apache-2.0 # Copyright 2016-2021 The Meson development team +# Copyright © 2024 Intel Corporation +from __future__ import annotations from pathlib import PurePath from unittest import mock, TestCase, SkipTest import json import io import os import re import subprocess import sys +import shutil import tempfile import typing as T @@ -492,3 +495,23 @@ class BasePlatformTests(TestCase): def assertLength(self, val, length): assert len(val) == length, f'{val} is not length {length}' + + def copy_srcdir(self, srcdir: str) -> str: + """Copies a source tree and returns that copy. + + ensures that the copied tree is deleted after running. + + :param srcdir: The locaiton of the source tree to copy + :return: The location of the copy + """ + dest = tempfile.mkdtemp() + self.addCleanup(windows_proof_rmtree, dest) + + # shutil.copytree expects the destinatin directory to not exist, Once + # python 3.8 is required the `dirs_exist_ok` parameter negates the need + # for this + dest = os.path.join(dest, 'subdir') + + shutil.copytree(srcdir, dest) + + return dest