puppetlabs / puppetlabs-stdlib

Puppet Labs Standard Library module
http://forge.puppetlabs.com/puppetlabs/stdlib
Apache License 2.0
348 stars 580 forks source link

loadjson returns StringIO data which doesn't work in Puppet 8 #1414

Open bgibson710 opened 11 months ago

bgibson710 commented 11 months ago

Describe the Bug

When using loadjson in a puppet manifest with small json files, the returning Data values come in as a StringIO instead of String value which Puppet 8 can't cast properly.

Expected Behavior

Return a hash of Strings.

Steps to Reproduce

Steps to reproduce the behavior:

  1. Use loadjson as documented to pull in a json file that you want to convert to hash.
  2. Run puppet agent and see the error.

Environment

Additional Context

I was able to fix this by editing the loadjson ruby code lines 56 and 63 changing from JSON.parse(content) || args[1] to JSON.parse(content.string) || args[1]

ekohl commented 11 months ago

It looks like the tests really stub out the crucial parts which is JSON.parse and I really don't know why. What is really is the point of testing it then?