Parallel execution of unittests

via Digitalmars-d digitalmars-d at puremagic.com
Wed Apr 30 14:17:46 PDT 2014


On Wednesday, 30 April 2014 at 18:19:34 UTC, Jonathan M Davis via 
Digitalmars-d wrote:
> On Wed, 30 Apr 2014 17:58:34 +0000
> Atila Neves via Digitalmars-d <digitalmars-d at puremagic.com> 
> wrote:
>> Unit tests though, by definition (and I'm aware there are more 
>> than one) have to be independent. Have to not touch the 
>> filesystem, or the network. Only CPU and RAM.
>
> I disagree with this. A unit test is a test that tests a single 
> piece
> of functionality - generally a function - and there are 
> functions which
> have to access the file system or network. And those tests are 
> done in
> unittest blocks just like any other unit test. I would very much
> consider std.file's tests to be unit tests. But even if you 
> don't
> want to call them unit tests, because they access the file 
> system, the
> reality of the matter is that tests like them are going to be 
> run in
> unittest blocks, and we have to take that into account when we 
> decide
> how we want unittest blocks to be run (e.g. whether they're
> parallelizable or not).
>
> - Jonathan M Davis


On what's a unit test: I +1 everything Dicebot and Russell Winder 
said. Of course there are functions with side effects. Of course 
they should be tested. But those tests aren't unit tests. Which 
won't stop people from using a unit test framework to run them. 
In fact, every test I've ever written using python's unittest 
module was an integration test.

But again, you're right. Whatever changes happen have to take 
into account the current status. And the current status makes it 
difficult if not impossible to run existing tests in multiple 
threads by default. One could argue that the Phobos tests should 
be changed too, but that won't help with the existing client 
codebase out there.


More information about the Digitalmars-d mailing list