[libcxx-commits] [PATCH] D98702: [libcxx] [test] Avoid littering the temp dir with empty directories

Martin Storsjö via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Tue Mar 16 06:07:03 PDT 2021

mstorsjo created this revision.
mstorsjo requested review of this revision.
Herald added a project: libc++.
Herald added a reviewer: libc++.

When the filesystem tests want to create a directory, a temporary
path is created as <temp>/<cwd filename>/static_env.0. The directory
is created, and when done, this particular directory is removed.
However, the directory <temp>/<cwd filename> is left around, empty.

(When running tests locally, the <cwd filename> bit is derived from
the individual test, like "copy_symlink.pass.cpp.dir". When doing
remote testing, the cwd name is a unique temporary name like

Instead name these temporary directories as
<temp>/<cwd filename>-static_env.0. That way, when they are removed,
no extra intermediate directory is left behind.

Prior to e0d01294bc124211a8ffb55e69162eb34a242680 <https://reviews.llvm.org/rGe0d01294bc124211a8ffb55e69162eb34a242680>, the temporary
directories were created in only one level, leaving no empty
directories behind.

  rG LLVM Github Monorepo



Index: libcxx/test/support/filesystem_test_helper.h
--- libcxx/test/support/filesystem_test_helper.h
+++ libcxx/test/support/filesystem_test_helper.h
@@ -299,11 +299,11 @@
     static inline fs::path available_cwd_path() {
         fs::path const cwd = utils::getcwd();
         fs::path const tmp = fs::temp_directory_path();
-        fs::path const base = tmp / cwd.filename();
+        std::string base = cwd.filename().string();
         int i = 0;
-        fs::path p = base / ("static_env." + std::to_string(i));
+        fs::path p = tmp / (base + "-static_env." + std::to_string(i));
         while (utils::exists(p.string())) {
-            p = fs::path(base) / ("static_env." + std::to_string(++i));
+            p = tmp / (base + "-static_env." + std::to_string(++i));
         return p;

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D98702.330959.patch
Type: text/x-patch
Size: 885 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20210316/9122325b/attachment.bin>

More information about the libcxx-commits mailing list