Autotesting dub packages with dmd nightly

Seb via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Fri Aug 26 11:52:17 PDT 2016


On Monday, 22 August 2016 at 20:44:05 UTC, Sebastiaan Koppe wrote:
> On Wednesday, 10 August 2016 at 18:35:03 UTC, Sebastiaan Koppe 
> wrote:
>> So true. Then I will do PR's first.
>
> I finally got around implementing running dmd/druntime/phobos 
> pull requests against all dub packages. Thank you digger, for 
> making it so easy.
>
> I did a run of master + druntime#1602. Then I ran a comparison 
> with a batch from 2.071.2-b2. 108 packages had a different 
> build result. I have no nice stats or pictures, but a quick 
> glance over the raw data:
>
> 50 of them went from green unittests to a dmd exit code 1.
> 16 went from unknown build results to dmd exit code 1.
> 10 went from dmd exit code 255 to 1
> 9 of them are now green.
> 8 of them went from linker errors to a dmd exit code 1.
> 6 of then went from non-zero exit code during unittest run to a 
> dmd exit code 1.
> 3 previous ran out of memory but now resulted in dmd exit code 
> 1.
> etc.
>
> All in all I think +/- 96 package are affected. A little over 
> 11%.

That's awesome to know!

How difficult would it be to integrate it with the dlang GitHub 
PR workflow?
I am just shooting an idea that popped into my head:

We already use CircleCi and Travis for the dlang repos, so if we 
lock the packages to a fixed version (to prevent failures caused 
by the package authors), we might be able create a simple file 
like:

```
vibe.d==0.7.29
mir==0.16.3
...
```

We could select a subset (e.g. 50-100), s.t. the runtime doesn't 
get exorbitant.
Following we could then do enable the checking in CircleCi with 
sth. similar to:

```
wget 
https://raw.githubusercontent.com/dlang/community-list/master/dlang-packages.master # just an example, idea is to host the file somewhere on GitHub s.t. editing it is easy
dub fetch your-fancy-tool --version="x.y.y"
dub run your-fancy-tool --config dlang-stable.packages
```

Of course CircleCi doesn't have the access rights to post back to 
the hook API, but you could send a notification to dlang-bot [1] 
which has the permissions or let the CI error / fail.

Otherwise you could of course look into setting up your own job 
queue (or hack with the code from the auto-tester [2]), which 
might be fun too.

[1] https://github.com/MartinNowak/dlang-bot
[2] https://github.com/braddr/d-tester


More information about the Digitalmars-d-announce mailing list