file_line supports adding lines after a match, but there are use cases when
having "before" would be useful. For example, in Debian-based OS's, the last
line of /etc/rc.local is "exit 0" it's an incredible pain to deal with
that scenario today.
This commit adds a 'before' parameter to the file_line type, and implements
it for the ruby provider.
rspec-puppet matchers are defined for tests which exist in
spec/functions, but the function unit tests lived in
spec/unit/puppet/parser/functions. This moves them to the correct place
for using rspec-puppet
Previously this was incorrectly handling facts that were of the form
foo=1+1=2 due to the ='s in the actual fact contents. Fix this and
add tests to try and prevent regressions.
This test attempts to emulate various versions of facter, but is
still dependent on the version of facter it is running against. The
immediate symptom was that the test breaks with facter 2.0.1 because
it adds another external facts search directory.
I tried a couple ways to stub this but allowing it to pretend
to run against one set of facters, while actually running against
one real facter (which might itself be one of several versions)
eluded me.
So this patch just removes the test.
Without this patch one can not specify package resource specific
parameters. All the ensure_packages() function does it makes sure
the named packages are installed. This patch allows one to pass
default as a second argument and allow greater flexibility on
packages installations.
Use case like the following are now possible :
* ensure_packages(['r10k', 'serverspec'], {'provider' => 'gem'})
* ensure_packages(['ntp'], {'require' => 'Exec[foobar]'})
This work updates a number of Gems to the latest versions (rspec,
rspec-puppet), and updates and tweaks a bunch of tests to work
with the updated gems.
Instead of modifying the first paramater of deep_merge due to the
use of the merge! function, instead use merge to return a copy of
the merged object. This allows one to continue to use the original
first parameter after the call to deep_merge.
I expect a function called "is_numeric" or "is_integer" to check if a
variable is an integer or a number even if the variable passed by isn't
a string nor a number at all. Otherwise we should call them
is_string_a_number and is_string_an_integer and we have then to remove
the check for .is_a?(Number) and .is_a?(FixNum)
now checking also if it is a hex or octal number
improved/corrected checking for integer
* checking against Integer instead of Fixnum so that
also Bignum is matching
* now .is_a? Integer is done first so this is quiet fast
Now many types of numerics are recognized.
1. Float/Integer values (signed or unsigned, with exponent or without)
2. octal and hex check
3. except hex numbers and the "0." in a float lower than 1 can be prefixed
with a '0'.
whitespaces shouldn't be allowed as prefix/suffix
string representation of numbers should not contain any type of
whitespace.. the user is responsible to clean a string before checking
it..
fix documentation and added more checks
tried to be 99.9% backward compatible
* for now the decission is post poned if hex and octal numbers
should be allowed or not (is_numeric)
* native Bignum is now also a valid integer class
fix problem with old 1.8 ruby and Hash.to_s/Array.to_s
In ruby < 1.9 array and hashes would be recognized as numeric
if they have a special format:
1.8:
[1,2,3,4].to_s = "1234"
{1=>2}.to_s = "12"
1.9:
[1,2,3,4].to_s = "[1, 2, 3, 4]"
{1=>2}.to_s = "{1=>2}"
The previous behavior of the tests checked the behavior of the
underlying functions library when called with no arguments; this commit
updates the tests to conform to the functions API and test what happens
when a function is called with no args.
Facter 1.7.4 changed how it decides on what directory to look in for
facts.d based on the user it is running as. This stubs out that bit of
code to make it think it is running as root.
Issue #20200 notes that the merge function does not
support nested hashes.
To prevent unintended side effects with changing merge,
add a deep_merge function instead.