daveshanley / vacuum

vacuum is the worlds fastest OpenAPI 3, OpenAPI 2 / Swagger linter and quality analysis tool. Built in go, it tears through API specs faster than you can think. vacuum is compatible with Spectral rulesets and generates compatible reports.
https://quobix.com/vacuum
MIT License
577 stars 48 forks source link

schema function behavior inconsistent with equivalent spectral rule #490

Open rspurgeon opened 5 months ago

rspurgeon commented 5 months ago

Attempting to use the schema function to validate an entire input file (non-OAS).

Given

❯ vacuum version
0.9.15
❯ spectral --version
6.11.1

rules.yaml

rules:
  check-only-consumers:
    description: "Ensure only consumer entities in state files"
    given: "$"
    severity: error
    then:
      function: schema
      functionOptions:
        schema:
          type: "object"
          properties:
            consumers: 
              type: "array"
          additionalProperties: false

consumers.yaml

consumers:
- username: mortgage-consumer-0
  custom_id: mortgage-consumer-0

consumers-bad.yaml

consumers:
- username: mortgage-consumer-0
  custom_id: mortgage-consumer-0
services:
  enabled: true

Spectral lint of consumers.yaml:

No results with a severity of 'error' found!

and for consumers-bad.yaml

 1:1  error  check-only-consumers  Ensure only consumer entities in state files

✖ 1 problem (1 error, 0 warnings, 0 infos, 0 hints)

the vacuum CLI reports no issues on either file:

INFO: Linting file 'consumers.yaml' against 1 rules:

Linting passed, A perfect score! well done!%

or

INFO: Linting file 'consumers-bad.yaml' against 1 rules:

Linting passed, A perfect score! well done!%