digitalmars.D.learn - unittests, dub and libraries
- Joe (14/14) Mar 27 2018 I'm trying to build a very simple library. For now it just has a
- Jonathan M Davis (9/23) Mar 27 2018 Run
- Joe (3/10) Mar 27 2018 Thanks.
- Jesse Phillips (5/13) Mar 28 2018 And a note on the reverse, if you have an executable project $
- Jesse Phillips (3/6) Mar 28 2018 For reference:
- Jonathan M Davis (5/21) Mar 28 2018 Yeah. That's really annoying behavior. I keep forgetting that it does th...
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?
Mar 27 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
Mar 27 2018
On Wednesday, 28 March 2018 at 03:07:23 UTC, Jonathan M Davis wrote: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.Thanks.
Mar 27 2018
On Wednesday, 28 March 2018 at 03:07:23 UTC, Jonathan M Davis wrote: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 DavisAnd a note on the reverse, if you have an executable project $ dub test won't build in the app.d file since it contains main and dub test wants to avoid running your main function.
Mar 28 2018
On Wednesday, 28 March 2018 at 21:29:22 UTC, Jesse Phillips wrote:And a note on the reverse, if you have an executable project $ dub test won't build in the app.d file since it contains main and dub test wants to avoid running your main function.For reference: https://github.com/dlang/dub/issues/1118
Mar 28 2018
On Wednesday, March 28, 2018 21:29:22 Jesse Phillips via Digitalmars-d-learn wrote:On Wednesday, 28 March 2018 at 03:07:23 UTC, Jonathan M Davis wrote:Yeah. That's really annoying behavior. I keep forgetting that it does that until I realize that I have tests that should be failing that aren't. - Jonathan M DavisRun 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 DavisAnd a note on the reverse, if you have an executable project $ dub test won't build in the app.d file since it contains main and dub test wants to avoid running your main function.
Mar 28 2018