Skip to content

Commit 0d466f3

Browse files
authored
fix: show filename in parse errors for imported files (#657)
1 parent 660dcd5 commit 0d466f3

2 files changed

Lines changed: 11 additions & 7 deletions

File tree

internal/cmd/validate.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,11 @@ func outputDeveloperErrorsWithLineOffset(sb *strings.Builder, validateContents [
284284
}
285285

286286
func outputDeveloperError(sb *strings.Builder, devError *devinterface.DeveloperError, lines []string, lineOffset int) {
287-
lineContext := fmt.Sprintf("parse error in `%s`, line %d, column %d:", devError.Context, devError.Line, devError.Column)
287+
errorSource := devError.Context
288+
if len(devError.Path) > 0 && devError.Path[0] != "" {
289+
errorSource = devError.Path[0]
290+
}
291+
lineContext := fmt.Sprintf("parse error in `%s`, line %d, column %d:", errorSource, devError.Line, devError.Column)
288292
fmt.Fprintf(sb, "%s%s %s\n", errorPrefix(), lineContext, errorMessageStyle().Render(devError.Message))
289293
errorLineNumber := int(devError.Line) - 1 + lineOffset // devError.Line is 1-indexed
290294
for i := errorLineNumber - 3; i < errorLineNumber+3; i++ {

internal/cmd/validate_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ total files: 2, successfully validated files: 2
9797
},
9898
expectStr: filepath.Join("validate-test", "standard-validation.yaml") + `
9999
Success! - 1 relationships loaded, 2 assertions run, 0 expected relations validated
100-
` + filepath.Join("validate-test", "invalid-schema.zed") + "\nerror: parse error in `something`, line 1, column 1: Unexpected token at root level: TokenTypeIdentifier \n 1 > something something {}\n > ^~~~~~~~~\n 2 | \n\n\n",
100+
` + filepath.Join("validate-test", "invalid-schema.zed") + "\nerror: parse error in `invalid-schema.zed`, line 1, column 1: Unexpected token at root level: TokenTypeIdentifier \n 1 > something something {}\n > ^~~~~~~~~\n 2 | \n\n\n",
101101
expectNonZeroStatusCode: true,
102102
},
103103
`schema_only_passes`: {
@@ -116,7 +116,7 @@ Success! - 1 relationships loaded, 2 assertions run, 0 expected relations valida
116116
files: []string{
117117
filepath.Join("validate-test", "invalid-schema.zed"),
118118
},
119-
expectStr: "error: parse error in `something`, line 1, column 1: Unexpected token at root level: TokenTypeIdentifier \n 1 > something something {}\n > ^~~~~~~~~\n 2 | \n\n\n",
119+
expectStr: "error: parse error in `invalid-schema.zed`, line 1, column 1: Unexpected token at root level: TokenTypeIdentifier \n 1 > something something {}\n > ^~~~~~~~~\n 2 | \n\n\n",
120120
expectNonZeroStatusCode: true,
121121
},
122122
`without_schema_fails`: {
@@ -193,7 +193,7 @@ complete - 0 relationships loaded, 0 assertions run, 0 expected relations valida
193193
filepath.Join("validate-test", "missing-relation.zed"),
194194
},
195195
expectNonZeroStatusCode: true,
196-
expectStr: "error: parse error in `write`, line 2, column 21: relation/permission `write` not found under definition `test` \n" +
196+
expectStr: "error: parse error in `missing-relation.zed`, line 2, column 21: relation/permission `write` not found under definition `test` \n" +
197197
" 1 | definition test {\n" +
198198
" 2 > permission view = write\n" +
199199
" > ^~~~~\n " +
@@ -205,7 +205,7 @@ complete - 0 relationships loaded, 0 assertions run, 0 expected relations valida
205205
filepath.Join("validate-test", "missing-relation.yaml"),
206206
},
207207
expectNonZeroStatusCode: true,
208-
expectStr: "error: parse error in `write`, line 4, column 21: relation/permission `write` not found under definition `test` \n" +
208+
expectStr: "error: parse error in `missing-relation.yaml`, line 4, column 21: relation/permission `write` not found under definition `test` \n" +
209209
" 6 | definition user {}\n" +
210210
" 7 | definition test {\n" +
211211
" 8 | relation viewer: user\n" +
@@ -269,14 +269,14 @@ complete - 0 relationships loaded, 0 assertions run, 0 expected relations valida
269269
filepath.Join("validate-test", "composable-schema-imports-file-with-error.zed"),
270270
},
271271
expectNonZeroStatusCode: true,
272-
expectStr: "error: parse error in `unknownrel`, line 5, column 23: relation/permission `unknownrel` not found under definition `group` \n 2 | definition user {}\n 3 | \n 4 | definition group {\n 5 > permission view = unknownrel\n > ^~~~~~~~~~\n 6 | }\n 7 | \n\n\n",
272+
expectStr: "error: parse error in `composable-schema-imported-with-error.zed`, line 5, column 23: relation/permission `unknownrel` not found under definition `group` \n 2 | definition user {}\n 3 | \n 4 | definition group {\n 5 > permission view = unknownrel\n > ^~~~~~~~~~\n 6 | }\n 7 | \n\n\n",
273273
},
274274
`yaml_with_composable_schemaFile_with_import_error`: {
275275
files: []string{
276276
filepath.Join("validate-test", "external-composable-with-error.yaml"),
277277
},
278278
expectNonZeroStatusCode: true,
279-
expectStr: "error: parse error in `unknownrel`, line 5, column 23: relation/permission `unknownrel` not found under definition `group` \n 2 | \n 3 | definition group {\n 4 | relation member: user\n 5 > permission view = unknownrel\n > ^~~~~~~~~~\n 6 | }\n 7 | \n\n\n",
279+
expectStr: "error: parse error in `composable-schema-with-import-error-imported.zed`, line 5, column 23: relation/permission `unknownrel` not found under definition `group` \n 2 | \n 3 | definition group {\n 4 | relation member: user\n 5 > permission view = unknownrel\n > ^~~~~~~~~~\n 6 | }\n 7 | \n\n\n",
280280
},
281281
`yaml_content_with_zed_extension_gives_hint`: {
282282
files: []string{

0 commit comments

Comments
 (0)