diff options
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 11 | ||||
| -rw-r--r-- | unittests/datatests.py | 15 | ||||
| -rw-r--r-- | unittests/internaltests.py | 5 |
3 files changed, 19 insertions, 12 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index b736aea41..bee64aa94 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -266,7 +266,6 @@ class Interpreter(InterpreterBase, HoldableObject): subdir: str = '', subproject_dir: str = 'subprojects', default_project_options: T.Optional[T.Dict[OptionKey, str]] = None, - mock: bool = False, ast: T.Optional[mparser.CodeBlockNode] = None, is_translated: bool = False, relaxations: T.Optional[T.Set[InterpreterRuleRelaxation]] = None, @@ -285,12 +284,11 @@ class Interpreter(InterpreterBase, HoldableObject): self.subproject_directory_name = subdir.split(os.path.sep)[-1] self.subproject_dir = subproject_dir self.relaxations = relaxations or set() - if not mock and ast is None: + if ast is None: self.load_root_meson_file() - self.sanity_check_ast() - elif ast is not None: + else: self.ast = ast - self.sanity_check_ast() + self.sanity_check_ast() self.builtin.update({'meson': MesonMain(self.build, self)}) self.generators: T.List[build.Generator] = [] self.processed_buildfiles: T.Set[str] = set() @@ -319,8 +317,7 @@ class Interpreter(InterpreterBase, HoldableObject): build_filename = os.path.join(self.subdir, environment.build_filename) if not is_translated: self.build_def_files.add(build_filename) - if not mock: - self.parse_project() + self.parse_project() self._redetect_machines() def __getnewargs_ex__(self) -> T.Tuple[T.Tuple[object], T.Dict[str, object]]: diff --git a/unittests/datatests.py b/unittests/datatests.py index ae32a9491..4f9d52032 100644 --- a/unittests/datatests.py +++ b/unittests/datatests.py @@ -5,6 +5,7 @@ import re import unittest from itertools import chain from pathlib import Path +from unittest import mock import mesonbuild.mlog import mesonbuild.depfile @@ -208,7 +209,10 @@ class DataTests(unittest.TestCase): name = name.replace('_', '-') self.assertIn(name, html) - @unittest.mock.patch.dict(os.environ) + @mock.patch.dict(os.environ) + @mock.patch.object(Interpreter, 'load_root_meson_file', mock.Mock(return_value=None)) + @mock.patch.object(Interpreter, 'sanity_check_ast', mock.Mock(return_value=None)) + @mock.patch.object(Interpreter, 'parse_project', mock.Mock(return_value=None)) def test_vim_syntax_highlighting(self): ''' Ensure that vim syntax highlighting files were updated for new @@ -217,13 +221,16 @@ class DataTests(unittest.TestCase): # Disable unit test specific syntax del os.environ['MESON_RUNNING_IN_PROJECT_TESTS'] env = get_fake_env() - interp = Interpreter(FakeBuild(env), mock=True) + interp = Interpreter(FakeBuild(env)) with open('data/syntax-highlighting/vim/syntax/meson.vim', encoding='utf-8') as f: res = re.search(r'syn keyword mesonBuiltin(\s+\\\s\w+)+', f.read(), re.MULTILINE) defined = set([a.strip() for a in res.group().split('\\')][1:]) self.assertEqual(defined, set(chain(interp.funcs.keys(), interp.builtin.keys()))) - @unittest.mock.patch.dict(os.environ) + @mock.patch.dict(os.environ) + @mock.patch.object(Interpreter, 'load_root_meson_file', mock.Mock(return_value=None)) + @mock.patch.object(Interpreter, 'sanity_check_ast', mock.Mock(return_value=None)) + @mock.patch.object(Interpreter, 'parse_project', mock.Mock(return_value=None)) def test_all_functions_defined_in_ast_interpreter(self): ''' Ensure that the all functions defined in the Interpreter are also defined @@ -232,6 +239,6 @@ class DataTests(unittest.TestCase): # Disable unit test specific syntax del os.environ['MESON_RUNNING_IN_PROJECT_TESTS'] env = get_fake_env() - interp = Interpreter(FakeBuild(env), mock=True) + interp = Interpreter(FakeBuild(env)) astint = AstInterpreter('.', '', '') self.assertEqual(set(interp.funcs.keys()), set(astint.funcs.keys())) diff --git a/unittests/internaltests.py b/unittests/internaltests.py index 945faa18b..fd843c88c 100644 --- a/unittests/internaltests.py +++ b/unittests/internaltests.py @@ -1662,13 +1662,16 @@ class InternalTests(unittest.TestCase): actual = mesonbuild.environment.detect_cpu({}) self.assertEqual(actual, expected) + @mock.patch('mesonbuild.interpreter.Interpreter.load_root_meson_file', mock.Mock(return_value=None)) + @mock.patch('mesonbuild.interpreter.Interpreter.sanity_check_ast', mock.Mock(return_value=None)) + @mock.patch('mesonbuild.interpreter.Interpreter.parse_project', mock.Mock(return_value=None)) def test_interpreter_unpicklable(self) -> None: build = mock.Mock() build.environment = mock.Mock() build.environment.get_source_dir = mock.Mock(return_value='') with mock.patch('mesonbuild.interpreter.Interpreter._redetect_machines', mock.Mock()), \ self.assertRaises(mesonbuild.mesonlib.MesonBugException): - i = mesonbuild.interpreter.Interpreter(build, mock=True) + i = mesonbuild.interpreter.Interpreter(build) pickle.dumps(i) def test_major_versions_differ(self) -> None: |
