unittests, dub and libraries

Jonathan M Davis newsgroup.d at jmdavisprog.com
Wed Mar 28 03:07:23 UTC 2018


On Wednesday, March 28, 2018 02:16:59 Joe via Digitalmars-d-learn wrote:
> I'm trying to build a very simple library. For now it just has a
> single class, constructor, destructor and one method.  I added a
> unit test right after the method, declared the targetType to be
> "library" and a buildType of "unittest" (with options
> "unittests", "debugMode", "debugInfo"). When I run
>
>    dub run -b unittest
>
> it builds the library, but then says:
>
>    Target is a library. Skipping execution.
>
> If I compile with ldc2 -unittest the linker throws the error:
>
>    (.text+0x20): undefined reference to `main'
>
> If I add an empty main function to the source file, ldc2/gcc
> manage to create an executable that can be invoked manually and
> it runs through the unit test.
>
> Is this the best that can be done?

Run

    dub test

The problem is that an executable needs a main, and a library doesn't have
one, whereas when you're testing a library, you need an executable. So, a
main must be inserted - e.g. with the -main flag to dmd. Just building the
unittest build doesn't insert one. However, dub test _does_ deal with that
for you.

- Jonathan M Davis



More information about the Digitalmars-d-learn mailing list