py-mine / mcstatus

A Python library for checking the status of Minecraft servers
https://mcstatus.readthedocs.io
Apache License 2.0
480 stars 37 forks source link

Integration tests #446

Open PerchunPak opened 1 year ago

PerchunPak commented 1 year ago

We should add some kind of integration tests on release, to prevent such issues as #433. On another hand, it would be hard work, and possibly will not find anything even in long term.

We also don't have unit tests for some parts of our code (like Bedrock part and CLI as well, partially tracked by #371).

kevinkjt2000 commented 1 year ago

Running a few containerized Minecraft servers would be a way to tackle this. I recommend itzg's Minecraft docker images; I've been using those for a while to run servers and they work great. There's an image that runs bedrock too.

PerchunPak commented 1 year ago

A list of server implementations to test.

Java ones (itzg's docker):

Bedrock (itzg's docker):

Proxies:

I tried to include all popular server cores. Maybe it's a lot, and we should cut some of them.

ItsDrike commented 1 year ago

Could be worth including a forge server, or other modded server too

PerchunPak commented 1 year ago

They're under PurPur.

PerchunPak commented 11 months ago

Duplicating my messages from Discord for history.


I have just found that DigitalOcean provides free hosting for some open-source projects. We could try to apply and host there our integration tests https://www.digitalocean.com/open-source/credits-for-projects

Although, they provide only $60/year (which is $5/month) and we probably could only buy 512mb RAM VPS

Another idea is to use swap, but it would drastically decrease speed (although if we would test so many versions and cores as we currently want, speed wouldn't really matter)

As it's integration tests are blocking for releases, we could leverage it by automatically creating patch notes (and so GitHub release) or by manually triggering integration tests before manually creating GitHub release

Any thoughts? If not, just add 👍 and I will email DigitalOcean.