Thread overview
cant run unittests
Jul 13, 2016
dom
Jul 14, 2016
ethgeh
Jul 14, 2016
dom
Jul 16, 2016
Seb
Dec 08, 2018
Andrew Pennebaker
Dec 09, 2018
Andre Pany
July 13, 2016
how can i run my unittests for a dynamic library? some weird conflict is reported between main functions, my project doesnt contain any main function.

i really love D, but problems like this make me wanna switch :/

using:
dub test --arch=x86

lucy ~master: building configuration "__test__library__"...
../../tmp/dub_test_root-0ce1acbf-ecb9-4abf-8199-e7a23bd783dc.d(21,12): Error: function D main conflicts with static import dub_test_root.main at ../../tmp/dub_test_root-0ce1acbf-ecb9-4abf-8199-e7a23bd783dc.d(11,15)
dmd failed with exit code 1.

dub.json
{
	"name": "lucy",
	"description": "A minimal D application.",
	"copyright": "Copyright © 2015, dom",
	"authors": ["dom"],
	"targetType": "dynamicLibrary",
	"dflags": ["-fPIC"],
	"dependencies": {
		"msgpack-d": "~>1.0.0-beta.2",
		"poodinis": "~>6.3.0"
	}
}
July 14, 2016
On Wednesday, 13 July 2016 at 19:41:53 UTC, dom wrote:
> how can i run my unittests for a dynamic library? some weird conflict is reported between main functions, my project doesnt contain any main function.
>
> [...]

try to put this before the main of your application:

  "version(unittest){} else"

it looks like the default unittest config implies the switch "-main".
July 14, 2016
On Thursday, 14 July 2016 at 00:33:50 UTC, ethgeh wrote:
> On Wednesday, 13 July 2016 at 19:41:53 UTC, dom wrote:
>> how can i run my unittests for a dynamic library? some weird conflict is reported between main functions, my project doesnt contain any main function.
>>
>> [...]
>
> try to put this before the main of your application:
>
>   "version(unittest){} else"
>
> it looks like the default unittest config implies the switch "-main".

as i said my project doesnt contain a main() function
July 16, 2016
On Thursday, 14 July 2016 at 10:13:38 UTC, dom wrote:
> On Thursday, 14 July 2016 at 00:33:50 UTC, ethgeh wrote:
>> On Wednesday, 13 July 2016 at 19:41:53 UTC, dom wrote:
>>> how can i run my unittests for a dynamic library? some weird conflict is reported between main functions, my project doesnt contain any main function.
>>>
>>> [...]
>>
>> try to put this before the main of your application:
>>
>>   "version(unittest){} else"
>>
>> it looks like the default unittest config implies the switch "-main".
>
> as i said my project doesnt contain a main() function

Are you sure? The error message states exactly this. Could you reduce the project to a single file and upload it somewhere (e. g. github).
December 08, 2018
On Saturday, 16 July 2016 at 20:22:15 UTC, Seb wrote:
> On Thursday, 14 July 2016 at 10:13:38 UTC, dom wrote:
>> On Thursday, 14 July 2016 at 00:33:50 UTC, ethgeh wrote:
>>> On Wednesday, 13 July 2016 at 19:41:53 UTC, dom wrote:
>>>> how can i run my unittests for a dynamic library? some weird conflict is reported between main functions, my project doesnt contain any main function.
>>>>
>>>> [...]
>>>
>>> try to put this before the main of your application:
>>>
>>>   "version(unittest){} else"
>>>
>>> it looks like the default unittest config implies the switch "-main".
>>
>> as i said my project doesnt contain a main() function
>
> Are you sure? The error message states exactly this. Could you reduce the project to a single file and upload it somewhere (e. g. github).

I am getting the same error for my projects. I tried prefacing my main functions with the version(unittest) {} else snippet (which we really shouldn't have to do!!!) but anyway that didn't change the behavior of dub test at all.
December 09, 2018
On Saturday, 8 December 2018 at 19:25:41 UTC, Andrew Pennebaker wrote:
> On Saturday, 16 July 2016 at 20:22:15 UTC, Seb wrote:
>> On Thursday, 14 July 2016 at 10:13:38 UTC, dom wrote:
>>> On Thursday, 14 July 2016 at 00:33:50 UTC, ethgeh wrote:
>>>> On Wednesday, 13 July 2016 at 19:41:53 UTC, dom wrote:
>>>>> how can i run my unittests for a dynamic library? some weird conflict is reported between main functions, my project doesnt contain any main function.
>>>>>
>>>>> [...]
>>>>
>>>> try to put this before the main of your application:
>>>>
>>>>   "version(unittest){} else"
>>>>
>>>> it looks like the default unittest config implies the switch "-main".
>>>
>>> as i said my project doesnt contain a main() function
>>
>> Are you sure? The error message states exactly this. Could you reduce the project to a single file and upload it somewhere (e. g. github).
>
> I am getting the same error for my projects. I tried prefacing my main functions with the version(unittest) {} else snippet (which we really shouldn't have to do!!!) but anyway that didn't change the behavior of dub test at all.

It is a quite old thread but the issue is still relevant. In the first post, there is a dependency to poodinis which defines in the test package a void main function.

Maybe main functions in dependencies causing this issue. Which dependencies do you have?

Kind regards
Andre