Re: [PATCH v2 00/32] kselftest harness and nolibc compatibility

From: Shuah Khan
Date: Thu Apr 10 2025 - 16:01:50 EST


On 4/10/25 09:19, Shuah Khan wrote:
On 4/7/25 00:52, Thomas Weißschuh wrote:
Nolibc is useful for selftests as the test programs can be very small,
and compiled with just a kernel crosscompiler, without userspace support.
Currently nolibc is only usable with kselftest.h, not the more
convenient to use kselftest_harness.h
This series provides this compatibility by adding new features to nolibc
and removing the usage of problematic features from the harness.

The first half of the series are changes to the harness, the second one
are for nolibc. Both parts are very independent and should go through
different trees.
The last patch is not meant to be applied and serves as test that
everything works together correctly.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@xxxxxxxxxxxxx>
---
Changes in v2:
- Rebase unto v6.15-rc1
- Rename internal nolibc symbols
- Handle edge case of waitpid(INT_MIN) == ESRCH
- Fix arm configurations for final testing patch
- Clean up global getopt.h variable declarations
- Add Acks from Willy
- Link to v1: https://lore.kernel.org/r/20250304-nolibc-kselftest-harness-v1-0-adca7cd231e2@xxxxxxxxxxxxx

Thank you. I am going to start reviewing the series. It could take
me a few days to get through all 32 patches. :)


---
Thomas Weißschuh (32):
       selftests: harness: Add harness selftest
       selftests: harness: Use C89 comment style
       selftests: harness: Ignore unused variant argument warning
       selftests: harness: Mark functions without prototypes static
       selftests: harness: Remove inline qualifier for wrappers
       selftests: harness: Remove dependency on libatomic
       selftests: harness: Implement test timeouts through pidfd
       selftests: harness: Don't set setup_completed for fixtureless tests
       selftests: harness: Always provide "self" and "variant"
       selftests: harness: Move teardown conditional into test metadata
       selftests: harness: Add teardown callback to test metadata
       selftests: harness: Stop using setjmp()/longjmp()
       selftests: harness: Guard includes on nolibc
       tools/nolibc: handle intmax_t/uintmax_t in printf
       tools/nolibc: use intmax definitions from compiler
       tools/nolibc: use pselect6_time64 if available
       tools/nolibc: use ppoll_time64 if available
       tools/nolibc: add tolower() and toupper()
       tools/nolibc: add _exit()
       tools/nolibc: add setpgrp()
       tools/nolibc: implement waitpid() in terms of waitid()
       Revert "selftests/nolibc: use waitid() over waitpid()"
       tools/nolibc: add dprintf() and vdprintf()
       tools/nolibc: add getopt()
       tools/nolibc: allow different write callbacks in printf
       tools/nolibc: allow limiting of printf destination size
       tools/nolibc: add snprintf() and friends
       selftests/nolibc: use snprintf() for printf tests
       selftests/nolibc: rename vfprintf test suite
       selftests/nolibc: add test for snprintf() truncation
       tools/nolibc: implement width padding in printf()
       HACK: selftests/nolibc: demonstrate usage of the kselftest harness

  tools/include/nolibc/Makefile                      |    1 +
  tools/include/nolibc/getopt.h                      |  101 ++
  tools/include/nolibc/nolibc.h                      |    1 +
  tools/include/nolibc/stdint.h                      |    4 +-
  tools/include/nolibc/stdio.h                       |  127 +-
  tools/include/nolibc/string.h                      |   17 +
  tools/include/nolibc/sys.h                         |  105 +-
  tools/testing/selftests/Makefile                   |    1 +
  tools/testing/selftests/kselftest/.gitignore       |    1 +
  tools/testing/selftests/kselftest/Makefile         |    6 +
  .../testing/selftests/kselftest/harness-selftest.c |  129 ++

One more thing. You are missing kselftest_harness maintainers.
Please send v3 with the changes I requested for test name and
directory, and make cleanup?

The fixes to existing kselftest_harness compile warnings and such
can go in an upcoming rc and the others can go into the next release.

  .../selftests/kselftest/harness-selftest.expected  |   62 +
  .../selftests/kselftest/harness-selftest.sh        |   14 +
  tools/testing/selftests/kselftest_harness.h        |  181 +-
  tools/testing/selftests/nolibc/Makefile            |   13 +-
  tools/testing/selftests/nolibc/harness-selftest.c  |    1 +
  tools/testing/selftests/nolibc/nolibc-test.c       | 1729 +-------------------
  tools/testing/selftests/nolibc/run-tests.sh        |    2 +-
  18 files changed, 635 insertions(+), 1860 deletions(-)
---
base-commit: 0af2f6be1b4281385b618cb86ad946eded089ac8
change-id: 20250130-nolibc-kselftest-harness-8b2c8cac43bf



thanks,
-- Shuah