puppet 0.24.6 → 0.24.7
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +115 -0
- data/Rakefile +43 -14
- data/bin/puppetca +6 -5
- data/bin/puppetdoc +109 -15
- data/bin/ralsh +3 -1
- data/conf/redhat/puppet.spec +74 -48
- data/examples/mcx_dock_absent.pp +4 -0
- data/examples/mcx_dock_default.pp +118 -0
- data/examples/mcx_dock_full.pp +125 -0
- data/examples/mcx_dock_invalid.pp +9 -0
- data/examples/mcx_nogroup.pp +118 -0
- data/examples/mcx_notexists_absent.pp +4 -0
- data/ext/emacs/puppet-mode.el +1 -1
- data/lib/puppet.rb +1 -1
- data/lib/puppet/external/nagios/base.rb +114 -71
- data/lib/puppet/feature/base.rb +6 -0
- data/lib/puppet/indirector/yaml.rb +12 -3
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/network/client/master.rb +1 -1
- data/lib/puppet/network/xmlrpc/client.rb +3 -1
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast.rb +15 -0
- data/lib/puppet/parser/ast/astarray.rb +1 -2
- data/lib/puppet/parser/ast/casestatement.rb +2 -0
- data/lib/puppet/parser/ast/collection.rb +2 -0
- data/lib/puppet/parser/ast/comparison_operator.rb +4 -0
- data/lib/puppet/parser/ast/definition.rb +2 -0
- data/lib/puppet/parser/ast/else.rb +3 -0
- data/lib/puppet/parser/ast/function.rb +19 -12
- data/lib/puppet/parser/ast/hostclass.rb +9 -1
- data/lib/puppet/parser/ast/ifstatement.rb +3 -0
- data/lib/puppet/parser/ast/node.rb +3 -0
- data/lib/puppet/parser/ast/resource.rb +3 -0
- data/lib/puppet/parser/ast/resource_defaults.rb +2 -0
- data/lib/puppet/parser/ast/resource_override.rb +3 -0
- data/lib/puppet/parser/ast/vardef.rb +3 -0
- data/lib/puppet/parser/functions.rb +14 -0
- data/lib/puppet/parser/functions/inline_template.rb +21 -0
- data/lib/puppet/parser/functions/template.rb +3 -2
- data/lib/puppet/parser/lexer.rb +56 -7
- data/lib/puppet/parser/parser.rb +114 -98
- data/lib/puppet/parser/parser_support.rb +24 -4
- data/lib/puppet/parser/resource/reference.rb +4 -3
- data/lib/puppet/parser/templatewrapper.rb +30 -22
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/list.rb +7 -2
- data/lib/puppet/property/ordered_list.rb +22 -0
- data/lib/puppet/provider/augeas/augeas.rb +189 -0
- data/lib/puppet/provider/computer/computer.rb +22 -0
- data/lib/puppet/provider/confine.rb +4 -1
- data/lib/puppet/provider/confine/variable.rb +13 -2
- data/lib/puppet/provider/confine_collection.rb +4 -1
- data/lib/puppet/provider/confiner.rb +1 -1
- data/lib/puppet/provider/group/directoryservice.rb +6 -3
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/group/ldap.rb +11 -9
- data/lib/puppet/provider/group/netinfo.rb +8 -4
- data/lib/puppet/provider/group/pw.rb +5 -1
- data/lib/puppet/provider/host/netinfo.rb +5 -2
- data/lib/puppet/provider/macauthorization/macauthorization.rb +315 -0
- data/lib/puppet/provider/mcx/mcxcontent.rb +201 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +210 -107
- data/lib/puppet/provider/nameservice/netinfo.rb +7 -2
- data/lib/puppet/provider/package/appdmg.rb +0 -3
- data/lib/puppet/provider/package/apt.rb +6 -0
- data/lib/puppet/provider/package/rpm.rb +2 -0
- data/lib/puppet/provider/package/yum.rb +5 -1
- data/lib/puppet/provider/package/yumhelper.py +9 -0
- data/lib/puppet/provider/service/base.rb +9 -6
- data/lib/puppet/provider/service/daemontools.rb +25 -15
- data/lib/puppet/provider/service/debian.rb +6 -2
- data/lib/puppet/provider/service/freebsd.rb +5 -2
- data/lib/puppet/provider/service/gentoo.rb +6 -3
- data/lib/puppet/provider/service/init.rb +31 -21
- data/lib/puppet/provider/service/launchd.rb +195 -0
- data/lib/puppet/provider/service/redhat.rb +5 -2
- data/lib/puppet/provider/service/runit.rb +30 -20
- data/lib/puppet/provider/service/smf.rb +7 -4
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +21 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/netinfo.rb +9 -3
- data/lib/puppet/provider/user/user_role_add.rb +43 -6
- data/lib/puppet/provider/zfs/solaris.rb +45 -0
- data/lib/puppet/provider/zone/solaris.rb +8 -4
- data/lib/puppet/provider/zpool/solaris.rb +116 -0
- data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
- data/lib/puppet/rails/database/schema.rb +1 -0
- data/lib/puppet/rails/host.rb +4 -0
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reports/tagmail.rb +15 -6
- data/lib/puppet/transaction/change.rb +3 -5
- data/lib/puppet/transportable.rb +1 -0
- data/lib/puppet/type/augeas.rb +155 -0
- data/lib/puppet/type/computer.rb +62 -0
- data/lib/puppet/type/exec.rb +2 -1
- data/lib/puppet/type/file.rb +1 -1
- data/lib/puppet/type/file/ensure.rb +8 -5
- data/lib/puppet/type/file/mode.rb +0 -14
- data/lib/puppet/type/file/owner.rb +32 -64
- data/lib/puppet/type/file/selcontext.rb +3 -8
- data/lib/puppet/type/group.rb +27 -45
- data/lib/puppet/type/k5login.rb +1 -1
- data/lib/puppet/type/macauthorization.rb +141 -0
- data/lib/puppet/type/mcx.rb +115 -0
- data/lib/puppet/type/mount.rb +1 -1
- data/lib/puppet/type/nagios_hostdependency.rb +3 -0
- data/lib/puppet/type/ssh_authorized_key.rb +16 -0
- data/lib/puppet/type/tidy.rb +43 -14
- data/lib/puppet/type/user.rb +25 -1
- data/lib/puppet/type/zfs.rb +51 -0
- data/lib/puppet/type/zone.rb +8 -0
- data/lib/puppet/type/zpool.rb +93 -0
- data/lib/puppet/util.rb +17 -38
- data/lib/puppet/util/file_locking.rb +44 -0
- data/lib/puppet/util/filetype.rb +3 -3
- data/lib/puppet/util/log.rb +1 -16
- data/lib/puppet/util/metric.rb +0 -5
- data/lib/puppet/util/rdoc.rb +85 -0
- data/lib/puppet/util/rdoc/code_objects.rb +219 -0
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +829 -0
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1051 -0
- data/lib/puppet/util/rdoc/parser.rb +437 -0
- data/lib/puppet/util/selinux.rb +135 -63
- data/lib/puppet/util/settings.rb +136 -126
- data/lib/puppet/util/storage.rb +4 -2
- data/spec/Rakefile +91 -0
- data/spec/integration/checksum.rb +47 -0
- data/spec/integration/defaults.rb +47 -0
- data/spec/integration/file_serving/configuration.rb +43 -0
- data/spec/integration/file_serving/content.rb +18 -0
- data/spec/integration/file_serving/metadata.rb +18 -0
- data/spec/integration/indirector/direct_file_server.rb +80 -0
- data/spec/integration/indirector/file_content/file_server.rb +18 -0
- data/spec/integration/indirector/file_metadata/file_server.rb +18 -0
- data/spec/integration/indirector/module_files.rb +57 -0
- data/spec/integration/indirector/node/ldap.rb +15 -0
- data/spec/integration/indirector/rest.rb +464 -0
- data/spec/integration/network/server/mongrel.rb +48 -0
- data/spec/integration/network/server/webrick.rb +48 -0
- data/spec/integration/node.rb +93 -0
- data/spec/integration/node/catalog.rb +54 -0
- data/spec/integration/node/facts.rb +45 -0
- data/spec/integration/provider/package.rb +26 -0
- data/spec/integration/provider/service/init.rb +32 -0
- data/spec/integration/reference/providers.rb +17 -0
- data/spec/integration/reports.rb +14 -0
- data/spec/integration/transaction/report.rb +26 -0
- data/spec/integration/type/package.rb +22 -0
- data/spec/integration/util/file_locking.rb +36 -0
- data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +46 -0
- data/spec/monkey_patches/alias_should_to_must.rb +5 -0
- data/spec/shared_behaviours/file_server_terminus.rb +42 -0
- data/spec/shared_behaviours/file_serving.rb +64 -0
- data/spec/shared_behaviours/memory_terminus.rb +32 -0
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +36 -0
- data/spec/unit/executables/client/certhandler.rb +122 -0
- data/spec/unit/file_serving/configuration.rb +224 -0
- data/spec/unit/file_serving/configuration/parser.rb +135 -0
- data/spec/unit/file_serving/content.rb +71 -0
- data/spec/unit/file_serving/file_base.rb +124 -0
- data/spec/unit/file_serving/fileset.rb +239 -0
- data/spec/unit/file_serving/indirection_hooks.rb +124 -0
- data/spec/unit/file_serving/metadata.rb +187 -0
- data/spec/unit/file_serving/mount.rb +143 -0
- data/spec/unit/file_serving/terminus_helper.rb +76 -0
- data/spec/unit/indirector.rb +152 -0
- data/spec/unit/indirector/catalog/compiler.rb +156 -0
- data/spec/unit/indirector/catalog/yaml.rb +25 -0
- data/spec/unit/indirector/checksum/file.rb +139 -0
- data/spec/unit/indirector/code.rb +33 -0
- data/spec/unit/indirector/direct_file_server.rb +89 -0
- data/spec/unit/indirector/envelope.rb +47 -0
- data/spec/unit/indirector/exec.rb +51 -0
- data/spec/unit/indirector/facts/facter.rb +76 -0
- data/spec/unit/indirector/facts/yaml.rb +26 -0
- data/spec/unit/indirector/file.rb +154 -0
- data/spec/unit/indirector/file_content/file.rb +18 -0
- data/spec/unit/indirector/file_content/file_server.rb +18 -0
- data/spec/unit/indirector/file_content/modules.rb +18 -0
- data/spec/unit/indirector/file_content/rest.rb +11 -0
- data/spec/unit/indirector/file_metadata/file.rb +52 -0
- data/spec/unit/indirector/file_metadata/file_server.rb +18 -0
- data/spec/unit/indirector/file_metadata/modules.rb +42 -0
- data/spec/unit/indirector/file_metadata/rest.rb +9 -0
- data/spec/unit/indirector/file_server.rb +184 -0
- data/spec/unit/indirector/indirection.rb +731 -0
- data/spec/unit/indirector/ldap.rb +143 -0
- data/spec/unit/indirector/memory.rb +29 -0
- data/spec/unit/indirector/module_files.rb +259 -0
- data/spec/unit/indirector/node/exec.rb +69 -0
- data/spec/unit/indirector/node/ldap.rb +424 -0
- data/spec/unit/indirector/node/memory.rb +19 -0
- data/spec/unit/indirector/node/plain.rb +19 -0
- data/spec/unit/indirector/node/rest.rb +13 -0
- data/spec/unit/indirector/node/yaml.rb +25 -0
- data/spec/unit/indirector/plain.rb +29 -0
- data/spec/unit/indirector/report/processor.rb +81 -0
- data/spec/unit/indirector/request.rb +87 -0
- data/spec/unit/indirector/rest.rb +372 -0
- data/spec/unit/indirector/ssl_rsa/file.rb +116 -0
- data/spec/unit/indirector/terminus.rb +245 -0
- data/spec/unit/indirector/yaml.rb +145 -0
- data/spec/unit/module.rb +247 -0
- data/spec/unit/network/client.rb +45 -0
- data/spec/unit/network/client/master.rb +442 -0
- data/spec/unit/network/handler/fileserver.rb +179 -0
- data/spec/unit/network/http.rb +35 -0
- data/spec/unit/network/http/mongrel.rb +117 -0
- data/spec/unit/network/http/mongrel/rest.rb +377 -0
- data/spec/unit/network/http/mongrel/xmlrpc.rb +0 -0
- data/spec/unit/network/http/webrick.rb +127 -0
- data/spec/unit/network/http/webrick/rest.rb +323 -0
- data/spec/unit/network/http/webrick/xmlrpc.rb +0 -0
- data/spec/unit/network/http_pool.rb +238 -0
- data/spec/unit/network/server.rb +316 -0
- data/spec/unit/network/xmlrpc/client.rb +13 -0
- data/spec/unit/node.rb +167 -0
- data/spec/unit/node/catalog.rb +864 -0
- data/spec/unit/node/environment.rb +37 -0
- data/spec/unit/node/facts.rb +44 -0
- data/spec/unit/other/checksum.rb +92 -0
- data/spec/unit/other/pgraph.rb +210 -0
- data/spec/unit/other/transaction.rb +33 -0
- data/spec/unit/other/transbucket.rb +172 -0
- data/spec/unit/other/transobject.rb +92 -0
- data/spec/unit/parameter.rb +24 -0
- data/spec/unit/parser/ast.rb +37 -0
- data/spec/unit/parser/ast/arithmetic_operator.rb +73 -0
- data/spec/unit/parser/ast/astarray.rb +66 -0
- data/spec/unit/parser/ast/boolean_operator.rb +53 -0
- data/spec/unit/parser/ast/collexpr.rb +92 -0
- data/spec/unit/parser/ast/comparison_operator.rb +92 -0
- data/spec/unit/parser/ast/definition.rb +195 -0
- data/spec/unit/parser/ast/function.rb +77 -0
- data/spec/unit/parser/ast/hostclass.rb +148 -0
- data/spec/unit/parser/ast/minus.rb +36 -0
- data/spec/unit/parser/ast/node.rb +125 -0
- data/spec/unit/parser/ast/nop.rb +20 -0
- data/spec/unit/parser/ast/not.rb +30 -0
- data/spec/unit/parser/ast/resource_override.rb +51 -0
- data/spec/unit/parser/ast/resource_reference.rb +63 -0
- data/spec/unit/parser/ast/vardef.rb +47 -0
- data/spec/unit/parser/collector.rb +426 -0
- data/spec/unit/parser/compiler.rb +561 -0
- data/spec/unit/parser/functions.rb +83 -0
- data/spec/unit/parser/functions/inline_template.rb +59 -0
- data/spec/unit/parser/functions/template.rb +62 -0
- data/spec/unit/parser/interpreter.rb +138 -0
- data/spec/unit/parser/lexer.rb +646 -0
- data/spec/unit/parser/parser.rb +228 -0
- data/spec/unit/parser/resource.rb +336 -0
- data/spec/unit/parser/resource/reference.rb +95 -0
- data/spec/unit/parser/scope.rb +87 -0
- data/spec/unit/parser/templatewrapper.rb +129 -0
- data/spec/unit/property.rb +35 -0
- data/spec/unit/property/keyvalue.rb +168 -0
- data/spec/unit/property/list.rb +156 -0
- data/spec/unit/property/ordered_list.rb +64 -0
- data/spec/unit/provider/augeas/augeas.rb +238 -0
- data/spec/unit/provider/confine.rb +78 -0
- data/spec/unit/provider/confine/exists.rb +81 -0
- data/spec/unit/provider/confine/false.rb +53 -0
- data/spec/unit/provider/confine/feature.rb +60 -0
- data/spec/unit/provider/confine/true.rb +53 -0
- data/spec/unit/provider/confine/variable.rb +107 -0
- data/spec/unit/provider/confine_collection.rb +134 -0
- data/spec/unit/provider/confiner.rb +63 -0
- data/spec/unit/provider/group/groupadd.rb +31 -0
- data/spec/unit/provider/group/ldap.rb +105 -0
- data/spec/unit/provider/ldap.rb +248 -0
- data/spec/unit/provider/macauthorization.rb +147 -0
- data/spec/unit/provider/mcx/mcxcontent.rb +175 -0
- data/spec/unit/provider/mount.rb +130 -0
- data/spec/unit/provider/mount/parsed.rb +185 -0
- data/spec/unit/provider/package/apt.rb +138 -0
- data/spec/unit/provider/package/dpkg.rb +163 -0
- data/spec/unit/provider/package/gem.rb +87 -0
- data/spec/unit/provider/package/hpux.rb +52 -0
- data/spec/unit/provider/selboolean.rb +37 -0
- data/spec/unit/provider/selmodule-example.pp +0 -0
- data/spec/unit/provider/selmodule.rb +66 -0
- data/spec/unit/provider/service/daemontools.rb +124 -0
- data/spec/unit/provider/service/launchd.rb +134 -0
- data/spec/unit/provider/service/runit.rb +117 -0
- data/spec/unit/provider/ssh_authorized_key/parsed.rb +102 -0
- data/spec/unit/provider/user/hpux.rb +25 -0
- data/spec/unit/provider/user/ldap.rb +279 -0
- data/spec/unit/provider/user/user_role_add.rb +249 -0
- data/spec/unit/provider/user/useradd.rb +115 -0
- data/spec/unit/provider/zfs/solaris.rb +87 -0
- data/spec/unit/provider/zone/solaris.rb +42 -0
- data/spec/unit/provider/zpool/solaris.rb +179 -0
- data/spec/unit/rails.rb +125 -0
- data/spec/unit/relationship.rb +149 -0
- data/spec/unit/reports.rb +61 -0
- data/spec/unit/resource_reference.rb +73 -0
- data/spec/unit/simple_graph.rb +280 -0
- data/spec/unit/transaction/change.rb +187 -0
- data/spec/unit/transaction/event.rb +25 -0
- data/spec/unit/transaction/report.rb +40 -0
- data/spec/unit/type.rb +64 -0
- data/spec/unit/type/augeas.rb +113 -0
- data/spec/unit/type/computer.rb +82 -0
- data/spec/unit/type/exec.rb +91 -0
- data/spec/unit/type/file.rb +155 -0
- data/spec/unit/type/file/ensure.rb +21 -0
- data/spec/unit/type/file/group.rb +118 -0
- data/spec/unit/type/file/owner.rb +132 -0
- data/spec/unit/type/file/selinux.rb +82 -0
- data/spec/unit/type/group.rb +40 -0
- data/spec/unit/type/macauthorization.rb +78 -0
- data/spec/unit/type/mcx.rb +108 -0
- data/spec/unit/type/mount.rb +219 -0
- data/spec/unit/type/nagios.rb +63 -0
- data/spec/unit/type/noop_metaparam.rb +38 -0
- data/spec/unit/type/package.rb +246 -0
- data/spec/unit/type/resources.rb +27 -0
- data/spec/unit/type/schedule.rb +339 -0
- data/spec/unit/type/selboolean.rb +47 -0
- data/spec/unit/type/selmodule.rb +18 -0
- data/spec/unit/type/service.rb +254 -0
- data/spec/unit/type/ssh_authorized_key.rb +106 -0
- data/spec/unit/type/tidy.rb +68 -0
- data/spec/unit/type/user.rb +260 -0
- data/spec/unit/type/zfs.rb +45 -0
- data/spec/unit/type/zone.rb +20 -0
- data/spec/unit/type/zpool.rb +110 -0
- data/spec/unit/util/checksums.rb +99 -0
- data/spec/unit/util/constant_inflector.rb +70 -0
- data/spec/unit/util/file_locking.rb +115 -0
- data/spec/unit/util/ldap/connection.rb +169 -0
- data/spec/unit/util/ldap/generator.rb +54 -0
- data/spec/unit/util/ldap/manager.rb +654 -0
- data/spec/unit/util/loadedfile.rb +65 -0
- data/spec/unit/util/log.rb +107 -0
- data/spec/unit/util/metric.rb +95 -0
- data/spec/unit/util/nagios_maker.rb +128 -0
- data/spec/unit/util/posix.rb +256 -0
- data/spec/unit/util/resource_template.rb +58 -0
- data/spec/unit/util/selinux.rb +219 -0
- data/spec/unit/util/settings.rb +847 -0
- data/spec/unit/util/storage.rb +248 -0
- data/spec/unit/util/tagging.rb +92 -0
- data/spec/unit/util/uri_helper.rb +41 -0
- data/spec/unit/util/user_attr.rb +47 -0
- data/spec/unit/util/warnings.rb +35 -0
- data/test/certmgr/support.rb +0 -6
- data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +1 -0
- data/test/data/snippets/multilinecomments.pp +6 -0
- data/test/data/snippets/multipleclass.pp +9 -0
- data/test/language/functions.rb +11 -1
- data/test/language/snippets.rb +16 -0
- data/test/lib/puppettest/runnable_test.rb +1 -1
- data/test/network/handler/fileserver.rb +5 -0
- data/test/other/report.rb +0 -4
- data/test/ral/type/resources.rb +2 -19
- data/test/util/settings.rb +4 -4
- data/test/util/storage.rb +0 -24
- data/test/util/utiltest.rb +0 -33
- metadata +319 -26
- data/conf/debian/README.source +0 -2
- data/conf/debian/TODO.Debian +0 -1
- data/conf/debian/changelog +0 -257
- data/conf/debian/compat +0 -1
- data/conf/debian/control +0 -45
- data/conf/debian/copyright +0 -17
- data/conf/debian/docs +0 -1
- data/conf/debian/fileserver.conf +0 -12
- data/conf/debian/puppet.NEWS +0 -63
- data/conf/debian/puppet.conf +0 -8
- data/conf/debian/puppet.dirs +0 -7
- data/conf/debian/puppet.files +0 -6
- data/conf/debian/puppet.init +0 -64
- data/conf/debian/puppet.logrotate +0 -11
- data/conf/debian/puppet.postinst +0 -9
- data/conf/debian/puppet.postrm +0 -21
- data/conf/debian/puppet.preinst +0 -25
- data/conf/debian/puppetmaster.files +0 -4
- data/conf/debian/puppetmaster.init +0 -58
- data/conf/debian/rules +0 -115
- data/conf/debian/watch +0 -2
- data/lib/puppet/type/nagios_hostgroupescalation.rb +0 -3
@@ -0,0 +1,92 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/transportable'
|
6
|
+
|
7
|
+
describe Puppet::TransObject do
|
8
|
+
it "should canonize resource references" do
|
9
|
+
resource = Puppet::TransObject.new("me", "foo::bar")
|
10
|
+
resource.ref.should == 'Foo::Bar[me]'
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should lower-case resource types for backward compatibility with 0.23.2" do
|
14
|
+
resource = Puppet::TransObject.new("me", "Foo")
|
15
|
+
resource.type.should == 'foo'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe Puppet::TransObject, " when serializing" do
|
20
|
+
before do
|
21
|
+
@resource = Puppet::TransObject.new("/my/file", "file")
|
22
|
+
@resource["one"] = "test"
|
23
|
+
@resource["two"] = "other"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should be able to be dumped to yaml" do
|
27
|
+
proc { YAML.dump(@resource) }.should_not raise_error
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should produce an equivalent yaml object" do
|
31
|
+
text = YAML.dump(@resource)
|
32
|
+
|
33
|
+
newresource = YAML.load(text)
|
34
|
+
newresource.name.should == "/my/file"
|
35
|
+
newresource.type.should == "file"
|
36
|
+
%w{one two}.each do |param|
|
37
|
+
newresource[param].should == @resource[param]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe Puppet::TransObject, " when converting to a RAL resource" do
|
43
|
+
before do
|
44
|
+
@resource = Puppet::TransObject.new("/my/file", "file")
|
45
|
+
@resource["one"] = "test"
|
46
|
+
@resource["two"] = "other"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should use the resource type's :create method to create the resource" do
|
50
|
+
type = mock 'resource type'
|
51
|
+
type.expects(:create).with(@resource).returns(:myresource)
|
52
|
+
Puppet::Type.expects(:type).with("file").returns(type)
|
53
|
+
@resource.to_type.should == :myresource
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should convert to a component instance if the resource type cannot be found" do
|
57
|
+
Puppet::Type.expects(:type).with("file").returns(nil)
|
58
|
+
@resource.expects(:to_component).returns(:mycomponent)
|
59
|
+
@resource.to_type.should == :mycomponent
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe Puppet::TransObject, " when converting to a RAL component instance" do
|
64
|
+
before do
|
65
|
+
@resource = Puppet::TransObject.new("/my/file", "one::two")
|
66
|
+
@resource["one"] = "test"
|
67
|
+
@resource["noop"] = "other"
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should use a new TransObject whose name is a resource reference of the type and title of the original TransObject" do
|
71
|
+
Puppet::Type::Component.expects(:create).with { |resource| resource.type == "component" and resource.name == "One::Two[/my/file]" }.returns(:yay)
|
72
|
+
@resource.to_component.should == :yay
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should pass the resource parameters on to the newly created TransObject" do
|
76
|
+
Puppet::Type::Component.expects(:create).with { |resource| resource["noop"] == "other" }.returns(:yay)
|
77
|
+
@resource.to_component.should == :yay
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should copy over the catalog" do
|
81
|
+
@resource.catalog = "mycat"
|
82
|
+
Puppet::Type::Component.expects(:create).with { |resource| resource.catalog == "mycat" }.returns(:yay)
|
83
|
+
@resource.to_component
|
84
|
+
end
|
85
|
+
|
86
|
+
# LAK:FIXME This really isn't the design we want going forward, but it's
|
87
|
+
# good enough for now.
|
88
|
+
it "should not pass resource parameters that are not metaparams" do
|
89
|
+
Puppet::Type::Component.expects(:create).with { |resource| resource["one"].nil? }.returns(:yay)
|
90
|
+
@resource.to_component.should == :yay
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/parameter'
|
6
|
+
|
7
|
+
describe Puppet::Parameter do
|
8
|
+
describe "when returning the value" do
|
9
|
+
before do
|
10
|
+
@class = Class.new(Puppet::Parameter)
|
11
|
+
@class.initvars
|
12
|
+
@parameter = @class.new :resource => mock('resource')
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return nil if no value is set" do
|
16
|
+
@parameter.value.should be_nil
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should return any set value" do
|
20
|
+
@parameter.value = "foo"
|
21
|
+
@parameter.value.should == "foo"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/parser/ast'
|
6
|
+
|
7
|
+
describe Puppet::Parser::AST do
|
8
|
+
|
9
|
+
it "should have a doc accessor" do
|
10
|
+
ast = Puppet::Parser::AST.new({})
|
11
|
+
ast.should respond_to(:doc)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have a use_docs accessor to indicate it wants documentation" do
|
15
|
+
ast = Puppet::Parser::AST.new({})
|
16
|
+
ast.should respond_to(:use_docs)
|
17
|
+
end
|
18
|
+
|
19
|
+
[ Puppet::Parser::AST::Collection, Puppet::Parser::AST::Definition, Puppet::Parser::AST::Else,
|
20
|
+
Puppet::Parser::AST::Function, Puppet::Parser::AST::HostClass, Puppet::Parser::AST::IfStatement,
|
21
|
+
Puppet::Parser::AST::Node, Puppet::Parser::AST::Resource, Puppet::Parser::AST::ResourceDefaults,
|
22
|
+
Puppet::Parser::AST::ResourceOverride, Puppet::Parser::AST::VarDef
|
23
|
+
].each do |k|
|
24
|
+
it "#{k}.use_docs should return true" do
|
25
|
+
ast = k.new({})
|
26
|
+
ast.use_docs.should be_true
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "when initializing" do
|
31
|
+
it "should store the doc argument if passed" do
|
32
|
+
ast = Puppet::Parser::AST.new(:doc => "documentation")
|
33
|
+
ast.doc.should == "documentation"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Parser::AST::ArithmeticOperator do
|
6
|
+
|
7
|
+
ast = Puppet::Parser::AST
|
8
|
+
|
9
|
+
before :each do
|
10
|
+
@scope = Puppet::Parser::Scope.new()
|
11
|
+
@one = stub 'lval', :safeevaluate => 1
|
12
|
+
@two = stub 'rval', :safeevaluate => 2
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should evaluate both branches" do
|
16
|
+
lval = stub "lval"
|
17
|
+
lval.expects(:safeevaluate).with(@scope).returns(1)
|
18
|
+
rval = stub "rval"
|
19
|
+
rval.expects(:safeevaluate).with(@scope).returns(2)
|
20
|
+
|
21
|
+
operator = ast::ArithmeticOperator.new :rval => rval, :operator => "+", :lval => lval
|
22
|
+
operator.evaluate(@scope)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should fail for an unknown operator" do
|
26
|
+
lambda { operator = ast::ArithmeticOperator.new :lval => @one, :operator => "%", :rval => @two }.should raise_error
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should call Puppet::Parser::Scope.number?" do
|
30
|
+
Puppet::Parser::Scope.expects(:number?).with(1).returns(1)
|
31
|
+
Puppet::Parser::Scope.expects(:number?).with(2).returns(2)
|
32
|
+
|
33
|
+
ast::ArithmeticOperator.new(:lval => @one, :operator => "+", :rval => @two).evaluate(@scope)
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
%w{ + - * / << >>}.each do |op|
|
38
|
+
it "should call ruby Numeric '#{op}'" do
|
39
|
+
one = stub 'one'
|
40
|
+
two = stub 'two'
|
41
|
+
operator = ast::ArithmeticOperator.new :lval => @one, :operator => op, :rval => @two
|
42
|
+
Puppet::Parser::Scope.stubs(:number?).with(1).returns(one)
|
43
|
+
Puppet::Parser::Scope.stubs(:number?).with(2).returns(two)
|
44
|
+
one.expects(:send).with(op,two)
|
45
|
+
operator.evaluate(@scope)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should work even with numbers embedded in strings" do
|
50
|
+
two = stub 'two', :safeevaluate => "2"
|
51
|
+
one = stub 'one', :safeevaluate => "1"
|
52
|
+
operator = ast::ArithmeticOperator.new :lval => two, :operator => "+", :rval => one
|
53
|
+
operator.evaluate(@scope).should == 3
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should work even with floats" do
|
57
|
+
two = stub 'two', :safeevaluate => 2.53
|
58
|
+
one = stub 'one', :safeevaluate => 1.80
|
59
|
+
operator = ast::ArithmeticOperator.new :lval => two, :operator => "+", :rval => one
|
60
|
+
operator.evaluate(@scope).should == 4.33
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should work for variables too" do
|
64
|
+
@scope.expects(:lookupvar).with("one").returns(1)
|
65
|
+
@scope.expects(:lookupvar).with("two").returns(2)
|
66
|
+
one = ast::Variable.new( :value => "one" )
|
67
|
+
two = ast::Variable.new( :value => "two" )
|
68
|
+
|
69
|
+
operator = ast::ArithmeticOperator.new :lval => one, :operator => "+", :rval => two
|
70
|
+
operator.evaluate(@scope).should == 3
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Parser::AST::ASTArray do
|
6
|
+
before :each do
|
7
|
+
@scope = Puppet::Parser::Scope.new()
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should have a [] accessor" do
|
11
|
+
array = Puppet::Parser::AST::ASTArray.new :children => []
|
12
|
+
array.should respond_to(:[])
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should evaluate all its children" do
|
16
|
+
item1 = stub "item1", :is_a? => true
|
17
|
+
item2 = stub "item2", :is_a? => true
|
18
|
+
|
19
|
+
item1.expects(:safeevaluate).with(@scope).returns(123)
|
20
|
+
item2.expects(:safeevaluate).with(@scope).returns(246)
|
21
|
+
|
22
|
+
operator = Puppet::Parser::AST::ASTArray.new :children => [item1,item2]
|
23
|
+
operator.evaluate(@scope)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should evaluate childrens of type ASTArray" do
|
27
|
+
item1 = stub "item1", :is_a? => true
|
28
|
+
item2 = stub "item2"
|
29
|
+
item2.stubs(:is_a?).with(Puppet::Parser::AST).returns(true)
|
30
|
+
item2.stubs(:instance_of?).with(Puppet::Parser::AST::ASTArray).returns(true)
|
31
|
+
item2.stubs(:each).yields(item1)
|
32
|
+
|
33
|
+
item1.expects(:safeevaluate).with(@scope).returns(123)
|
34
|
+
|
35
|
+
operator = Puppet::Parser::AST::ASTArray.new :children => [item2]
|
36
|
+
operator.evaluate(@scope).should == [123]
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should flatten children coming from children ASTArray" do
|
40
|
+
item1 = stub "item1", :is_a? => true
|
41
|
+
item2 = stub "item2"
|
42
|
+
item2.stubs(:is_a?).with(Puppet::Parser::AST).returns(true)
|
43
|
+
item2.stubs(:instance_of?).with(Puppet::Parser::AST::ASTArray).returns(true)
|
44
|
+
item2.stubs(:each).yields([item1])
|
45
|
+
|
46
|
+
item1.expects(:safeevaluate).with(@scope).returns(123)
|
47
|
+
|
48
|
+
operator = Puppet::Parser::AST::ASTArray.new :children => [item2]
|
49
|
+
operator.evaluate(@scope).should == [123]
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should flatten the results of children evaluation" do
|
53
|
+
item1 = stub "item1", :is_a? => true
|
54
|
+
item2 = stub "item2"
|
55
|
+
item2.stubs(:is_a?).with(Puppet::Parser::AST).returns(true)
|
56
|
+
item2.stubs(:instance_of?).with(Puppet::Parser::AST::ASTArray).returns(true)
|
57
|
+
item2.stubs(:each).yields([item1])
|
58
|
+
|
59
|
+
item1.expects(:safeevaluate).with(@scope).returns([123])
|
60
|
+
|
61
|
+
operator = Puppet::Parser::AST::ASTArray.new :children => [item2]
|
62
|
+
operator.evaluate(@scope).should == [123]
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Parser::AST::BooleanOperator do
|
6
|
+
|
7
|
+
ast = Puppet::Parser::AST
|
8
|
+
|
9
|
+
before :each do
|
10
|
+
@scope = Puppet::Parser::Scope.new()
|
11
|
+
@true_ast = ast::Boolean.new( :value => true)
|
12
|
+
@false_ast = ast::Boolean.new( :value => false)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should evaluate left operand inconditionally" do
|
16
|
+
lval = stub "lval"
|
17
|
+
lval.expects(:safeevaluate).with(@scope).returns("true")
|
18
|
+
rval = stub "rval", :safeevaluate => false
|
19
|
+
rval.expects(:safeevaluate).never
|
20
|
+
|
21
|
+
operator = ast::BooleanOperator.new :rval => rval, :operator => "or", :lval => lval
|
22
|
+
operator.evaluate(@scope)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should evaluate right 'and' operand only if left operand is true" do
|
26
|
+
lval = stub "lval", :safeevaluate => true
|
27
|
+
rval = stub "rval", :safeevaluate => false
|
28
|
+
rval.expects(:safeevaluate).with(@scope).returns(false)
|
29
|
+
operator = ast::BooleanOperator.new :rval => rval, :operator => "and", :lval => lval
|
30
|
+
operator.evaluate(@scope)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should evaluate right 'or' operand only if left operand is false" do
|
34
|
+
lval = stub "lval", :safeevaluate => false
|
35
|
+
rval = stub "rval", :safeevaluate => false
|
36
|
+
rval.expects(:safeevaluate).with(@scope).returns(false)
|
37
|
+
operator = ast::BooleanOperator.new :rval => rval, :operator => "or", :lval => lval
|
38
|
+
operator.evaluate(@scope)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should return true for false OR true" do
|
42
|
+
ast::BooleanOperator.new(:rval => @true_ast, :operator => "or", :lval => @false_ast).evaluate(@scope).should be_true
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should return false for true AND false" do
|
46
|
+
ast::BooleanOperator.new(:rval => @true_ast, :operator => "and", :lval => @false_ast ).evaluate(@scope).should be_false
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should return true for true AND true" do
|
50
|
+
ast::BooleanOperator.new(:rval => @true_ast, :operator => "and", :lval => @true_ast ).evaluate(@scope).should be_true
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Parser::AST::CollExpr do
|
6
|
+
|
7
|
+
ast = Puppet::Parser::AST
|
8
|
+
|
9
|
+
before :each do
|
10
|
+
@scope = Puppet::Parser::Scope.new()
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "when evaluating with two operands" do
|
14
|
+
before :each do
|
15
|
+
@test1 = mock 'test1'
|
16
|
+
@test1.expects(:safeevaluate).with(@scope).returns("test1")
|
17
|
+
@test2 = mock 'test2'
|
18
|
+
@test2.expects(:safeevaluate).with(@scope).returns("test2")
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should evaluate both" do
|
22
|
+
collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=>"==")
|
23
|
+
collexpr.evaluate(@scope)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should produce a textual representation and code of the expression" do
|
27
|
+
collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=>"==")
|
28
|
+
result = collexpr.evaluate(@scope)
|
29
|
+
result[0].should == "param_values.value = 'test2' and param_names.name = 'test1'"
|
30
|
+
result[1].should be_an_instance_of(Proc)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should propagate expression type and form to child if expression themselves" do
|
34
|
+
[@test1, @test2].each do |t|
|
35
|
+
t.expects(:is_a?).returns(true)
|
36
|
+
t.expects(:form).returns(false)
|
37
|
+
t.expects(:type).returns(false)
|
38
|
+
t.expects(:type=)
|
39
|
+
t.expects(:form=)
|
40
|
+
end
|
41
|
+
|
42
|
+
collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=>"==", :form => true, :type => true)
|
43
|
+
result = collexpr.evaluate(@scope)
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "and when evaluating the produced code" do
|
47
|
+
before :each do
|
48
|
+
@resource = mock 'resource'
|
49
|
+
@resource.expects(:[]).with("test1").at_least(1).returns("test2")
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should evaluate like the original expression for ==" do
|
53
|
+
collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper => "==")
|
54
|
+
collexpr.evaluate(@scope)[1].call(@resource).should === (@resource["test1"] == "test2")
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should evaluate like the original expression for !=" do
|
58
|
+
collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper => "!=")
|
59
|
+
collexpr.evaluate(@scope)[1].call(@resource).should === (@resource["test1"] != "test2")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should warn if this is an exported collection containing parenthesis (unsupported)" do
|
64
|
+
collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=>"==", :parens => true, :form => :exported)
|
65
|
+
Puppet.expects(:warning)
|
66
|
+
collexpr.evaluate(@scope)
|
67
|
+
end
|
68
|
+
|
69
|
+
%w{and or}.each do |op|
|
70
|
+
it "should raise an error if this is an exported collection with #{op} operator (unsupported)" do
|
71
|
+
collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=> op, :form => :exported)
|
72
|
+
lambda { collexpr.evaluate(@scope) }.should raise_error(Puppet::ParseError)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should check for array member equality if resource parameter is an array for ==" do
|
78
|
+
array = mock 'array', :safeevaluate => "array"
|
79
|
+
test1 = mock 'test1'
|
80
|
+
test1.expects(:safeevaluate).with(@scope).returns("test1")
|
81
|
+
|
82
|
+
resource = mock 'resource'
|
83
|
+
resource.expects(:[]).with("array").at_least(1).returns(["test1","test2","test3"])
|
84
|
+
collexpr = ast::CollExpr.new(:test1 => array, :test2 => test1, :oper => "==")
|
85
|
+
collexpr.evaluate(@scope)[1].call(resource).should be_true
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should raise an error for invalid operator" do
|
89
|
+
lambda { collexpr = ast::CollExpr.new(:oper=>">") }.should raise_error
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Parser::AST::ComparisonOperator do
|
6
|
+
before :each do
|
7
|
+
@scope = Puppet::Parser::Scope.new()
|
8
|
+
@one = stub 'one', :safeevaluate => "1"
|
9
|
+
@two = stub 'two', :safeevaluate => "2"
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should evaluate both branches" do
|
13
|
+
lval = stub "lval"
|
14
|
+
lval.expects(:safeevaluate).with(@scope)
|
15
|
+
rval = stub "rval"
|
16
|
+
rval.expects(:safeevaluate).with(@scope)
|
17
|
+
|
18
|
+
operator = Puppet::Parser::AST::ComparisonOperator.new :lval => lval, :operator => "==", :rval => rval
|
19
|
+
operator.evaluate(@scope)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should convert arguments strings to numbers if they are" do
|
23
|
+
Puppet::Parser::Scope.expects(:number?).with("1").returns(1)
|
24
|
+
Puppet::Parser::Scope.expects(:number?).with("2").returns(2)
|
25
|
+
|
26
|
+
operator = Puppet::Parser::AST::ComparisonOperator.new :lval => @one, :operator => "==", :rval => @two
|
27
|
+
operator.evaluate(@scope)
|
28
|
+
end
|
29
|
+
|
30
|
+
%w{< > <= >= ==}.each do |oper|
|
31
|
+
it "should use string comparison #{oper} if operands are strings" do
|
32
|
+
lval = stub 'one', :safeevaluate => "one"
|
33
|
+
rval = stub 'two', :safeevaluate => "two"
|
34
|
+
Puppet::Parser::Scope.stubs(:number?).with("one").returns(nil)
|
35
|
+
Puppet::Parser::Scope.stubs(:number?).with("two").returns(nil)
|
36
|
+
|
37
|
+
operator = Puppet::Parser::AST::ComparisonOperator.new :lval => lval, :operator => oper, :rval => rval
|
38
|
+
operator.evaluate(@scope).should == "one".send(oper,"two")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should fail with arguments of different types" do
|
43
|
+
lval = stub 'one', :safeevaluate => "one"
|
44
|
+
rval = stub 'two', :safeevaluate => "2"
|
45
|
+
Puppet::Parser::Scope.stubs(:number?).with("one").returns(nil)
|
46
|
+
Puppet::Parser::Scope.stubs(:number?).with("2").returns(2)
|
47
|
+
|
48
|
+
operator = Puppet::Parser::AST::ComparisonOperator.new :lval => lval, :operator => ">", :rval => rval
|
49
|
+
lambda { operator.evaluate(@scope) }.should raise_error(ArgumentError)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should fail for an unknown operator" do
|
53
|
+
lambda { operator = Puppet::Parser::AST::ComparisonOperator.new :lval => @one, :operator => "or", :rval => @two }.should raise_error
|
54
|
+
end
|
55
|
+
|
56
|
+
%w{< > <= >= ==}.each do |oper|
|
57
|
+
it "should return the result of using '#{oper}' to compare the left and right sides" do
|
58
|
+
operator = Puppet::Parser::AST::ComparisonOperator.new :lval => @one, :operator => oper, :rval => @two
|
59
|
+
|
60
|
+
operator.evaluate(@scope).should == 1.send(oper,2)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should return the result of using '!=' to compare the left and right sides" do
|
65
|
+
operator = Puppet::Parser::AST::ComparisonOperator.new :lval => @one, :operator => '!=', :rval => @two
|
66
|
+
|
67
|
+
operator.evaluate(@scope).should == true
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should work for variables too" do
|
71
|
+
one = Puppet::Parser::AST::Variable.new( :value => "one" )
|
72
|
+
two = Puppet::Parser::AST::Variable.new( :value => "two" )
|
73
|
+
|
74
|
+
@scope.expects(:lookupvar).with("one").returns(1)
|
75
|
+
@scope.expects(:lookupvar).with("two").returns(2)
|
76
|
+
|
77
|
+
operator = Puppet::Parser::AST::ComparisonOperator.new :lval => one, :operator => "<", :rval => two
|
78
|
+
operator.evaluate(@scope).should == true
|
79
|
+
end
|
80
|
+
|
81
|
+
# see ticket #1759
|
82
|
+
%w{< > <= >=}.each do |oper|
|
83
|
+
it "should return the correct result of using '#{oper}' to compare 10 and 9" do
|
84
|
+
ten = stub 'one', :safeevaluate => "10"
|
85
|
+
nine = stub 'two', :safeevaluate => "9"
|
86
|
+
operator = Puppet::Parser::AST::ComparisonOperator.new :lval => ten, :operator => oper, :rval => nine
|
87
|
+
|
88
|
+
operator.evaluate(@scope).should == 10.send(oper,9)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|