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

Inconsistent range Values in Error Diagnostics for Different AsyncAPI File Formats #936

Closed
Tracked by #1012
KhudaDad414 opened this issue Dec 27, 2023 · 6 comments · Fixed by #1044
Closed
Tracked by #1012
Labels
bug Something isn't working

Comments

@KhudaDad414
Copy link
Member

Describe the Bug

When parsing an invalid AsyncAPI document, the parser consistently returns range values that seem to correspond to a JSON-formatted document, regardless of the actual file format (YAML or JSON). This inconsistency can lead to confusion, as the error locations might not accurately reflect the structure of the file being parsed.

Steps to Reproduce

  1. Create two invalid AsyncAPI documents: one in YAML format and the other in JSON format. Ensure that the errors in both documents are structurally similar but occur at different lines or positions due to format differences.
  2. Parse both files using the AsyncAPI parser.
  3. Compare the diagnostics.range values returned for each file.

Expected Behavior

The parser should accurately reflect the error locations in the diagnostics.range values for both YAML and JSON formats. Since YAML and JSON have different structuring and syntax, errors in similar constructs should appear at different locations in the respective formats. Accurate error reporting is crucial for effective debugging and file validation.

Copy link

This issue has been automatically marked as stale because it has not had recent activity 😴

It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.

There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.

Let us figure out together how to push this issue forward. Connect with us through one of many communication channels we established here.

Thank you for your patience ❤️

@github-actions github-actions bot added the stale label Apr 26, 2024
@smoya smoya removed the stale label Jun 5, 2024
@smoya
Copy link
Member

smoya commented Jun 5, 2024

Another use case:

  • YAML version: it says the error is in line 237, but that's not true.
  • JSON version: The error keeps saying is in line 237, but this time it is true.

@aeworxet
Copy link
Contributor

Both packages @stoplight/yaml and @stoplight/json for figuring out the location in an input document use a file with the exact same name, getLocationForJsonPath.ts, and a function with the exact same name, getLocationForJsonPath(). They are not explicitly imported on each application, so this bug might simply be caused by using getLocationForJsonPath() meant for a JSON when there's a need to use a YAML-specific function. I am checking this variant.

@aeworxet
Copy link
Contributor

This bug is caused by the normalization of YAML to JSON when ensuring the JSON format for the initial input.
12c42fb

@jonaslagoni, should this normalization be removed or changed somehow?

@aeworxet
Copy link
Contributor

@jonaslagoni responded in Slack

https://asyncapi.slack.com/archives/CQVJXFNQL/p1721987728027619?thread_ts=1721893488.375929&cid=CQVJXFNQL

Removing that code should mean that if the input is yaml (string type) you cant validate it correctly

and the conversation continues there for now.

@aeworxet
Copy link
Contributor

aeworxet commented Aug 6, 2024

Submitted PR asyncapi/studio#1126, which is step 2 of 2 in fully fixing this bug for Studio

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants