puppetlabs / puppetlabs-stdlib

Puppet Labs Standard Library module

Home Page:http://forge.puppetlabs.com/puppetlabs/stdlib

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

bgibson710 opened this issue · comments

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

  • RedHat Enterprise Linux 8
  • Puppet 8.3.0

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]

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?