aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2019-04-02 11:12:10 +0200
committerDaniel Mensinger <daniel@mensinger-ka.de>2019-04-02 11:21:05 +0200
commit1937bbafac07df48e78fea96a8c3c086db564574 (patch)
treeaeef1d51c9b02f37ba6cc5d008367505dbe3b2af
parent75219989ca468923142738d93df8aef64e897b8e (diff)
downloadmeson-1937bbafac07df48e78fea96a8c3c086db564574.zip
meson-1937bbafac07df48e78fea96a8c3c086db564574.tar.gz
meson-1937bbafac07df48e78fea96a8c3c086db564574.tar.bz2
mintro: Fix crash when required is a function (closes #5177)
-rw-r--r--mesonbuild/ast/introspection.py2
-rwxr-xr-xrun_unittests.py8
-rw-r--r--test cases/unit/55 introspection/meson.build1
-rw-r--r--test cases/unit/55 introspection/meson_options.txt1
4 files changed, 11 insertions, 1 deletions
diff --git a/mesonbuild/ast/introspection.py b/mesonbuild/ast/introspection.py
index 5745d29..fd7b412 100644
--- a/mesonbuild/ast/introspection.py
+++ b/mesonbuild/ast/introspection.py
@@ -142,6 +142,8 @@ class IntrospectionInterpreter(AstInterpreter):
condition_level = node.condition_level if hasattr(node, 'condition_level') else 0
if isinstance(required, ElementaryNode):
required = required.value
+ if not isinstance(required, bool):
+ required = False
self.dependencies += [{
'name': name,
'required': required,
diff --git a/run_unittests.py b/run_unittests.py
index 7ceb553..bc28eea 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -3408,7 +3408,7 @@ recommended as it is not supported on some platforms''')
self.assertDictEqual(buildopts_to_find, {})
# Check buildsystem_files
- bs_files = ['meson.build', 'sharedlib/meson.build', 'staticlib/meson.build']
+ bs_files = ['meson.build', 'meson_options.txt', 'sharedlib/meson.build', 'staticlib/meson.build']
bs_files = [os.path.join(testdir, x) for x in bs_files]
self.assertPathListEqual(list(sorted(res['buildsystem_files'])), list(sorted(bs_files)))
@@ -3560,6 +3560,12 @@ recommended as it is not supported on some platforms''')
'conditional': False
},
{
+ 'name': 'bugDep1',
+ 'required': False,
+ 'has_fallback': False,
+ 'conditional': False
+ },
+ {
'name': 'somethingthatdoesnotexist',
'required': True,
'has_fallback': False,
diff --git a/test cases/unit/55 introspection/meson.build b/test cases/unit/55 introspection/meson.build
index 98f6f22..15eb1ed 100644
--- a/test cases/unit/55 introspection/meson.build
+++ b/test cases/unit/55 introspection/meson.build
@@ -2,6 +2,7 @@ project('introspection', ['c', 'cpp'], version: '1.2.3', default_options: ['cpp_
dep1 = dependency('threads')
dep2 = dependency('zlib', required: false)
+dep3 = dependency('bugDep1', required: get_option('test_opt1'))
if false
dependency('somethingthatdoesnotexist', required: true)
diff --git a/test cases/unit/55 introspection/meson_options.txt b/test cases/unit/55 introspection/meson_options.txt
new file mode 100644
index 0000000..b2956c8
--- /dev/null
+++ b/test cases/unit/55 introspection/meson_options.txt
@@ -0,0 +1 @@
+option('test_opt1', type: 'boolean', value: false, description: 'simple boolean flag')