rodjek / rspec-puppet

RSpec tests for your Puppet manifests
http://rspec-puppet.com
MIT License
364 stars 203 forks source link

can't modify frozen String: "false" #789

Closed damluk closed 3 years ago

damluk commented 4 years ago

On ubuntu 20.04, ruby 2.7 I get errors all over the place similar to the following:

     FrozenError:
       can't modify frozen String: "false"
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:443:in `gsub!'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:443:in `escape_special_chars'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:343:in `str_from_value'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:351:in `block in param_str_from_hash'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:350:in `each'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:350:in `collect'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:350:in `param_str_from_hash'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:280:in `param_str'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:155:in `test_manifest'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:21:in `build_code'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:91:in `block in load_catalogue'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:376:in `with_vardir'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:83:in `load_catalogue'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/example/class_example_group.rb:7:in `catalogue'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/support.rb:12:in `block in subject'
     # ./vendor/ruby/2.7.0/gems/rspec-puppet-2.7.8/lib/rspec-puppet/matchers/create_generic.rb:84:in `matches?'
     # ./spec/classes/dns_init_spec.rb:200:in `block (4 levels) in <top (required)>'

Ruby 2.5:

irb(main):001:0> false.inspect.frozen?
=> false

Ruby 2.7:

irb(main):001:0> false.inspect.frozen?
=> true
ekohl commented 4 years ago

This was merged almost a month ago in #791. @rodjek could this be released as a gem?

raphink commented 4 years ago

As noted in https://github.com/rodjek/rspec-puppet/pull/791#issuecomment-660003653, this made it into 2.7.9 but was withdrawn in 2.7.10, so 2.7.10 is broken again...

bastelfreak commented 3 years ago

@rodjek @scotje @binford2k could someone please do a new release to get this fix out? Otherwise testing on Ruby 2.7, which will also be in Puppet 7?, is not possible.

scotje commented 3 years ago

We are working on a 2.8.0 release that should be out early next week that will include the fix for this.

DavidS commented 3 years ago

The fix for this has been released as part of v2.8.0