Commit graph

122 commits

Author SHA1 Message Date
Nigel Gibbs
4cbe846750 (MODULES-2410) Add new functions dos2unix and unix2dos 2015-08-14 13:30:01 +01:00
Hunter Haugen
e815da5962 Merge pull request #483 from nibalizer/load_metadata_json
Add load_metadata_json function
2015-07-31 14:12:56 -07:00
Spencer Krum
f411ee7119 Add load_metadata_json function
This function loads the metadata.json into a puppet variable. This enables a number of neat things such as:

* Which version of the module am I using? 2.x? 3.x?
* Which author of the module am I using? puppetlabs? example42?
2015-07-30 15:51:54 -07:00
gcmalloc
5c79107863 adding support for hash in the size function 2015-07-22 12:11:52 +02:00
Alexander Fisher
c64ecfb0c3 Add validate_slength's optional 3rd arg to README 2015-07-09 18:13:19 +01:00
David Schmitt
c9e093f8d3 (maint) getvar: update spec to match implementation 2015-06-12 14:42:09 +01:00
Hunter Haugen
ad4ca4cc34 Fix time() on 1.8.7
The time() function takes an argument of a timezone, and always returns
time in epoch format. The epoch format is the number of seconds that
have elapsed since January 1, 1970 (midnight UTC/GMT), not counting leap
seconds. This means that it is universally the same regardless of
timezones.

I don't know what the timezone argument is supposed to do, and it is not
documented. So lets just make 1.8.7 work like > 1.8.7
2015-06-04 09:40:52 -07:00
Eli Young
b436216fe6 fqdn_rotate: Add tests for custom seeds 2015-06-01 17:03:42 -07:00
Eli Young
601f681787 fqdn_rotate: Don't use the value itself as part of the random seed
Previously, the random number generator was seeded with the array or
string to be rotated in addition to any values specifically provided for
seeding. This behavior is potentially insecure in that it allows an
attacker who can modify the source data to choose the post-shuffle
order.
2015-06-01 16:19:07 -07:00
David Schmitt
f3e79ddcd5 Convert tests to use plain rspec-puppet
Tests in the new style produces the following documentation output:

abs
  should not eq nil
  should run abs() and raise an Puppet::ParseError
  should run abs(-34) and return 34
  should run abs("-34") and return 34
  should run abs(34) and return 34
  should run abs("34") and return 34
2015-06-01 18:02:22 +01:00
David Schmitt
cf9f7a6b7e validate_integer, validate_numeric: explicitely reject hashes in arrays
Without this patch, Ruby 1.8's Hash#to_s behaviour causes [{1=>2}] to be
treated as "12" when validating values.
2015-05-27 20:05:05 +01:00
Hunter Haugen
732f7e8b35 Remove all the pops stuff
The rspec-puppet matchers don't allow to check the return types, but
this is a pretty rare thing to need to do anyway, so probably not worth
patching rspec-puppet
2015-05-12 15:03:27 -07:00
David Schmitt
f49eb6b8e2 range(): fix TypeError(can't convert nil into Integer) when using range syntax 2015-05-06 10:13:27 +01:00
David Schmitt
a3016c45c5 specs: move function specs to where rspec-puppet expects them 2015-05-05 13:27:46 +01:00
David Schmitt
b664fec30f specs: loosen certain error expectations to make tests pass on future parser 2015-04-23 16:40:53 -07:00
Morgan Haskel
8a1d1e2f34 Merge pull request #314 from amateo/feature/loadyaml_check_file
Check if file exists before loading with loadyaml. If not, return nil
2015-04-16 10:48:10 -07:00
Angel L. Mateo
ac24e7acc7 test case for when the file does not exist 2015-04-13 09:27:03 +02:00
Bryan Jen
601e2e2574 Modules-2474: Only runs enhanced salts functional test on systems that support it. 2015-04-10 11:38:15 -07:00
David Schmitt
afec0ab981 Merge pull request #425 from jeffcoat/validate_augeas_spec
Fix off-by-one error in validate_augeas_spec.rb that was causing rspec failure

Even without the gem installed always, this is helpful to avoid errors should augeas be enabled/installed due to something else.
2015-04-10 13:28:48 +01:00
Hunter Haugen
8fba5c058b Merge pull request #405 from elyscape/feature/fqdn_rand_strings
(MODULES-1715) Add FQDN-based random string generator
2015-04-09 10:45:38 -07:00
Eli Young
23be4020dd (MODULES-1737) Add pw_hash() function 2015-04-05 17:21:17 -07:00
Eli Young
a82266c256 (MODULES-1715) Add fqdn_rand string generators 2015-03-31 17:33:04 -07:00
Mark Jeffcoat
3fec51ac65 Fix off-by-one error in validate_augeas_spec.rb that was causing rspec failure. 2015-03-10 17:43:51 -05:00
Rod Montgomery
ee13438d2a If present, top-level domain must be alphabetic
See RFC 1123, Section 2.1
http://tools.ietf.org/html/rfc1123#section-2
2015-03-05 21:51:12 -06:00
TP Honey
bf8e5b0573 Merge pull request #422 from cyberious/assert_private
Assert private
2015-03-05 19:15:41 +00:00
Travis Fields
4a68b224c4 Add private function back and forward to assert_private with deprecation warning 2015-03-05 11:12:51 -08:00
Hunter Haugen
668b3c31b5 Merge pull request #369 from rfugina/dirname_typecheck
Dirname typecheck
2015-03-05 11:00:36 -08:00
Franz Pletz
56d815bcfc Rename private() to assert_private()
As mentioned in #270, private is a reserved keyword in the future parser
which is to be released with Puppet 4. As it stands, this function is
not useable with the future parser so it needs to renamed.

This is a breaking change.
2015-03-05 10:59:31 -08:00
Hunter Haugen
41965fd2c9 Merge pull request #375 from poikilotherm/feature/master/validate_integer_and_numeric
(MODULES-560) Add new functions validate_numeric() and validate_integer().
2015-03-05 10:57:43 -08:00
Stefan Goethals
0236cd51bc Add support for hashes in the prefix function
Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2015-03-03 16:20:55 -08:00
Bryon Roché
41baef8502 URI.escape for the array case was incorrect.
The previous commit to uriescape() changed the implementation to use the ruby default escape list for URI.escape(), but did not change the call triggered when uriescape() was called on an array, triggering ruby errors.
2015-03-03 16:05:47 -08:00
Morgan Haskel
055083c117 Merge pull request #407 from adamcrews/ceiling_function
Add a ceiling function to complement the floor function.
2015-03-03 15:59:06 -08:00
Travis Fields
85e81f9bdf Loosen the restrictions of upcase and allow for recursion of the objects and only worry if the object responds to upcase 2015-03-02 10:45:43 -08:00
Travis Fields
7021b1f55c Add Hash to upcase 2015-02-25 11:39:27 -08:00
Sean Millichamp
1321d586a8 (MODULES-1771) Don't modify input to is_domain_name()
Fix is_domain_name() so it dup's its incoming argument
to avoid changing the original with a later chomp!
2015-02-14 10:49:26 -05:00
Eli Young
84f866ffaf (MODULES-1738) Don't modify global seed in fqdn_rotate()
As per puppetlabs/puppet@292233c, this leaves the global seed in a
deterministic state, which is bad. Puppet::Util.deterministic_rand()
exists to avoid running into this issue, but is only present starting in
Puppet 3.2.0.
2015-02-12 14:04:47 -08:00
Adam Crews
53b1802a92 Add a ceiling function to complement the floor function. 2015-02-01 22:46:16 -08:00
Hunter Haugen
7c8ae311ca (MODULES-1473) Deprecate type() function for new parser
The `type()` function will cease to work on the new parser because 'type'
is a reserved keyword. The `type3x()` function may be used to continue
similar functionality, but will be deprecated in favor of the built-in
typing system.

The `type_of()` function has been included to introspect types in the
new parser.
2015-01-07 16:40:06 -08:00
Travis Fields
8ec6f8dbfd MODULES-1606 add ability to pass array to delete for items to delete 2014-12-19 10:26:01 -08:00
Peter Souter
cc8b147b5d (MODULES-1582) Specs for the new % placeholder
These specs are pretty much the same as the originals, but now check that the output has the correct replacement for file location
2014-12-18 23:08:33 +00:00
Morgan Haskel
696c89de99 Merge pull request #372 from poikilotherm/feature/master/validate_absolute_path_allow_arrays
Allow array of pathes in validate_absolute_path
2014-12-17 14:19:30 -08:00
Rob Fugina
2a3babc348 Added type checks for dirname(), and additional tests 2014-12-17 12:55:48 -06:00
Oliver Bertuch
260c1f4b92 Add new functions validate_numeric() and validate_integer(). 2014-12-04 22:33:15 +01:00
Peter Souter
368c97f080 (MODULES-444) - Check for accepting > 2 args 2014-12-04 14:27:55 +00:00
Peter Souter
7a1c4a6d9e (MODULES-444) Change test to > 2 arguments
Also add extra test for just 1 argument
2014-12-04 14:27:38 +00:00
Peter Souter
ed192a0464 (MODULES-444) Add specs for new behaviour
`concat` can now take multiple arguments
2014-12-04 14:12:55 +00:00
Oliver Bertuch
89995e4db0 Allow array of pathes in validate_absolute_path 2014-11-25 12:45:23 +01:00
Hunter Haugen
fb42396c75 Merge pull request #319 from Spredzy/member_array_in_array
(MODULES-1329) Allow member to look for array
2014-11-13 12:27:14 -08:00
Yanis Guenane
c9f906f803 (MODULES-1329) Allow member function to look for array
Currently, the member function allows one to only find if a variable
is part of an array. Sometimes it is useful to find if an array is part
of a bigger array for validation purpose.
2014-11-12 14:40:34 -05:00
Erik Dalén
af0a2779cb Add range tests for numeric with step and mixed arguments 2014-11-12 16:52:36 +01:00
Erik Dalén
ce995e15d5 Make the range function work with integers
This is needed for the future parser which actually treats numbers as
numbers and strings as strings. With this patch you can use range(1,5)
instead of having to quote them like range('1','5').
2014-11-12 16:02:05 +01:00
Travis Fields
406e9dbda2 Merge pull request #343 from zacharyalexstern/fix_to_bytes
Added correct converstions for PB and EB.
2014-11-07 13:42:48 -08:00
Zachary Alex Stern
9295d0d5ca Added correct converstions for PB and EB.
* We were converting Exabytes to bytes as Petabytes.
 * Updated tests to cover ever unit.
 * Added note that we're going by the old, inaccurate definitions of
   Kilobytes, Megabytes, etc, in that we treat them as powers of 2.
2014-10-28 13:14:06 -07:00
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
Spencer Krum
a6ad0af08e Introduce test for array destruction
It was discovered that the concat array modifies the arrays passed to it
as an argument as a side effect. This test will ensure that doesn't
happen again.
2014-07-31 11:23:34 -07:00
Raphaël Pinson
2062f9734b Add private() function 2014-06-11 16:35:32 +02:00
Ashley Penney
6287a200af Convert specs to RSpec 2.99.0 syntax with Transpec
This conversion is done by Transpec 2.2.1 with the following command:
    transpec spec/functions

* 345 conversions
    from: obj.should
      to: expect(obj).to

* 122 conversions
    from: == expected
      to: eq(expected)

* 85 conversions
    from: lambda { }.should
      to: expect { }.to

* 22 conversions
    from: be_true
      to: be_truthy

* 16 conversions
    from: be_false
      to: be_falsey

* 11 conversions
    from: pending
      to: skip

* 9 conversions
    from: it { should ... }
      to: it { is_expected.to ... }

* 5 conversions
    from: =~ [1, 2]
      to: match_array([1, 2])

* 2 conversions
    from: =~ /pattern/
      to: match(/pattern/)

* 2 conversions
    from: obj.should_not
      to: expect(obj).not_to

For more details: https://github.com/yujinakayama/transpec#supported-conversions
2014-06-04 14:38:37 -04:00
Hunter Haugen
96e43e69d8 Move unit tests to spec/functions
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
2014-05-08 10:47:24 -07:00
Hunter Haugen
78982c9238 Move the 4 misplaced tests 2014-05-07 15:00:30 -07:00
Andrea Veri
09f892023c Add the missing shebangs and fix the wrong ones for rpmlint to stop complaining loudly 2014-05-07 11:49:25 +02:00
Yanis Guenane
d9b5e912bb (MODULES-603) Add defaults arguments to ensure_packages()
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]'})
2014-03-30 18:47:36 -04:00
Ashley Penney
3854e076cc Numerous changes to update testing gems.
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.
2014-03-08 00:42:51 +00:00
Adrien Thebo
75341f01d9 (maint) Update ensure_package specs to confirm expected behavior
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.
2014-01-15 11:04:03 -08:00
Tomas Doran
735db82bef Allow a single argument, rather than an array 2014-01-15 11:03:33 -08:00
Jeff McCune
806430224a (maint) Fix failing spec test with Puppet 3.3.0-rc2
Without this patch the stdlib spec tests are failing against recent
versions of Puppet.  The root cause of this problem is a change in the
behavior of create_resources in Puppet 6baa57b.  The change in behavior
caused the :name key to be omitted from the hash returned by
Puppet::Parser::Resource#to_hash which in turn is causing the test
failure.

This patch addresses the problem by updating the test to match the
description of the example.  Only the attribute :ensure is checked
instead of the full hash itself.
2013-08-29 13:02:31 -07:00
Alex Cline
b33cc24a3c Refactor ensure_resource expectations
This splits out the ensure_resource expectations into separate
blocks for clarity.  Per adrienthebo's recommendation.
2013-05-06 15:30:35 -04:00
Alex Cline
e08734af5a (#20548) Allow an array of resource titles to be passed into the ensure_resource function
This patch allows an array of resource titles to be passed into
the ensure_resource function.  Each item in the array will be
checked for existence and will be created if it doesn't already
exist.
2013-05-03 15:47:27 -04:00
Jaka Hudoklin
20e0e07090 Add getparam function to get defined resource parameters
As far as i know there's no other puppet-dsl-like way to get parameter of
defined resource, so that's why i implemented getparam function, which takes
resource reference and parameter name and returns parameter value.

    Here's another example why this function is really useful:

    define config($path, $config_param1, $config_param2) { }

    define example_resource($config) {
        $path = getparam($config, "path")

        notice("Path is $path")
    }

    define example_resource2($example_resource, $config = getparam($example_resource, "config")) {
        $config_param1 = getparam($config, "config_param1")

        notice("Config parameter is $config_param1")
    }

    define example_resource3($example_resource, $config = getparam($example_resource, "config")) {
        $config_param2 = getparam($config, "config_param2")

        notice("Config parameter is $config_param2")
    }

    class test_getparam {

        config { "config_instance":
            path => "/some/config/path",
            config_param1 => "someconfigtext1",
            config_param2 => "someconfigtext2",
        }

        example_resource { "example_resource_instance":
            config => Config["config_instance"]
        }

        example_resource2 { "example_resource_instance":
            example_resource => Example_resource["example_resource_instance"]
        }

        example_resource3 { "example_resource_instance":
            example_resource => Example_resource2["example_resource_instance"]
        }
    }

    class { "test_getparam": }
2013-01-09 17:51:12 -08:00
Jeff McCune
616b4521f4 Add example behaviors for ensure_packages() function
Without this patch the ensure_packages() function has no rspec behavior
examples.  This patch fixes the problem by filling out a spec file with
expected behaviors I could think of.
2012-11-27 16:16:28 -08:00
Dan Bode
444393bf6b re-formatting
This commit refactors to ensure 80 character lines.
2012-10-25 10:54:33 -07:00
Dan Bode
4f8b133917 Handle undef for parameter argument
This commit adds better handling of the case where
undef is passed as the parameter value.

This works by converting '' into []
2012-10-25 10:54:33 -07:00
Dan Bode
a0cb8cdee4 Add function ensure_resource and defined_with_params
This commit adds 2 new functions with unit tests.

defined_with_params works similarily to puppet's defined
function, except it allows you to also specify a hash of
params. defined_with_params will return true if a resource
also exists that matches the specified type/title (just like
with defined) as well as all of the specified params.

ensure_resource is a function that basically combines defined_with_params
with create_resources to conditionally create resources only if the
specified resource (title, type, params) does not already exist.

These functions are created to serve as an alternative to using
defined as follows:

    if ! defined(Package['some_package']) {
      package { 'some_package': ensure => present,
    }

The issue with this usage is that there is no guarentee about
what parameters were set in the previous definition of the package
that made its way into the catalog.

ensure_resource could be used instead, as:

    ensure_resource('package', 'some_package', { 'ensure' => 'present' })

This will creat the package resources only if another resource does
not exist with the specified parameters.
2012-10-25 10:54:33 -07:00