Hopefully, this will decrease our failure rate (which is admittedly pretty low already, but anecdotally higher than it's been in a long time -- I bet AI scrapers hitting example.com are to blame, just like everyone else's infra).
Originally this was helpful as a deeper test of Python, but I don't think it's caught us any Python bugs, and just puts us at the forefront of Hy integration problems.
"But Tianon," you might say, "isn't that a good thing?" Yes! Yes, it is. HOWEVER, we literally have the https://hub.docker.com/_/hylang image which would run into these same integration issues, but in a more appropriate place (such that they're only affecting updates to the Hy image, not PyPy or Python).
So in short, we should remove that test instead, as much as I love it and find it extremely cute, since we'll keep it anyways on all the variants of the Hy image (but without that hairy if statement for filtering supported versions, because it'll only even run for supported versions, pre-filtered).
I've updated the logic a little bit so that this is easier to update correctly in the future (in theory -- I'm sure Python 4 is going to show up shortly *just* to spite me).
/tmp/test-dir/python-sqlite3/./container.py:5: DeprecationWarning: Passing more than 1 positional argument to sqlite3.connect() is deprecated. Parameters 'timeout', 'detect_types', 'isolation_level', 'check_same_thread', 'factory', 'cached_statements' and 'uri' will become keyword-only parameters in Python 3.15.
Tested successfully on Python 3.13rc1, 3.8, and PyPy's Python 2 implementation, for good measure.
In Python 3.12+, setuptools and wheel should be removed (but should be present in older versions).
Technically this should be tested on Python 2 as well, but I opted not to because the interfaces for doing so are different and that only exists in a single variant of PyPy (that frankly I don't care too much about verifying the "correctness" of as much).
Before:
```console
$ ./test/run.sh -t mongo-tls-basics -t mongo-tls-auth mongo:4.4.29
testing mongo:4.4.29
'mongo-tls-basics' [1/2]...librarytest/mongo-tls:mongo-4.4.29 stopped unexpectedly!
++ docker logs c6b35d558bcd95eeb36932e02b289b1d9e62283aa05e143a1cda20b6fbcf476f
{"t":{"$date":"2024-02-28T22:56:30.628Z"},"s":"F", "c":"CONTROL", "id":20574, "ctx":"main","msg":"Error during global initialization","attr":{"error":{"code":72,"codeName":"InvalidOptions","errmsg":"The use of TLS without specifying a chain of trust is no longer supported. See https://jira.mongodb.org/browse/SERVER-72839 for details."}}}
failed
'mongo-tls-auth' [2/2]...librarytest/mongo-tls:mongo-4.4.29 stopped unexpectedly!
++ docker logs 0417420c857d936cbd80e34f43450b624ada55e543de3fa42325d7a7fe7876fc
{"t":{"$date":"2024-02-28T22:56:32.344Z"},"s":"F", "c":"CONTROL", "id":20574, "ctx":"main","msg":"Error during global initialization","attr":{"error":{"code":72,"codeName":"InvalidOptions","errmsg":"The use of TLS without specifying a chain of trust is no longer supported. See https://jira.mongodb.org/browse/SERVER-72839 for details."}}}
failed
```
After:
```console
$ ./test/run.sh -t mongo-tls-basics -t mongo-tls-auth mongo:4.4.29
testing mongo:4.4.29
'mongo-tls-basics' [1/2]....passed
'mongo-tls-auth' [2/2]....passed
```
In 44b79e2186, we removed `--root-user-action` from our `pip install` invocation, but missed the `ignore` value, so we've been installing https://pypi.org/project/ignore/ in this test ever since. 😂
MariaDB-11.4 added a default self-signed TLS cert. With this
in the cases where there is no secure password there will be a TLS
error. By setting the password, the connection can continue.
Adding the password is compatible with MySQL and equivalents.
Also updated the base image from Debian bullseye to Debian bookworm and
makes test.sh + test.pl test all plugins and dynamically adjust to the
available ones.
Due to MariaDB diverging from MySQL, MariaDB-11.0+ containers
don't include mysql compatibility links and use mariadb as the
CLI. This has been there since MariaDB-10.4.
Co-authored-by: Tianon Gravi <admwiggin@gmail.com>