Right, after dropping into #Puppet-dev and hashing the issue out with Andy (zaphod42), have managed to find a fix...
The failures I was seeing on 1.9.3 were due to a difference in how asadmin.rb:6 was being interpreted between Ruby 1.8.7 and 1.9.3, as Andy outlined: 17:11 <+zaphod42> fatmcgav: figured it out 17:12 <+zaphod42> 1.8.7 and 1.9.3 deal with that line differently 17:12 <+zaphod42> on 1.8.7 defined?@resource[:dashost] && !@resource[:dashost].nil? turns into nil 17:12 <+zaphod42> on 1.9.3 defined?@resource[:dashost] && !@resource[:dashost].nil? turns into "expression" He also suggested a more elegant way of handling this scenario, by using '@resource.parameters.include?' [1] to check if the param is present. So a quick tweak, and it appears to be working as expected : D So again, a massive thanks to Andy for persisting. Regards Gavin [1] https://github.com/fatmcgav/puppet-glassfish/commit/ea702df4ec111c81b55a4b927191673faddbe270 On Wednesday, 7 May 2014 14:47:48 UTC+1, Gavin Williams wrote: > > Further to the below, it looks like I appear to be getting differing > behaviour in various environments :( > > TravisCI passes on Ruby 1.8.7 [1] but fails on Ruby 1.9.3 [2]. > Running the tests on a local CentOS 6 box with RVM, I get failures with > both versions of Ruby... So not sure why TravisCI can pass 1.8.7, but > locally I cant :'( > > Adding in some additional debug logging, I can see that > 'defined?(@resource[:dashost]' returns true with a 'method' response. > However whenever I try and evaluate the value of 'resource[:dashost]', I > get the 'Invalid parameter dashost(:dashost)' error. > > Any ideas if it's possible to have 'optional' params that aren't defined > on all types that use a provider? > > Cheers > Gavin > > [1] https://travis-ci.org/fatmcgav/puppet-glassfish/jobs/24564901 > [2] https://travis-ci.org/fatmcgav/puppet-glassfish/jobs/24564908 > > On Tuesday, 6 May 2014 17:40:09 UTC+1, Gavin Williams wrote: >> >> Afternoon all, >> >> I'm trying to update my Glassfish module [1] to support some additional >> functionality, such as clustering. >> >> I've done most of the code changes, and they all seem to work fine from a >> usage POV. However several of my tests [2] are failing with the following >> error: >> 1) Puppet::Type::Application::ProviderAsadmin when asking exists? >> should return true if resource is present >> Failure/Error: application.provider.should be_exists >> Puppet::Error: >> Invalid parameter dashost(:dashost) >> # ./lib/puppet/provider/asadmin.rb:6:in `asadmin_exec' >> # ./lib/puppet/provider/application/asadmin.rb:22:in `exists?' >> # ./spec/unit/puppet/provider/application/asadmin_spec.rb:34:in >> `block (3 levels) in <top (required)>' >> >> I suspect this is related to some changes I made to >> Puppet::Provider::Asadmin [3] in order to support running asadmin commands >> against a host other than localhost. >> Effectively, I'm just trying to only use the 'dashost' resource value if >> it's defined and not null. >> This works fine for actual usage, but seems to fail horribly for RSpec >> testing :( >> >> Cheers in advance for any replies. >> >> Regards >> Gavin >> >> [1] https://github.com/fatmcgav/puppet-glassfish/tree/develop >> [2] >> https://travis-ci.org/fatmcgav/puppet-glassfish/jobs/24549377#L505-L511 >> [3] >> https://github.com/fatmcgav/puppet-glassfish/blob/develop/lib/puppet/provider/asadmin.rb#L6-L8 >> > -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/3157c546-9d88-46bb-8303-9c48ec29e9ce%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
