metadata-json-lint icon indicating copy to clipboard operation
metadata-json-lint copied to clipboard

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

Open timidri opened this issue 4 years ago • 2 comments

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

  • Installation method: native packages
  • PDK version 2.1
  • OS: MacOS Catalina / Ubuntu 18.04

timidri avatar Sep 21 '21 11:09 timidri

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?

bastelfreak avatar Sep 21 '21 12:09 bastelfreak

@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).

timidri avatar Sep 21 '21 13:09 timidri