APIDevTools / swagger-cli

Swagger 2.0 and OpenAPI 3.0 command-line tool
https://apitools.dev/swagger-cli
MIT License
515 stars 69 forks source link

incorrect line numbers reported by validator when dupes are found #2

Open ubyjvovk opened 8 years ago

ubyjvovk commented 8 years ago

Given the following yml:

swagger: '2.0'

definitions:
  Delivery:
    properties:
      deliveryId:
        type: string

  FeedbackMessage:
    properties:
      consumerEmail:
        type: string
      feedbackMessage:
        type: string

  Delivery:
    properties:
      deliveryId:
        type: string

validator will give incorrect line number for found duplicate entries:

~/tt$ swagger validate test.yaml 
SyntaxError: Error parsing "/home/d/tt/test.yaml" 
duplicated mapping key at line 20, column 1:

    ^
    at Function.ono [as syntax] (/usr/lib/node_modules/swagger-cli/node_modules/ono/lib/index.js:67:20)
    at parse (/usr/lib/node_modules/swagger-cli/node_modules/json-schema-ref-parser/lib/parse.js:47:17)
    at /usr/lib/node_modules/swagger-cli/node_modules/json-schema-ref-parser/lib/read.js:70:23
    at lib$es6$promise$$internal$$tryCatch (/usr/lib/node_modules/swagger-cli/node_modules/es6-promise/dist/es6-promise.js:326:16)
    at lib$es6$promise$$internal$$invokeCallback (/usr/lib/node_modules/swagger-cli/node_modules/es6-promise/dist/es6-promise.js:338:17)
    at lib$es6$promise$$internal$$publish (/usr/lib/node_modules/swagger-cli/node_modules/es6-promise/dist/es6-promise.js:309:11)
    at lib$es6$promise$asap$$flush (/usr/lib/node_modules/swagger-cli/node_modules/es6-promise/dist/es6-promise.js:120:9)
    at process._tickCallback (node.js:415:13) 

YAMLException: duplicated mapping key at line 20, column 1:

    ^
    at generateError (/usr/lib/node_modules/swagger-cli/node_modules/js-yaml/lib/js-yaml/loader.js:162:10)
    at throwError (/usr/lib/node_modules/swagger-cli/node_modules/js-yaml/lib/js-yaml/loader.js:168:9)
    at storeMappingPair (/usr/lib/node_modules/swagger-cli/node_modules/js-yaml/lib/js-yaml/loader.js:305:7)
    at readBlockMapping (/usr/lib/node_modules/swagger-cli/node_modules/js-yaml/lib/js-yaml/loader.js:1065:9)
    at composeNode (/usr/lib/node_modules/swagger-cli/node_modules/js-yaml/lib/js-yaml/loader.js:1326:12)
    at readBlockMapping (/usr/lib/node_modules/swagger-cli/node_modules/js-yaml/lib/js-yaml/loader.js:1056:11)
    at composeNode (/usr/lib/node_modules/swagger-cli/node_modules/js-yaml/lib/js-yaml/loader.js:1326:12)
    at readDocument (/usr/lib/node_modules/swagger-cli/node_modules/js-yaml/lib/js-yaml/loader.js:1488:3)
    at loadDocuments (/usr/lib/node_modules/swagger-cli/node_modules/js-yaml/lib/js-yaml/loader.js:1544:5)
    at load (/usr/lib/node_modules/swagger-cli/node_modules/js-yaml/lib/js-yaml/loader.js:1561:19)