Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TOSCA parsing and validation error messages should include source filename and line number #108

Open
aszs opened this issue Feb 7, 2022 · 1 comment
Assignees

Comments

@aszs
Copy link
Member

aszs commented Feb 7, 2022

TOSCA parsing and validation error messages should include source filename and line number. We have the original parsed yaml nodes elements available we just need to preserve that info all the way down to where the exception is raised.

A sketch:

  1. Make yamlloader.py saves the file name in addition to the base_dir.

  2. Update make_map_with_base() in merge.py to preserve the CommentedMap's lc attribute.
    From https://yaml.readthedocs.io/en/latest/detail.html: "collection objects (when read in via RoundTripParser) have an lc property that contains line and column info lc.line and lc.col. Individual positions for mappings and sequences can also be retrieved (lc.key('a'), lc.value('a') resp. lc.item(3))"

    lc = getattr(doc, "lc", None)
    ...
    if lc is not None:
    map.lc.line = lc.line
    map.lc.col = lc.col

  3. Add a near class attribute to ExceptionCollector and update the ctors for the base TOSCA element classes to set their tpl instance to that class, e.g. EntityTemplate could add:

     ExceptionCollector.near = (self, self.entity_tpl)
    
  4. Add a line like self.near = ExceptionCollector.near to TOSCAException ctor

Now we have enough info to augment the error message with a sentence like "error in near line n in file f

@aszs
Copy link
Member Author

aszs commented Apr 27, 2022

I didn't see lc on the CommentMap objects, not sure why... So as a hack I'm just assigning help for messages to ExceptionCollector .near in a few place in the parsing process, just search for "near" in tosca-parser.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants