[libcxx] [test] Avoid race conditions between tests regarding temp directories
Prior to e0d01294, all tests used a random directory name, but now it is deterministic, based on the test name. This change was done under the assumption that the filename portion of the cwd is unique across tests that use the filesystem test temporary directories. When running tests locally, the cwd of the test is something like "<build-dir>/test/<test path>/Output/copy_assign.pass.cpp.dir", and the filename portion, "copy_assign.pass.cpp.dir", is used as base for the temp directory names. The change noted that there's a risk for race conditions if multiple threads within one test try to create temp directories in parallel, but that doesn't really happen in practice. However, if running tests with a large number of parallel workers, multiple tests with the same filename portion, e.g. "copy_assign.pass.cpp.dir", can run in parallel, leading to race conditions across processes. Therefore, add a hash of the full cwd to distinguish such cases from each other. Secondly, don't use two separate levels of temporary directories (<base>/static_env.0). When cleaning up, only the individual directory is removed, leaving the empty intermediate directory behind littering the temp directory. Differential Revision: https://reviews.llvm.org/D98703
Loading
Please register or sign in to comment