puppetlabs-stdlib/spec/functions/rstrip_spec.rb
Mark Chappell e2d7f3bb89 (MODULES-707) chomp() fails because generate() no longer returns a string
We need to use

  unless value.is_a?(String) || value.is_a?(Array)

rather than

  klass = value.class
  unless [String, Array].include?(klass)

because the klass version enforces type checking which is too strict, and does
not allow us to accept objects wich have extended String (or Array).

For example, generate() function now returns Puppet::Util::Execution::ProcessOutput
which is just a very simple extension of String.  While this in it's self was
not intentional (PUP-2306) it is not unreasonable to cope with objects which
extend Strings
2014-09-22 19:49:50 +02:00

33 lines
896 B
Ruby
Executable file

#! /usr/bin/env ruby -S rspec
require 'spec_helper'
describe "the rstrip function" do
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
it "should exist" do
expect(Puppet::Parser::Functions.function("rstrip")).to eq("function_rstrip")
end
it "should raise a ParseError if there is less than 1 arguments" do
expect { scope.function_rstrip([]) }.to( raise_error(Puppet::ParseError))
end
it "should rstrip a string" do
result = scope.function_rstrip(["asdf "])
expect(result).to(eq('asdf'))
end
it "should rstrip each element in an array" do
result = scope.function_rstrip([["a ","b ", "c "]])
expect(result).to(eq(['a','b','c']))
end
it "should accept objects which extend String" do
class AlsoString < String
end
value = AlsoString.new('asdf ')
result = scope.function_rstrip([value])
result.should(eq('asdf'))
end
end