Thread overview
Integration testing, unit-threaded, and threads
Apr 23, 2020
Russel Winder
Apr 23, 2020
drug
Apr 23, 2020
drug
Apr 23, 2020
Russel Winder
April 23, 2020
Hi,

I need to start a process before the tests run, and terminate it after the tests run. A module with a shared static constructor and shared static destructor sounds like the way of doing this since the constructor is run before main and the destructor after main. However I am using unit-threaded, not for the threads but because it is great for a whole load of other reasons. In fact the threads are becoming a problem.

As far as I can tell main is terminating before all the tests are complete which means the shared static destructor is executing before all the tests are complete.

To test this hypothesis I want to run single threaded. unit-threaded says this is possible using a command line option -s. The question is which command line? dub test doesn't accept it and neither does the dub command creating ut_main.d

-- 
Russel.
===========================================
Dr Russel Winder      t: +44 20 7585 2200
41 Buckmaster Road    m: +44 7770 465 077
London SW11 1EN, UK   w: www.russel.org.uk



April 23, 2020
23.04.2020 14:01, Russel Winder пишет:
> Hi,
> 
> I need to start a process before the tests run, and terminate it after
> the tests run. A module with a shared static constructor and shared
> static destructor sounds like the way of doing this since the
> constructor is run before main and the destructor after main. However I
> am using unit-threaded, not for the threads but because it is great for
> a whole load of other reasons. In fact the threads are becoming a
> problem.
> 
> As far as I can tell main is terminating before all the tests are
> complete which means the shared static destructor is executing before
> all the tests are complete.

I would use Fixture (a class derived form TestCase) here and derive all tests from it. It allows you to start your process before all test in `setup()` Fixture member and terminate it after in `` and probably lets you run the tests simultaneously.

> To test this hypothesis I want to run single threaded. unit-threaded
> says this is possible using a command line option -s. The question is
> which command line? dub test doesn't accept it and neither does the dub
> command creating ut_main.d
> 

Did you try `dub test -- -s`?
April 23, 2020
23.04.2020 14:41, drug пишет:
> terminate it after in ``

terminate it after in `shutdown()`
April 23, 2020
On Thu, 2020-04-23 at 14:41 +0300, drug via Digitalmars-d-learn wrote:
> 
[…]
> Did you try `dub test -- -s`?

Oh f###, that is about the only combination I didn't try. :-(

Thanks. Problem solved. :-)

Not sure about the Fixture proposal, I will research and cogitate further.


-- 
Russel.
===========================================
Dr Russel Winder      t: +44 20 7585 2200
41 Buckmaster Road    m: +44 7770 465 077
London SW11 1EN, UK   w: www.russel.org.uk