Beheer: specificeer scope (formats veld) van de ruleset#346
Conversation
Signed-off-by: Erwin <erwinkramer@hotmail.com>
Signed-off-by: Erwin <erwinkramer@hotmail.com>
Signed-off-by: Erwin <erwinkramer@hotmail.com>
Signed-off-by: Erwin <erwinkramer@hotmail.com>
Signed-off-by: Erwin <erwinkramer@hotmail.com>
Signed-off-by: Erwin <erwinkramer@hotmail.com>
TimvdLippe
left a comment
There was a problem hiding this comment.
Top, dit lijkt mij een goede fix! Zou je ook een testcase willen toevoegen met een minimaal Arazzo spec (of andere file format die je gebruikt) en dan met de expected output dat er geen errors zijn? Dan hebben we zo de regressie test dat je niet nog een keer in die situatie komt.
Link checker is idd ongerelateerd. Is helaas het gevolg van omgaan met ongebreideld AI crawlers waardoor onze link checker ook soms word gezien als crawler 😢
|
@TimvdLippe ik heb een Arazzo spec met case toegevoegd. Omdat het lintingscript van een Ook heb ik een Tenslotte is |
Signed-off-by: Erwin <erwinkramer@hotmail.com>
TimvdLippe
left a comment
There was a problem hiding this comment.
1 kleine nit, de rest ziet er goed uit. Thanks voor het fixen!
formats veld) van de rulesetformats veld) van de ruleset
De scope van de ruleset is grotendeels het valideren van OpenAPI 3.x specs. Daarom zou het formats veld benut moeten kunnen worden. Nu geldt de ruleset ook voor elk ander mogelijk format buiten OpenAPI, zoals AsyncAPI en Arazzo, wat niet de bedoeling zou mogen zijn.
Ik liep hier zelf tegenaan, omdat je bijvoorbeeld in de VS Code extensie van Spectral maar 1 rulesetfile kan definiëren voor een hele repo, terwijl er in mijn geval meerdere type specs worden gevalideerd, zoals Arazzo en OpenAPI 3.x. Het zou dan ook mogelijk moeten zijn om voor 1 ruleset meerdere formats te kunnen bedienen, zonder elkaar in de weg te zitten.
Deze PR voegt
oas3toe als format. Voornlgov:openapi-root-existsheb ik het formatoas2toegevoegd, om toch een validatiefout te krijgen als je op openapi 2.x zit. Omdat v2 eigenlijk wordt gedefinieerd via{ "swagger": "2.0", [...] }, heeft het geen zin om voor deze rule opoas3te checken of de openapi root bestaat, aangezienoas3alsformatsal impliciet betekend dat je dit correct hebt genoteerd, alvorens een rule voor dit format wordt geactiveerd.Dit zorgt wel voor falende testcases...:
...maargoed, ik denk niet dat deze insteek voor de testcases nuttig is voor de API Design Rules. Op moment dat een willekeurig json/yaml document herkend wordt als een OpenAPI/Swagger document (via
swaggerofopenapielement), pas dan zou de API Design Rules er op losgelaten mogen worden, lijkt mij. De expected output van deze testcase heb ik daarom ook aangepast.De links check gaat trouwens nog fout, ik denk dat dit niet gerelateerd is aan mijn PR.