ataiasreis
2017-9-16 12:05:20

@ataiasreis has joined the channel


j.wenjiao
2017-9-16 13:57:19

@j.wenjiao has joined the channel


binarybusiness
2017-9-16 18:54:59

@binarybusiness has joined the channel


notjack
2017-9-16 19:20:13

@florence does raco cover exit with a nonzero status code? I’m wondering how I can avoid running all my tests twice in CI


florence
2017-9-16 21:01:16

@notjack raco cover does do a non-zero exit code on test failure (I think) but it doesn’t have the same notion of failure as raco test. I don’t think I treats stderr as failure. Maybe it should.


notjack
2017-9-16 21:03:56

@florence I think ideally raco test would provide a way for packages to declare they should be instrumented somehow when being tested, and cover could use that to generate the coverage map. Then the raco cover command would just take the map and upload it or summarize it.


notjack
2017-9-16 21:04:37

That way it’s not possible for raco test and raco cover to have different notions of test failure


florence
2017-9-16 21:10:29

I’m not sure about the implications of doing that… Cover, for instance, is not compatible with running tests in parallel. Also I’m suspicious of this because cover can change a programs behavior


florence
2017-9-16 21:12:20

That being said, a unified CI interface would be reaalllyyy nice


notjack
2017-9-16 21:22:35

@florence maybe combined with an info field to control whether tests run in parallel? or something like that but more general


notjack
2017-9-16 21:23:20

what sort of programs does cover change test behavior in?


florence
2017-9-16 21:27:58

There are a few behavior changes that i don’t understand and are probably bugs, but in general it changes the runtime of programs—both because of all the extra code and the inserted set!s probably mess with the optimizer—which can changes tests with timeouts or might change race condition behavior. It also greatly increases the memory used, which has caused intermittent OOM errors in the past.


florence
2017-9-16 21:29:07

Also I’m not sure what effect cover will have on reflection now that I think about it…


florence
2017-9-16 21:29:52

Also module loading can deadlock if you change the logger before a dynamic require….


notjack
2017-9-16 21:42:40

@florence does cover only need to install errortrace during compilation and instrument running that compiled code or does it need to change current-compile in other ways too?


florence
2017-9-16 21:45:55

Neither? Cover uses errortrace’s syntax traversal stuff to apply its own annotation function.


notjack
2017-9-16 21:48:28

ohhh


florence
2017-9-16 21:49:32

It does a bunch of stuff differently: it sets up cross phase annotations, it handles #:cross-phase-persistant modules, it uses a different internal representation of coverage to handle multifile coverage more efficiently, etc. It does wind up reimplementing a bunch of stuff in errortrace though but I’m not sure how to get around that


notjack
2017-9-16 22:04:30

@florence thanks, that clears up my understanding a lot. I’ve been thinking about testing and CI stuff a lot lately so let’s talk more at racketcon, if you like :)


florence
2017-9-16 22:05:32

@notjack yes! I thinking about working on the cover issue you logged as a hackathon project


notjack
2017-9-16 22:05:42

Which one? :P


florence
2017-9-16 22:06:09

The most recent one



florence
2017-9-16 22:06:47

The other ones are… Hard…


notjack
2017-9-16 22:07:00

Oh! Yes that’s a great hackathon project and its something I definitely want to do


notjack
2017-9-16 22:08:17

I’d like to combine that with two testing packages I have to do some neat stuff


greg
2017-9-17 00:04:40

@lexi.lambda That sort of fits my theory that, based on observable work output, Matthew is actually identical quadruplets.