[libc-commits] [PATCH] D72353: [libc] Add a convenience CMake rule to add testsuites.

Siva Chandra via Phabricator via libc-commits libc-commits at lists.llvm.org
Tue Jan 7 20:35:28 PST 2020


sivachandra marked an inline comment as done.
sivachandra added inline comments.


================
Comment at: libc/test/src/errno/CMakeLists.txt:1
-add_custom_target(libc_errno_unittests)
-add_dependencies(check_libc libc_errno_unittests)
+add_libc_testsuite(libc_errno_unittests)
 
----------------
abrachet wrote:
> sivachandra wrote:
> > abrachet wrote:
> > > It seems like the rest of LLVM would call this LibcErrnoUnittests, but I don't care too much for the formatting just thought I would bring it up.
> > I picked this naming style from libcxx. It has targets with names `cxx_abi_headers`, `cxx_external_threads`,  etc., and test targets like `libcxx_test_objects`.
> > 
> > TBF, I do not like either of these naming styles. I prefer target names which reflect the source layout. For example, one should not need to list a suites like this at all. Each directory in the `test` subtree should get its own suite automatically. Its fully qualified name should be something like `libc.test.src.errno.all`. Individual targets, like the `errno_test` listed below, will automatically be part of the suite for the directory and have a fully qualified name like `libc.test.src.errno.errno_test`.
> > 
> > It is possible to implement such a system in CMake, and a project where it was implemented successfully is this: https://github.com/google/pytype 
> What do you think about something like I wrote up in D72383? It's pretty awkward for OS/architecture specific tests and doesn't handle it as well as here.
> 
> For reference, it changes the names to create these targets:
> ```
> abrachet at Alexs-MacBook-Pro ~/D/l/build> ninja help | grep "libc\."
> libc.test.config.linux.x86_64.all: phony
> libc.test.config.linux.x86_64.syscall_test: phony
> libc.test.src.errno.all: phony
> libc.test.src.errno.errno_test: phony
> libc.test.src.string.all: phony
> libc.test.src.string.strcat_test: phony
> libc.test.src.string.strcpy_test: phony
> libc.test.src.sys.mman.all: phony
> libc.test.src.sys.mman.mmap_test: phony
> ```
I think it captures the overall idea. Few details can be chiseled finer may be.

About the awkwardness, it is probably subjective. But, I tend to go with conventions which are explicit and deducible. For example, to run mmap test, I just do:

```
$> ninja libc.test.src.sys.mman.mmap_test
```

Likewise, to run all linux x86_64 tests we have very explicit target and I don't need to refer to the CMake files to see what target we need to run/build:

```
$> ninja libc.test.config.linux.x86_64.all
```


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D72353/new/

https://reviews.llvm.org/D72353





More information about the libc-commits mailing list