summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/interpreter/interpreter.py11
-rw-r--r--unittests/datatests.py15
-rw-r--r--unittests/internaltests.py5
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: