git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Phillip Wood <phillip.wood123@gmail.com>
To: Patrick Steinhardt <ps@pks.im>, git@vger.kernel.org
Cc: "René Scharfe" <l.s.r@web.de>,
	"Junio C Hamano" <gitster@pobox.com>,
	"Kyle Lippincott" <spectral@google.com>,
	"Phillip Wood" <phillip.wood@dunelm.org.uk>,
	"Josh Steadmon" <steadmon@google.com>,
	rsbecker@nexbridge.com,
	"Edward Thomson" <ethomson@edwardthomson.com>,
	"Johannes Schindelin" <Johannes.Schindelin@gmx.de>
Subject: Re: [PATCH v6 12/13] t/unit-tests: convert ctype tests to use clar
Date: Wed, 28 Aug 2024 14:18:02 +0100	[thread overview]
Message-ID: <2dbdb173-9e31-4dbc-a65a-dd952ec1c213@gmail.com> (raw)
In-Reply-To: <1ac2e48a7f2d41d60ff56890d8d87125f30c2f76.1724159966.git.ps@pks.im>

Hi Patrick

On 20/08/2024 15:02, Patrick Steinhardt wrote:
> Convert the ctype tests to use the new clar unit testing framework.
> Introduce a new function `cl_failf()` 

This is a nice addition which somewhat mitigates the lack of an 
equivalent to test_msg() that adds addition context messages to test 
failures.

> that allows us to print a
> formatted error message, which we can use to point out which of the
> characters was classified incorrectly. This results in output like this
> on failure:
> 
>      # start of suite 1: ctype
>      ok 1 - ctype::isspace
>      not ok 2 - ctype::isdigit
>          ---
>          reason: |
>            Test failed.

"Test failed." is not the reason for the test failure

>            0x61 is classified incorrectly
>          at:
>            file: 't/unit-tests/ctype.c'
>            line: 38
>            function: 'test_ctype__isdigit'
>          ---

This is rather verbose compared to the current framework

# check "isdigit(i) == !!memchr("123456789", i, len)" failed at 
t/unit-tests/t-ctype.c:36
#    left: 1
#   right: 0
#       i: 0x30
not ok 2 - isdigit works

The current tests also shows which characters are expected to return 
true and distinguishes between the two possible failure modes which are 
(a) misclassification and (b) returning a non-zero integer other than 
'1' as "true". The new test output does not allow the person running the 
test to distinguish between these two failure modes.

> diff --git a/t/unit-tests/unit-test.h b/t/unit-tests/unit-test.h
> index 66ec2387cc6..4c461defe16 100644
> --- a/t/unit-tests/unit-test.h
> +++ b/t/unit-tests/unit-test.h
> @@ -1,3 +1,10 @@
>   #include "git-compat-util.h"
>   #include "clar/clar.h"
>   #include "clar-decls.h"
> +#include "strbuf.h"
> +
> +#define cl_failf(fmt, ...) do { \
> +	char *desc = xstrfmt(fmt, __VA_ARGS__); \

In our current framework we avoid relying on the strbuf api and 
functions like xstrfmt() that use it as we want to be able to test 
strbuf.c with the framework. We'd be better with a macro wrapping a new 
function that uses a stack allocated buffer and p_snprintf() like 
clar__assert_equal(). That would allow us to upstream this change as well.

> +	clar__fail(__FILE__, __func__, __LINE__, "Test failed.", desc, 1); \
> +	free(desc); \

This is leaked on failure due to the use of longjmp.

Best Wishes

Phillip

> +} while (0)

  reply	other threads:[~2024-08-28 13:18 UTC|newest]

Thread overview: 172+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-31  9:04 [RFC PATCH 0/3] Introduce clar testing framework Patrick Steinhardt
2024-07-31  9:04 ` [RFC PATCH 1/3] t: import the clar unit " Patrick Steinhardt
2024-07-31 18:27   ` Josh Steadmon
2024-07-31 19:36     ` Junio C Hamano
2024-08-01  9:32       ` Patrick Steinhardt
2024-07-31 20:04     ` rsbecker
2024-08-01  9:31       ` Patrick Steinhardt
2024-08-01 12:15         ` rsbecker
2024-08-01 12:54           ` rsbecker
2024-08-01 13:37             ` Patrick Steinhardt
2024-08-01 13:47               ` rsbecker
2024-08-01 13:50                 ` Patrick Steinhardt
2024-08-01 13:53                   ` rsbecker
2024-08-01 13:55                     ` Patrick Steinhardt
2024-08-01 14:04                       ` rsbecker
2024-08-01 14:43                         ` Patrick Steinhardt
2024-08-01 16:31                           ` rsbecker
2024-08-01 17:06                           ` rsbecker
2024-08-01 17:43                           ` [RFC PATCH 1/3] t: import the clar unit testing framework (better one) rsbecker
2024-08-01 18:12                             ` René Scharfe
2024-08-01 18:33                               ` rsbecker
2024-07-31  9:04 ` [RFC PATCH 2/3] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-07-31 16:48   ` René Scharfe
2024-08-01  9:32     ` Patrick Steinhardt
2024-07-31 17:01   ` Junio C Hamano
2024-07-31 21:39     ` Junio C Hamano
2024-08-01  9:32       ` Patrick Steinhardt
2024-07-31  9:04 ` [RFC PATCH 3/3] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-07-31 15:51 ` [RFC PATCH 0/3] Introduce clar testing framework Junio C Hamano
2024-07-31 15:56   ` rsbecker
2024-07-31 16:52     ` Junio C Hamano
2024-07-31 20:25       ` rsbecker
2024-07-31 20:37         ` rsbecker
2024-08-01  9:31           ` Patrick Steinhardt
2024-08-01  9:31   ` Patrick Steinhardt
2024-07-31 18:33 ` Josh Steadmon
2024-08-01  9:31   ` Patrick Steinhardt
2024-08-06 14:14 ` [RFC PATCH v2 0/7] " Patrick Steinhardt
2024-08-06 14:14   ` [RFC PATCH v2 1/7] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-08-06 14:14   ` [RFC PATCH v2 2/7] t: import the clar unit testing framework Patrick Steinhardt
2024-08-06 22:18     ` Josh Steadmon
2024-08-07  5:52       ` Patrick Steinhardt
2024-08-06 14:14   ` [RFC PATCH v2 3/7] t/clar: fix whitespace errors Patrick Steinhardt
2024-08-06 14:14   ` [RFC PATCH v2 4/7] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-08-06 14:14   ` [RFC PATCH v2 5/7] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-08-06 14:14   ` [RFC PATCH v2 6/7] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-08-06 23:05     ` Josh Steadmon
2024-08-07  5:52       ` Patrick Steinhardt
2024-08-06 14:15   ` [RFC PATCH v2 7/7] t/unit-tests: convert ctype " Patrick Steinhardt
2024-08-08  5:38 ` [RFC PATCH v3 0/7] Introduce clar testing framework Patrick Steinhardt
2024-08-08  5:38   ` [RFC PATCH v3 1/7] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-08-08  5:38   ` [RFC PATCH v3 2/7] t: import the clar unit testing framework Patrick Steinhardt
2024-08-08  5:38   ` [RFC PATCH v3 3/7] t/clar: fix whitespace errors Patrick Steinhardt
2024-08-13 15:25     ` Junio C Hamano
2024-08-13 15:31       ` rsbecker
2024-08-13 18:43         ` Junio C Hamano
2024-08-13 19:14           ` rsbecker
2024-08-13 20:42       ` Junio C Hamano
2024-08-14  5:58         ` Patrick Steinhardt
2024-08-08  5:38   ` [RFC PATCH v3 4/7] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-08-08  5:38   ` [RFC PATCH v3 5/7] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-08-08  5:38   ` [RFC PATCH v3 6/7] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-08-08  5:38   ` [RFC PATCH v3 7/7] t/unit-tests: convert ctype " Patrick Steinhardt
2024-08-12 18:10   ` [RFC PATCH v3 0/7] Introduce clar testing framework Josh Steadmon
2024-08-12 18:13     ` rsbecker
2024-08-12 20:50     ` Junio C Hamano
2024-08-12 20:58       ` rsbecker
2024-08-12 22:13         ` Junio C Hamano
2024-08-13  7:23           ` Patrick Steinhardt
2024-08-15  9:47 ` [PATCH v4 " Patrick Steinhardt
2024-08-15  9:47   ` [PATCH v4 1/7] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-08-15  9:47   ` [PATCH v4 2/7] t: import the clar unit testing framework Patrick Steinhardt
2024-08-15  9:47   ` [PATCH v4 3/7] t/clar: fix whitespace errors Patrick Steinhardt
2024-08-15  9:47   ` [PATCH v4 4/7] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-08-15  9:47   ` [PATCH v4 5/7] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-08-15  9:47   ` [PATCH v4 6/7] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-08-15  9:47   ` [PATCH v4 7/7] t/unit-tests: convert ctype " Patrick Steinhardt
2024-08-15 16:21   ` [PATCH v4 0/7] Introduce clar testing framework Junio C Hamano
2024-08-16  5:10     ` Patrick Steinhardt
2024-08-16  7:04 ` [PATCH v5 0/9] " Patrick Steinhardt
2024-08-16  7:04   ` [PATCH v5 1/9] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-08-16  7:04   ` [PATCH v5 2/9] t: import the clar unit testing framework Patrick Steinhardt
2024-08-16 13:37     ` Phillip Wood
2024-08-23 12:16       ` Johannes Schindelin
2024-08-28 13:20         ` Phillip Wood
2024-08-19 21:21     ` Junio C Hamano
2024-08-19 21:50       ` rsbecker
2024-08-19 22:13         ` Junio C Hamano
2024-08-19 22:38           ` rsbecker
2024-08-20 12:59       ` Patrick Steinhardt
2024-08-16  7:04   ` [PATCH v5 3/9] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-08-16  7:04   ` [PATCH v5 4/9] Makefile: fix sparse dependency on GENERATED_H Patrick Steinhardt
2024-08-16  7:04   ` [PATCH v5 5/9] Makefile: make hdr-check depend on generated headers Patrick Steinhardt
2024-08-16  7:04   ` [PATCH v5 6/9] Makefile: do not use sparse on third-party sources Patrick Steinhardt
2024-08-16  7:04   ` [PATCH v5 7/9] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-08-16  7:04   ` [PATCH v5 8/9] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-08-16 13:38     ` Phillip Wood
2024-08-16 16:11       ` Junio C Hamano
2024-08-20 12:59         ` Patrick Steinhardt
2024-08-16  7:05   ` [PATCH v5 9/9] t/unit-tests: convert ctype " Patrick Steinhardt
2024-08-16 13:38     ` Phillip Wood
2024-08-20 12:59       ` Patrick Steinhardt
2024-08-18  6:39     ` Junio C Hamano
2024-08-16 13:37   ` [PATCH v5 0/9] Introduce clar testing framework Phillip Wood
2024-08-20 12:59     ` Patrick Steinhardt
2024-08-28 15:15       ` phillip.wood123
2024-08-20 14:02 ` [PATCH v6 00/13] " Patrick Steinhardt
2024-08-20 14:02   ` [PATCH v6 01/13] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-08-20 14:02   ` [PATCH v6 02/13] t: import the clar unit testing framework Patrick Steinhardt
2024-08-28 13:16     ` Phillip Wood
2024-09-03  7:45       ` Patrick Steinhardt
2024-08-20 14:02   ` [PATCH v6 03/13] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-08-20 14:02   ` [PATCH v6 04/13] clar: avoid compile error with mingw-w64 Patrick Steinhardt
2024-08-20 14:02   ` [PATCH v6 05/13] clar(win32): avoid compile error due to unused `fs_copy()` Patrick Steinhardt
2024-08-20 14:02   ` [PATCH v6 06/13] clar: stop including `shellapi.h` unnecessarily Patrick Steinhardt
2024-08-20 14:02   ` [PATCH v6 07/13] Makefile: fix sparse dependency on GENERATED_H Patrick Steinhardt
2024-08-20 14:02   ` [PATCH v6 08/13] Makefile: make hdr-check depend on generated headers Patrick Steinhardt
2024-08-20 14:02   ` [PATCH v6 09/13] Makefile: do not use sparse on third-party sources Patrick Steinhardt
2024-08-20 14:02   ` [PATCH v6 10/13] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-08-20 14:02   ` [PATCH v6 11/13] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-08-28 13:17     ` Phillip Wood
2024-09-03  7:45       ` Patrick Steinhardt
2024-09-03  9:48         ` phillip.wood123
2024-09-04  6:37           ` Patrick Steinhardt
2024-09-04  9:31             ` phillip.wood123
2024-08-20 14:02   ` [PATCH v6 12/13] t/unit-tests: convert ctype " Patrick Steinhardt
2024-08-28 13:18     ` Phillip Wood [this message]
2024-09-03  7:45       ` Patrick Steinhardt
2024-08-20 14:02   ` [PATCH v6 13/13] clar: add CMake support Patrick Steinhardt
2024-08-28 13:18   ` [PATCH v6 00/13] Introduce clar testing framework Phillip Wood
2024-08-28 14:03     ` Patrick Steinhardt
2024-08-28 14:58       ` phillip.wood123
2024-09-03  9:14 ` [PATCH v7 00/14] " Patrick Steinhardt
2024-09-03  9:14   ` [PATCH v7 01/14] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-09-03  9:14   ` [PATCH v7 02/14] t: import the clar unit testing framework Patrick Steinhardt
2024-09-03  9:47     ` Eric Sunshine
2024-09-04  6:38       ` Patrick Steinhardt
2024-09-03  9:14   ` [PATCH v7 03/14] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-09-03  9:14   ` [PATCH v7 04/14] clar: avoid compile error with mingw-w64 Patrick Steinhardt
2024-09-03  9:14   ` [PATCH v7 05/14] clar(win32): avoid compile error due to unused `fs_copy()` Patrick Steinhardt
2024-09-03  9:14   ` [PATCH v7 06/14] clar: stop including `shellapi.h` unnecessarily Patrick Steinhardt
2024-09-03  9:14   ` [PATCH v7 07/14] Makefile: fix sparse dependency on GENERATED_H Patrick Steinhardt
2024-09-03  9:14   ` [PATCH v7 08/14] Makefile: make hdr-check depend on generated headers Patrick Steinhardt
2024-09-03  9:15   ` [PATCH v7 09/14] Makefile: do not use sparse on third-party sources Patrick Steinhardt
2024-09-03  9:15   ` [PATCH v7 10/14] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-09-03  9:15   ` [PATCH v7 11/14] t/unit-tests: implement test driver Patrick Steinhardt
2024-09-04 13:35     ` Phillip Wood
2024-09-04 14:12       ` Patrick Steinhardt
2024-09-04 14:35         ` phillip.wood123
2024-09-03  9:15   ` [PATCH v7 12/14] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-09-03  9:15   ` [PATCH v7 13/14] t/unit-tests: convert ctype " Patrick Steinhardt
2024-09-03  9:15   ` [PATCH v7 14/14] clar: add CMake support Patrick Steinhardt
2024-09-04 13:35   ` [PATCH v7 00/14] Introduce clar testing framework Phillip Wood
2024-09-04 14:12     ` Patrick Steinhardt
2024-09-04 14:16 ` [PATCH v8 " Patrick Steinhardt
2024-09-04 14:16   ` [PATCH v8 01/14] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-09-04 14:16   ` [PATCH v8 02/14] t: import the clar unit testing framework Patrick Steinhardt
2024-09-04 14:16   ` [PATCH v8 03/14] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-09-04 14:16   ` [PATCH v8 04/14] clar: avoid compile error with mingw-w64 Patrick Steinhardt
2024-09-04 14:16   ` [PATCH v8 05/14] clar(win32): avoid compile error due to unused `fs_copy()` Patrick Steinhardt
2024-09-04 14:16   ` [PATCH v8 06/14] clar: stop including `shellapi.h` unnecessarily Patrick Steinhardt
2024-09-04 14:17   ` [PATCH v8 07/14] Makefile: fix sparse dependency on GENERATED_H Patrick Steinhardt
2024-09-04 14:17   ` [PATCH v8 08/14] Makefile: make hdr-check depend on generated headers Patrick Steinhardt
2024-09-04 14:17   ` [PATCH v8 09/14] Makefile: do not use sparse on third-party sources Patrick Steinhardt
2024-09-04 14:17   ` [PATCH v8 10/14] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-09-09 18:17     ` Junio C Hamano
2024-09-10  6:20       ` Patrick Steinhardt
2024-09-04 14:17   ` [PATCH v8 11/14] t/unit-tests: implement test driver Patrick Steinhardt
2024-09-04 14:17   ` [PATCH v8 12/14] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-09-04 14:17   ` [PATCH v8 13/14] t/unit-tests: convert ctype " Patrick Steinhardt
2024-09-04 14:17   ` [PATCH v8 14/14] clar: add CMake support Patrick Steinhardt
2024-09-04 14:32   ` [PATCH v8 00/14] Introduce clar testing framework phillip.wood123

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2dbdb173-9e31-4dbc-a65a-dd952ec1c213@gmail.com \
    --to=phillip.wood123@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=ethomson@edwardthomson.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=l.s.r@web.de \
    --cc=phillip.wood@dunelm.org.uk \
    --cc=ps@pks.im \
    --cc=rsbecker@nexbridge.com \
    --cc=spectral@google.com \
    --cc=steadmon@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).