Re: git: 6f3445006aa0 - main - [tests] lib/libc/gen:assert_test: skip tests when NDEBUG set

From: Kyle Evans <kevans_at_FreeBSD.org>
Date: Tue, 22 Sep 2026 13:14:57 UTC
On 9/22/26 01:30, Enji Cooper wrote:
> The branch main has been updated by ngie:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=6f3445006aa05550f14af65b04276c3d25169941
> 
> commit 6f3445006aa05550f14af65b04276c3d25169941
> Author:     Enji Cooper <ngie@FreeBSD.org>
> AuthorDate: 2026-09-22 06:22:57 +0000
> Commit:     Enji Cooper <ngie@FreeBSD.org>
> CommitDate: 2026-09-22 06:30:30 +0000
> 
>      [tests] lib/libc/gen:assert_test: skip tests when NDEBUG set
>      
>      In the event that NDEBUG is specified in CFLAGS--which is most likely
>      triggered via `MK_ASSERT_DEBUG` == "no" -- all assert(3) statements are
>      optimized out by design. This breaks the assert(3) tests as they
>      specifically rely on assert(3) actually raising a `SIGABRT` instead of
>      quietly succeeding.
>      
>      Skip both tests if `NDEBUG` is set. There's no sense running the
>      `assert(true)` test if the result could instead be a false positive.
>      
>      MFC after:      2 weeks
> ---
>   contrib/netbsd-tests/lib/libc/gen/t_assert.c | 20 ++++++++++++++++++++
>   1 file changed, 20 insertions(+)
> 

Hi,

Why not just #undef NDEBUG right before we include <assert.h>?  Given that it's a test of the feature,
I think it makes plenty of sense to ignore the user-requested preference for just this one scenario
where we want to confirm that the feature isn't coincidentally broken.

Thanks,

Kyle Evans

> diff --git a/contrib/netbsd-tests/lib/libc/gen/t_assert.c b/contrib/netbsd-tests/lib/libc/gen/t_assert.c
> index ce73015142d6..b4023223b446 100644
> --- a/contrib/netbsd-tests/lib/libc/gen/t_assert.c
> +++ b/contrib/netbsd-tests/lib/libc/gen/t_assert.c
> @@ -43,6 +43,18 @@ __RCSID("$NetBSD: t_assert.c,v 1.3 2017/01/10 15:17:57 christos Exp $");
>   #include <string.h>
>   #include <unistd.h>
>   
> +#ifdef	__FreeBSD__
> +/* TODO: upstream this. */
> +static void
> +skip_if_ndebug_set(void)
> +{
> +
> +#ifdef	NDEBUG
> +	atf_tc_skip("Testcase requires code to be compiled without -DNDEBUG.");
> +#endif
> +}
> +#endif
> +
>   static void
>   disable_corefile(void)
>   {
> @@ -74,6 +86,10 @@ ATF_TC_BODY(assert_false, tc)
>   	pid_t pid;
>   	int sta;
>   
> +#ifdef	__FreeBSD__
> +	skip_if_ndebug_set();
> +#endif
> +
>   	pid = fork();
>   	ATF_REQUIRE(pid >= 0);
>   
> @@ -112,6 +128,10 @@ ATF_TC_BODY(assert_true, tc)
>   	pid_t pid;
>   	int sta;
>   
> +#ifdef	__FreeBSD__
> +	skip_if_ndebug_set();
> +#endif
> +
>   	pid = fork();
>   	ATF_REQUIRE(pid >= 0);
>