circus-tent / circus

A Process & Socket Manager built with zmq
http://circus.readthedocs.org/
Other
1.55k stars 257 forks source link

DevOps: Replace `nose` with `pytest` to run unit tests #1210

Closed sphuber closed 1 year ago

biozz commented 1 year ago

This looks good at a quick glance, but I would like to dive a bit deeper and understand how that works. I will be back with a proper review in a couple of days.

Have you noticed any improvements in terms of test suit stability? There were one or two tests failing from time to time for no reason.

sphuber commented 1 year ago

Have you noticed any improvements in terms of test suit stability? There were one or two tests failing from time to time for no reason.

Not really to be honest, because I have only run it three times (twice through CI on Github Actions). It is just that pytest is much more widely used and better maintained (nose2 has little activity) and it has a lot of useful features. For now, I mostly did it to easily get an overview of all warnings, which are printed at the end of the pytest run. Writing new tests is also a pleasure with pytest due to its powerful fixture system, but as you can see you are not forced to and we can keep our old-style tests for now without any adaptations.

biozz commented 1 year ago

I tried it locally and had these two fail:

But those are probably the two unstable ones. Not sure what to do with them. Maybe a MacOS specific failure.

There are couple more places where I found nose: coverage and bin/coverage targets in Makefile. They should probably go as well.

sphuber commented 1 year ago

Thanks for testing this @biozz . I have removed the final references to nose in the Makefile. Is that file even still used though? I have the feeling it might not actually be up to date anymore and wonder whether it is even working. We definitely don't use it in the CI in any case. I have the same question about bootstrap.py and buildout.cfg. They were added a long time ago (2012) and doubt that they are still being used. I am not sure what their purpose even is. Related to this maybe? Was this used back then to build the package before distribution (which is now done using flit) ?

biozz commented 1 year ago

I think at this point it is a personal preference and also a nice developer experience.

I usually have Makefile (or Taskfile) in almost all of my projects and I always know that if I cd into it I can run make install or make test and it always works regardless of the framework, language, build or test system. So that's why I prefer keeping it. I might update it if we keep this pace of changes going ;)