diff --git a/lib/rspec-puppet/example/class_example_group.rb b/lib/rspec-puppet/example/class_example_group.rb index bc137b85..95917a1c 100644 --- a/lib/rspec-puppet/example/class_example_group.rb +++ b/lib/rspec-puppet/example/class_example_group.rb @@ -43,8 +43,11 @@ def catalogue if !self.respond_to?(:params) || params == {} code = import_str + "include #{klass_name}" else - code = import_str + 'class' + " { \"" + klass_name + "\": " + params.keys.map { |r| "#{r.to_s} => #{params[r].inspect}" - }.join(',' ) + " }" + param_str = params.keys.map { |r| + param_val = escape_special_chars(params[r].inspect) + "#{r.to_s} => #{param_val}" + }.join(',') + code = import_str + 'class' + " { \"" + klass_name + "\": " + param_str + " }" end code = pre_cond + "\n" + code diff --git a/lib/rspec-puppet/example/define_example_group.rb b/lib/rspec-puppet/example/define_example_group.rb index 901be1d7..2043520a 100644 --- a/lib/rspec-puppet/example/define_example_group.rb +++ b/lib/rspec-puppet/example/define_example_group.rb @@ -32,7 +32,8 @@ def catalogue if self.respond_to? :params param_str = params.keys.map { |r| - "#{r.to_s} => #{params[r].inspect}" + param_val = escape_special_chars(params[r].inspect) + "#{r.to_s} => #{param_val}" }.join(', ') else param_str = "" diff --git a/lib/rspec-puppet/support.rb b/lib/rspec-puppet/support.rb index 917a917b..e7f2644e 100644 --- a/lib/rspec-puppet/support.rb +++ b/lib/rspec-puppet/support.rb @@ -29,5 +29,10 @@ def munge_facts(facts) facts.keys.each { |key| output[key.to_s] = facts[key] } output end + + def escape_special_chars(string) + string.gsub!(/\$/, "\\$") + string + end end end