[libc++] Make sure we use POSIX paths in header_information.py
authorLouis Dionne <ldionne.2@gmail.com>
Thu, 1 Jun 2023 18:18:53 +0000 (11:18 -0700)
committerLouis Dionne <ldionne.2@gmail.com>
Fri, 2 Jun 2023 02:56:06 +0000 (19:56 -0700)
Otherwise, the various lists of headers have different content based
on whether they are run on Windows or other platforms, which makes it
really difficult to write .gen.py tests correctly.

Differential Revision: https://reviews.llvm.org/D151913

libcxx/utils/libcxx/test/header_information.py

index 4f0dd33..db4cf72 100644 (file)
@@ -130,28 +130,22 @@ def is_header(file):
         and file.name != "libcxx.imp"
     )
 
-monorepo_root = pathlib.Path(
-    os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))))
-)
-include = pathlib.Path(os.path.join(monorepo_root, "libcxx", "include"))
-test = pathlib.Path(os.path.join(monorepo_root, "libcxx", "test"))
-assert monorepo_root.exists()
+libcxx_root = pathlib.Path(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))))
+include = pathlib.Path(os.path.join(libcxx_root, "include"))
+test = pathlib.Path(os.path.join(libcxx_root, "test"))
+assert libcxx_root.exists()
 
 toplevel_headers = sorted(
-    str(p.relative_to(include)) for p in include.glob("[a-z]*") if is_header(p)
+    p.relative_to(include).as_posix() for p in include.glob("[a-z]*") if is_header(p)
 )
 experimental_headers = sorted(
-    str(p.relative_to(include))
-    for p in include.glob("experimental/[a-z]*")
-    if is_header(p)
+    p.relative_to(include).as_posix() for p in include.glob("experimental/[a-z]*") if is_header(p)
 )
 public_headers = toplevel_headers + experimental_headers
 private_headers = sorted(
-    str(p.relative_to(include))
-    for p in include.rglob("*")
-    if is_header(p)
-    and str(p.relative_to(include)).startswith("__")
-    and not p.name.startswith("pstl")
+    p.relative_to(include).as_posix() for p in include.rglob("*") if is_header(p)
+                                                                     and str(p.relative_to(include)).startswith("__")
+                                                                     and not p.name.startswith("pstl")
 )
 variables = {
     "toplevel_headers": toplevel_headers,