This is an automated email from the ASF dual-hosted git repository.

juergbi pushed a commit to branch juerg/junction-aliases
in repository https://gitbox.apache.org/repos/asf/buildstream.git


The following commit(s) were added to refs/heads/juerg/junction-aliases by this 
push:
     new 4c19b3fa3 WIP: Add sketch of error handling
4c19b3fa3 is described below

commit 4c19b3fa343f285eb667f422041d6363c579ff25
Author: Jürg Billeter <[email protected]>
AuthorDate: Fri Apr 5 18:40:59 2024 +0200

    WIP: Add sketch of error handling
    
    At least provenance still needs to be added.
---
 src/buildstream/_project.py | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/buildstream/_project.py b/src/buildstream/_project.py
index fbf190018..2ee16f196 100644
--- a/src/buildstream/_project.py
+++ b/src/buildstream/_project.py
@@ -40,6 +40,7 @@ from ._includes import Includes
 from ._workspaces import WORKSPACE_PROJECT_FILE
 from ._remotespec import RemoteSpec
 from .sourcemirror import SourceMirror
+from .source import SourceError
 
 
 if TYPE_CHECKING:
@@ -250,7 +251,7 @@ class Project:
                             parent_alias + utils._ALIAS_SEPARATOR + url_body, 
first_pass=first_pass
                         )
                     elif parent_project.disallow_subproject_uris:
-                        return url
+                        raise SourceError("Parent project did not provide a 
mapping for alias '{}' and disallowed usage of unmapped 
aliases".format(url_alias), reason="invalid-source-alias")
 
                 url = alias_url + url_body
 
@@ -413,9 +414,14 @@ class Project:
             parent_project = self.junction._get_project()
             parent_alias = self.junction.get_parent_alias(alias)
             if parent_alias:
-                return parent_project.alias_exists(parent_alias, 
first_pass=first_pass)
+                if parent_project.alias_exists(parent_alias, 
first_pass=first_pass):
+                    return True
+                else:
+                    raise SourceError(
+                        "{}: Mapped alias '{}' for subproject alias '{}' is 
invalid in the parent project".format("TODO junction provenance", parent_alias, 
alias),
+                        reason="invalid-source-alias")
             elif parent_project.disallow_subproject_uris:
-                return False
+                raise SourceError("Parent project did not provide a mapping 
for alias '{}' and disallowed usage of unmapped aliases".format(alias), 
reason="invalid-source-alias")
 
         return config._aliases.get_str(alias, default=None) is not None
 

Reply via email to