On Tue, Sep 3, 2024 at 5:15 AM Patrick Steinhardt <ps@xxxxxx> wrote:> > Our unit testing framework is a homegrown solution. While it supports > most of our needs, it is likely that the volume of unit tests will grow > quite a bit in the future such that we can exercise low-level subsystems > directly. This surfaces several shortcomings that the current solution > has: > > - There is no way to run only one specific tests. While some of our > unit tests wire this up manually, others don't. In general, it > requires quite a bit of boilerplate to get this set up correctly. > > - Failures do not cause a test to stop execution directly. Instead, > the test author needs to return manually whenever an assertion > fails. This is rather verbose and is not done correctly in most of > our unit tests. > > - Wiring up a new testcase requires both implementing the test > function and calling it in the respective test suite's main > function, which is creating code duplication. > > We can of course fix all of these issues ourselves, but that feels > rather pointless when there are already so many unit testing frameworks > out there that have those features. > > We line out some requirements for any unit testing framework in Perhaps you meant s/line out/outline/ ? (Not worth a reroll.) > "Documentation/technical/unit-tests.txt". The "clar" unit testing > framework, which isn't listed in that table yet, ticks many of the > boxes: > > - It is licensed under ISC, which is compatible. > > - It is easily vendorable because it is rather tiny at around 1200 > lines of code. > > - It is easily hackable due to the same reason. > > - It has TAP support. > > - It has skippable tests. > > - It preprocesses test files in order to extract test functions, which > then get wired up automatically. > > While it's not perfect, the fact that clar originates from the libgit2 > project means that it should be rather easy for us to collaborate with > upstream to plug any gaps. > > Import the clar unit testing framework at commit 1516124 (Merge pull > request #97 from pks-t/pks-whitespace-fixes, 2024-08-15). The framework > will be wired up in subsequent commits. > > Signed-off-by: Patrick Steinhardt <ps@xxxxxx>