From fd4872ae77015983370f01013c4826f36c91907a Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Fri, 22 Jun 2018 17:45:58 +0100 Subject: [PATCH] More tests to cover missing fallback for a non-found dependency Fix logic so we correctly raise an exception about missing fallback in the case where the dependency is required. --- mesonbuild/interpreter.py | 4 +++- test cases/common/171 not-found dependency/meson.build | 1 + .../80 subproj dependency not-found and required/meson.build | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 test cases/failing/80 subproj dependency not-found and required/meson.build diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index f0e71061f..c469ec60d 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2841,7 +2841,7 @@ external dependencies (including libraries) must go to "dependencies".''') # Unless a fallback exists and is forced ... if self.coredata.wrap_mode == WrapMode.forcefallback and 'fallback' in kwargs: - exception = DependencyException("fallback for %s not found" % name) + pass # ... search for it outside the project elif name != '': try: @@ -2852,6 +2852,8 @@ external dependencies (including libraries) must go to "dependencies".''') # Search inside the projects list if not dep.found(): if 'fallback' in kwargs: + if not exception: + exception = DependencyException("fallback for %s not found" % display_name) fallback_dep = self.dependency_fallback(name, kwargs) if fallback_dep: # Never add fallback deps to self.coredata.deps since we diff --git a/test cases/common/171 not-found dependency/meson.build b/test cases/common/171 not-found dependency/meson.build index c1e3a9a99..02072b6a0 100644 --- a/test cases/common/171 not-found dependency/meson.build +++ b/test cases/common/171 not-found dependency/meson.build @@ -11,3 +11,4 @@ library('testlib', 'testlib.c', dependencies: [dep]) subdir('sub', if_found: dep) subdep = dependency('', fallback: ['trivial', 'trivial_dep']) +missing = dependency('', fallback: ['missing', 'missing_dep'], required: false) diff --git a/test cases/failing/80 subproj dependency not-found and required/meson.build b/test cases/failing/80 subproj dependency not-found and required/meson.build new file mode 100644 index 000000000..c5a296104 --- /dev/null +++ b/test cases/failing/80 subproj dependency not-found and required/meson.build @@ -0,0 +1,2 @@ +project('dep-test') +missing = dependency('', fallback: ['missing', 'missing_dep'], required: true)