voxpupuli / metadata-json-lint

Tool to check the validity of Puppet metadata.json files
Apache License 2.0
29 stars 27 forks source link

pdk validate does not flag task metadata files with invalid JSON escape sequence #119

Open timidri opened 3 years ago

timidri commented 3 years ago

Describe the bug When a task metadata json file contains an invalid escape sequence, JSON linters (such as jq and Puppet Forge) raise an error but pdk validate does not flag that issue.

To Reproduce Consider this task metadata test.json:

{
  "puppet_task_version": 1,
  "supports_noop": false,
  "description": "A description with an invalid \( escape sequence",
  "parameters": {
  }
}

pdk validate task passes normally but jq flags a problem:

cat test.json | jq
parse error: Invalid escape at line 4, column 67

Expected behavior pdk validate raises the same error as jq.

Additional context

bastelfreak commented 3 years ago

I guess JSON.parse is used here: https://github.com/voxpupuli/metadata-json-lint/blob/master/lib/metadata_json_lint.rb#L85 are you able to provide a fix for this? Or add a test that fails?

timidri commented 3 years ago

@bastelfreak I've raised a PR: https://github.com/voxpupuli/metadata-json-lint/pull/120 adding an acceptance test which should fail on invalid escape character. Though I am confused since my use case is a task metadata file, not a module metadata file. Hence the test does fail but due to invalid schema (it expects a module metadata file).