unittests: convert python tests to project tests

Perhaps when this test case was originally created, project tests could
not use a matrix of options? This is certainly possible today, so don't
write special unittest handling for this instead.

This adds proper visibility into what gets run and what doesn't. Now we
know which python executables got tested and which got skipped.
pull/10134/head
Eli Schwartz 3 years ago
parent ff844f3a1f
commit 4b0c0810df
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6
  1. 0
      test cases/python/8 different python versions/blaster.py
  2. 0
      test cases/python/8 different python versions/ext/meson.build
  3. 0
      test cases/python/8 different python versions/ext/tachyon_module.c
  4. 0
      test cases/python/8 different python versions/meson.build
  5. 0
      test cases/python/8 different python versions/meson_options.txt
  6. 13
      test cases/python/8 different python versions/test.json
  7. 41
      unittests/pythontests.py

@ -0,0 +1,13 @@
{
"matrix": {
"options": {
"python": [
{ "val": null },
{ "val": "python2" },
{ "val": "python3" },
{ "val": "pypy" },
{ "val": "pypy3" }
]
}
}
}

@ -26,48 +26,11 @@ class PythonTests(BasePlatformTests):
Tests that verify compilation of python extension modules
'''
def test_versions(self):
def test_bad_versions(self):
if self.backend is not Backend.ninja:
raise unittest.SkipTest(f'Skipping python tests with {self.backend.name} backend')
testdir = os.path.join(self.src_root, 'test cases', 'unit', '39 python extmodule')
# No python version specified, this will use meson's python
self.init(testdir)
self.build()
self.run_tests()
self.wipe()
# When specifying a known name, (python2 / python3) the module
# will also try 'python' as a fallback and use it if the major
# version matches
try:
self.init(testdir, extra_args=['-Dpython=python2'])
self.build()
self.run_tests()
except unittest.SkipTest:
# python2 is not necessarily installed on the test machine,
# if it is not, or the python headers can't be found, the test
# will raise MESON_SKIP_TEST, we could check beforehand what version
# of python is available, but it's a bit of a chicken and egg situation,
# as that is the job of the module, so we just ask for forgiveness rather
# than permission.
pass
self.wipe()
for py in ('pypy', 'pypy3'):
try:
self.init(testdir, extra_args=['-Dpython=%s' % py])
except unittest.SkipTest:
# Same as above, pypy2 and pypy3 are not expected to be present
# on the test system, the test project only raises in these cases
continue
# We have a pypy, this is expected to work
self.build()
self.run_tests()
self.wipe()
testdir = os.path.join(self.src_root, 'test cases', 'python', '8 different python versions')
# The test is configured to error out with MESON_SKIP_TEST
# in case it could not find python

Loading…
Cancel
Save