diff options
Diffstat (limited to '')
-rw-r--r-- | unittests/pythontests.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/unittests/pythontests.py b/unittests/pythontests.py new file mode 100644 index 0000000..d49107f --- /dev/null +++ b/unittests/pythontests.py @@ -0,0 +1,62 @@ +# Copyright 2016-2021 The Meson development team + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import unittest +import pathlib +import subprocess + +from run_tests import ( + Backend +) + +from .allplatformstests import git_init + +from .baseplatformtests import BasePlatformTests +from mesonbuild.mesonlib import TemporaryDirectoryWinProof + +class PythonTests(BasePlatformTests): + ''' + Tests that verify compilation of python extension modules + ''' + + 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', 'python', '8 different python versions') + + # The test is configured to error out with MESON_SKIP_TEST + # in case it could not find python + with self.assertRaises(unittest.SkipTest): + self.init(testdir, extra_args=['-Dpython=not-python']) + self.wipe() + + # While dir is an external command on both Windows and Linux, + # it certainly isn't python + with self.assertRaises(unittest.SkipTest): + self.init(testdir, extra_args=['-Dpython=dir']) + self.wipe() + + def test_dist(self): + with TemporaryDirectoryWinProof() as dirstr: + dirobj = pathlib.Path(dirstr) + mesonfile = dirobj / 'meson.build' + mesonfile.write_text('''project('test', 'c', version: '1') +pymod = import('python') +python = pymod.find_installation('python3', required: true) +''', encoding='utf-8') + git_init(dirstr) + self.init(dirstr) + subprocess.check_call(self.meson_command + ['dist', '-C', self.builddir], stdout=subprocess.DEVNULL) |