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,61 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/reports'
|
6
|
+
|
7
|
+
describe Puppet::Reports do
|
8
|
+
it "should instance-load report types" do
|
9
|
+
Puppet::Reports.instance_loader(:report).should be_instance_of(Puppet::Util::Autoload)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should have a method for registering report types" do
|
13
|
+
Puppet::Reports.should respond_to(:register_report)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should have a method for retrieving report types by name" do
|
17
|
+
Puppet::Reports.should respond_to(:report)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should provide a method for returning documentation for all reports" do
|
21
|
+
Puppet::Reports.expects(:loaded_instances).with(:report).returns([:one, :two])
|
22
|
+
one = mock 'one', :doc => "onedoc"
|
23
|
+
two = mock 'two', :doc => "twodoc"
|
24
|
+
Puppet::Reports.expects(:report).with(:one).returns(one)
|
25
|
+
Puppet::Reports.expects(:report).with(:two).returns(two)
|
26
|
+
|
27
|
+
doc = Puppet::Reports.reportdocs
|
28
|
+
doc.include?("onedoc").should be_true
|
29
|
+
doc.include?("twodoc").should be_true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
describe Puppet::Reports, " when loading report types" do
|
35
|
+
it "should use the instance loader to retrieve report types" do
|
36
|
+
Puppet::Reports.expects(:loaded_instance).with(:report, :myreporttype)
|
37
|
+
Puppet::Reports.report(:myreporttype)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe Puppet::Reports, " when registering report types" do
|
42
|
+
it "should evaluate the supplied block as code for a module" do
|
43
|
+
Puppet::Reports.expects(:genmodule).returns(Module.new)
|
44
|
+
Puppet::Reports.register_report(:testing) { }
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should extend the report type with the Puppet::Util::Docs module" do
|
48
|
+
mod = stub 'module', :define_method => true
|
49
|
+
|
50
|
+
Puppet::Reports.expects(:genmodule).with { |name, options, block| options[:extend] == Puppet::Util::Docs }.returns(mod)
|
51
|
+
Puppet::Reports.register_report(:testing) { }
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should define a :report_name method in the module that returns the name of the report" do
|
55
|
+
mod = mock 'module'
|
56
|
+
mod.expects(:define_method).with(:report_name)
|
57
|
+
|
58
|
+
Puppet::Reports.expects(:genmodule).returns(mod)
|
59
|
+
Puppet::Reports.register_report(:testing) { }
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/resource_reference'
|
6
|
+
|
7
|
+
describe Puppet::ResourceReference do
|
8
|
+
it "should have a :title attribute" do
|
9
|
+
Puppet::ResourceReference.new(:file, "foo").title.should == "foo"
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should canonize types to capitalized strings" do
|
13
|
+
Puppet::ResourceReference.new(:file, "foo").type.should == "File"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should canonize qualified types so all strings are capitalized" do
|
17
|
+
Puppet::ResourceReference.new("foo::bar", "foo").type.should == "Foo::Bar"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should set its type to 'Class' and its title to the passed title if the passed type is :component and the title has no square brackets in it" do
|
21
|
+
ref = Puppet::ResourceReference.new(:component, "foo")
|
22
|
+
ref.type.should == "Class"
|
23
|
+
ref.title.should == "foo"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should interpret the title as a reference and assign appropriately if the type is :component and the title contains square brackets" do
|
27
|
+
ref = Puppet::ResourceReference.new(:component, "foo::bar[yay]")
|
28
|
+
ref.type.should == "Foo::Bar"
|
29
|
+
ref.title.should == "yay"
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should set the type to 'Class' if it is nil and the title contains no square brackets" do
|
33
|
+
ref = Puppet::ResourceReference.new(nil, "yay")
|
34
|
+
ref.type.should == "Class"
|
35
|
+
ref.title.should == "yay"
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should interpret the title as a reference and assign appropriately if the type is nil and the title contains square brackets" do
|
39
|
+
ref = Puppet::ResourceReference.new(nil, "foo::bar[yay]")
|
40
|
+
ref.type.should == "Foo::Bar"
|
41
|
+
ref.title.should == "yay"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should interpret the title as a reference and assign appropriately if the type is nil and the title contains nested square brackets" do
|
45
|
+
ref = Puppet::ResourceReference.new(nil, "foo::bar[baz[yay]]")
|
46
|
+
ref.type.should == "Foo::Bar"
|
47
|
+
ref.title.should =="baz[yay]"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe Puppet::ResourceReference, "when resolving resources without a catalog" do
|
52
|
+
it "should be able to resolve builtin resources from their types" do
|
53
|
+
Puppet::Type.type(:file).expects(:[]).with("myfile").returns(:myfile)
|
54
|
+
Puppet::ResourceReference.new(:file, "myfile").resolve.should == :myfile
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should be able to resolve defined resources from Components" do
|
58
|
+
Puppet::Type.type(:component).expects(:[]).with("Foo::Bar[yay]").returns(:mything)
|
59
|
+
Puppet::ResourceReference.new("foo::bar", "yay").resolve.should == :mything
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe Puppet::ResourceReference, "when resolving resources with a catalog" do
|
64
|
+
it "should resolve all resources using the catalog" do
|
65
|
+
config = mock 'catalog'
|
66
|
+
ref = Puppet::ResourceReference.new("foo::bar", "yay")
|
67
|
+
ref.catalog = config
|
68
|
+
|
69
|
+
config.expects(:resource).with("Foo::Bar[yay]").returns(:myresource)
|
70
|
+
|
71
|
+
ref.resolve.should == :myresource
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,280 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-11-1.
|
4
|
+
# Copyright (c) 2006. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
7
|
+
require 'puppet/simple_graph'
|
8
|
+
|
9
|
+
describe Puppet::SimpleGraph do
|
10
|
+
it "should return the number of its vertices as its length" do
|
11
|
+
@graph = Puppet::SimpleGraph.new
|
12
|
+
@graph.add_vertex("one")
|
13
|
+
@graph.add_vertex("two")
|
14
|
+
@graph.size.should == 2
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should consider itself a directed graph" do
|
18
|
+
Puppet::SimpleGraph.new.directed?.should be_true
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should provide a method for reversing the graph" do
|
22
|
+
@graph = Puppet::SimpleGraph.new
|
23
|
+
@graph.add_edge(:one, :two)
|
24
|
+
@graph.reversal.edge?(:two, :one).should be_true
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should be able to produce a dot graph" do
|
28
|
+
@graph = Puppet::SimpleGraph.new
|
29
|
+
@graph.add_edge(:one, :two)
|
30
|
+
|
31
|
+
proc { @graph.to_dot_graph }.should_not raise_error
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe Puppet::SimpleGraph, " when managing vertices" do
|
36
|
+
before do
|
37
|
+
@graph = Puppet::SimpleGraph.new
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should provide a method to add a vertex" do
|
41
|
+
@graph.add_vertex(:test)
|
42
|
+
@graph.vertex?(:test).should be_true
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should ignore already-present vertices when asked to add a vertex" do
|
46
|
+
@graph.add_vertex(:test)
|
47
|
+
proc { @graph.add_vertex(:test) }.should_not raise_error
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should return true when asked if a vertex is present" do
|
51
|
+
@graph.add_vertex(:test)
|
52
|
+
@graph.vertex?(:test).should be_true
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should return false when asked if a non-vertex is present" do
|
56
|
+
@graph.vertex?(:test).should be_false
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should return all set vertices when asked" do
|
60
|
+
@graph.add_vertex(:one)
|
61
|
+
@graph.add_vertex(:two)
|
62
|
+
@graph.vertices.length.should == 2
|
63
|
+
@graph.vertices.should include(:one)
|
64
|
+
@graph.vertices.should include(:two)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should remove a given vertex when asked" do
|
68
|
+
@graph.add_vertex(:one)
|
69
|
+
@graph.remove_vertex!(:one)
|
70
|
+
@graph.vertex?(:one).should be_false
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should do nothing when a non-vertex is asked to be removed" do
|
74
|
+
proc { @graph.remove_vertex!(:one) }.should_not raise_error
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe Puppet::SimpleGraph, " when managing edges" do
|
79
|
+
before do
|
80
|
+
@graph = Puppet::SimpleGraph.new
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should provide a method to test whether a given vertex pair is an edge" do
|
84
|
+
@graph.should respond_to(:edge?)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should provide a method to add an edge as an instance of the edge class" do
|
88
|
+
edge = Puppet::Relationship.new(:one, :two)
|
89
|
+
@graph.add_edge(edge)
|
90
|
+
@graph.edge?(:one, :two).should be_true
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should provide a method to add an edge by specifying the two vertices" do
|
94
|
+
@graph.add_edge(:one, :two)
|
95
|
+
@graph.edge?(:one, :two).should be_true
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should provide a method to add an edge by specifying the two vertices and a label" do
|
99
|
+
@graph.add_edge(:one, :two, :stuff => :awesome)
|
100
|
+
@graph.edge?(:one, :two).should be_true
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should provide a method for retrieving an edge label" do
|
104
|
+
edge = Puppet::Relationship.new(:one, :two, :stuff => :awesome)
|
105
|
+
@graph.add_edge(edge)
|
106
|
+
@graph.edge_label(:one, :two).should == {:stuff => :awesome}
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should provide a method for retrieving an edge" do
|
110
|
+
edge = Puppet::Relationship.new(:one, :two)
|
111
|
+
@graph.add_edge(edge)
|
112
|
+
@graph.edge(:one, :two).should equal(edge)
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should add the edge source as a vertex if it is not already" do
|
116
|
+
edge = Puppet::Relationship.new(:one, :two)
|
117
|
+
@graph.add_edge(edge)
|
118
|
+
@graph.vertex?(:one).should be_true
|
119
|
+
end
|
120
|
+
|
121
|
+
it "should add the edge target as a vertex if it is not already" do
|
122
|
+
edge = Puppet::Relationship.new(:one, :two)
|
123
|
+
@graph.add_edge(edge)
|
124
|
+
@graph.vertex?(:two).should be_true
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should return all edges as edge instances when asked" do
|
128
|
+
one = Puppet::Relationship.new(:one, :two)
|
129
|
+
two = Puppet::Relationship.new(:two, :three)
|
130
|
+
@graph.add_edge(one)
|
131
|
+
@graph.add_edge(two)
|
132
|
+
edges = @graph.edges
|
133
|
+
edges.length.should == 2
|
134
|
+
edges.should include(one)
|
135
|
+
edges.should include(two)
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should remove an edge when asked" do
|
139
|
+
edge = Puppet::Relationship.new(:one, :two)
|
140
|
+
@graph.add_edge(edge)
|
141
|
+
@graph.remove_edge!(edge)
|
142
|
+
@graph.edge?(edge.source, edge.target).should be_false
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should remove all related edges when a vertex is removed" do
|
146
|
+
one = Puppet::Relationship.new(:one, :two)
|
147
|
+
two = Puppet::Relationship.new(:two, :three)
|
148
|
+
@graph.add_edge(one)
|
149
|
+
@graph.add_edge(two)
|
150
|
+
@graph.remove_vertex!(:two)
|
151
|
+
@graph.edge?(:one, :two).should be_false
|
152
|
+
@graph.edge?(:two, :three).should be_false
|
153
|
+
@graph.edges.length.should == 0
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
describe Puppet::SimpleGraph, " when finding adjacent vertices" do
|
158
|
+
before do
|
159
|
+
@graph = Puppet::SimpleGraph.new
|
160
|
+
@one_two = Puppet::Relationship.new(:one, :two)
|
161
|
+
@two_three = Puppet::Relationship.new(:two, :three)
|
162
|
+
@one_three = Puppet::Relationship.new(:one, :three)
|
163
|
+
@graph.add_edge(@one_two)
|
164
|
+
@graph.add_edge(@one_three)
|
165
|
+
@graph.add_edge(@two_three)
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should return adjacent vertices" do
|
169
|
+
adj = @graph.adjacent(:one)
|
170
|
+
adj.should be_include(:three)
|
171
|
+
adj.should be_include(:two)
|
172
|
+
end
|
173
|
+
|
174
|
+
it "should default to finding :out vertices" do
|
175
|
+
@graph.adjacent(:two).should == [:three]
|
176
|
+
end
|
177
|
+
|
178
|
+
it "should support selecting :in vertices" do
|
179
|
+
@graph.adjacent(:two, :direction => :in).should == [:one]
|
180
|
+
end
|
181
|
+
|
182
|
+
it "should default to returning the matching vertices as an array of vertices" do
|
183
|
+
@graph.adjacent(:two).should == [:three]
|
184
|
+
end
|
185
|
+
|
186
|
+
it "should support returning an array of matching edges" do
|
187
|
+
@graph.adjacent(:two, :type => :edges).should == [@two_three]
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
describe Puppet::SimpleGraph, " when clearing" do
|
192
|
+
before do
|
193
|
+
@graph = Puppet::SimpleGraph.new
|
194
|
+
one = Puppet::Relationship.new(:one, :two)
|
195
|
+
two = Puppet::Relationship.new(:two, :three)
|
196
|
+
@graph.add_edge(one)
|
197
|
+
@graph.add_edge(two)
|
198
|
+
|
199
|
+
@graph.clear
|
200
|
+
end
|
201
|
+
|
202
|
+
it "should remove all vertices" do
|
203
|
+
@graph.vertices.should be_empty
|
204
|
+
end
|
205
|
+
|
206
|
+
it "should remove all edges" do
|
207
|
+
@graph.edges.should be_empty
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
describe Puppet::SimpleGraph, " when reversing graphs" do
|
212
|
+
before do
|
213
|
+
@graph = Puppet::SimpleGraph.new
|
214
|
+
end
|
215
|
+
|
216
|
+
it "should provide a method for reversing the graph" do
|
217
|
+
@graph.add_edge(:one, :two)
|
218
|
+
@graph.reversal.edge?(:two, :one).should be_true
|
219
|
+
end
|
220
|
+
|
221
|
+
it "should add all vertices to the reversed graph" do
|
222
|
+
@graph.add_edge(:one, :two)
|
223
|
+
@graph.vertex?(:one).should be_true
|
224
|
+
@graph.vertex?(:two).should be_true
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should retain labels on edges" do
|
228
|
+
@graph.add_edge(:one, :two, :stuff => :awesome)
|
229
|
+
edge = @graph.reversal.edge(:two, :one)
|
230
|
+
edge.label.should == {:stuff => :awesome}
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
describe Puppet::SimpleGraph, " when sorting the graph" do
|
235
|
+
before do
|
236
|
+
@graph = Puppet::SimpleGraph.new
|
237
|
+
end
|
238
|
+
|
239
|
+
def add_edges(hash)
|
240
|
+
hash.each do |a,b|
|
241
|
+
@graph.add_edge(a, b)
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
it "should sort the graph topologically" do
|
246
|
+
add_edges :a => :b, :b => :c
|
247
|
+
@graph.topsort.should == [:a, :b, :c]
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should fail on two-vertex loops" do
|
251
|
+
add_edges :a => :b, :b => :a
|
252
|
+
proc { @graph.topsort }.should raise_error(Puppet::Error)
|
253
|
+
end
|
254
|
+
|
255
|
+
it "should fail on multi-vertex loops" do
|
256
|
+
add_edges :a => :b, :b => :c, :c => :a
|
257
|
+
proc { @graph.topsort }.should raise_error(Puppet::Error)
|
258
|
+
end
|
259
|
+
|
260
|
+
it "should fail when a larger tree contains a small cycle" do
|
261
|
+
add_edges :a => :b, :b => :a, :c => :a, :d => :c
|
262
|
+
proc { @graph.topsort }.should raise_error(Puppet::Error)
|
263
|
+
end
|
264
|
+
|
265
|
+
it "should succeed on trees with no cycles" do
|
266
|
+
add_edges :a => :b, :b => :e, :c => :a, :d => :c
|
267
|
+
proc { @graph.topsort }.should_not raise_error
|
268
|
+
end
|
269
|
+
|
270
|
+
# Our graph's add_edge method is smart enough not to add
|
271
|
+
# duplicate edges, so we use the objects, which it doesn't
|
272
|
+
# check.
|
273
|
+
it "should be able to sort graphs with duplicate edges" do
|
274
|
+
one = Puppet::Relationship.new(:a, :b)
|
275
|
+
@graph.add_edge(one)
|
276
|
+
two = Puppet::Relationship.new(:a, :b)
|
277
|
+
@graph.add_edge(two)
|
278
|
+
proc { @graph.topsort }.should_not raise_error
|
279
|
+
end
|
280
|
+
end
|
@@ -0,0 +1,187 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/transaction/change'
|
6
|
+
|
7
|
+
describe Puppet::Transaction::Change do
|
8
|
+
Change = Puppet::Transaction::Change
|
9
|
+
|
10
|
+
describe "when initializing" do
|
11
|
+
before do
|
12
|
+
@property = stub 'property', :path => "/property/path", :should => "shouldval"
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should require the property and current value" do
|
16
|
+
lambda { Change.new() }.should raise_error
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should set its property to the provided property" do
|
20
|
+
Change.new(@property, "value").property.should == :property
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should set its 'is' value to the provided value" do
|
24
|
+
Change.new(@property, "value").is.should == "value"
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should retrieve the 'should' value from the property" do
|
28
|
+
# Yay rspec :)
|
29
|
+
Change.new(@property, "value").should.should == @property.should
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should set its path to the path of the property plus 'change'" do
|
33
|
+
Change.new(@property, "value").path.should == [@property.path, "change"]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "when an instance" do
|
38
|
+
before do
|
39
|
+
@property = stub 'property', :path => "/property/path", :should => "shouldval"
|
40
|
+
@change = Change.new(@property, "value")
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should be noop if the property is noop" do
|
44
|
+
@property.expects(:noop).returns true
|
45
|
+
@change.noop?.should be_true
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should set its resource to the proxy if it has one" do
|
49
|
+
@change.proxy = :myresource
|
50
|
+
@change.resource.should == :myresource
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should set its resource to the property's resource if no proxy is set" do
|
54
|
+
@property.expects(:resource).returns :myresource
|
55
|
+
@change.resource.should == :myresource
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should have a method for marking that it's been execution" do
|
59
|
+
@change.changed = true
|
60
|
+
@change.changed?.should be_true
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "and creating an event" do
|
64
|
+
before do
|
65
|
+
@property.stubs(:resource).returns "myresource"
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should produce a warning if the event name is not a symbol" do
|
69
|
+
@property.expects(:warning)
|
70
|
+
@property.stubs(:event).returns :myevent
|
71
|
+
@change.event("a string")
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should use the property to generate the event name if the provided name is not a symbol" do
|
75
|
+
@property.stubs(:warning)
|
76
|
+
@property.expects(:event).with(@change.should).returns :myevent
|
77
|
+
|
78
|
+
Puppet::Transaction::Event.expects(:new).with { |name, source| name == :myevent }
|
79
|
+
|
80
|
+
@change.event("a string")
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe "and executing" do
|
85
|
+
describe "in noop mode" do
|
86
|
+
before { @change.stubs(:noop?).returns true }
|
87
|
+
|
88
|
+
it "should log that it is in noop" do
|
89
|
+
@property.expects(:is_to_s)
|
90
|
+
@property.expects(:should_to_s)
|
91
|
+
@property.expects(:log)
|
92
|
+
|
93
|
+
@change.stubs :event
|
94
|
+
@change.forward
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should produce a :noop event and return" do
|
98
|
+
@property.stub_everything
|
99
|
+
|
100
|
+
@change.expects(:event).with(:noop).returns :noop_event
|
101
|
+
|
102
|
+
@change.forward.should == [:noop_event]
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe "without noop" do
|
107
|
+
before do
|
108
|
+
@change.stubs(:noop?).returns false
|
109
|
+
@property.stub_everything
|
110
|
+
@property.stubs(:resource).returns "myresource"
|
111
|
+
@property.stubs(:name).returns :myprop
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should sync the property" do
|
115
|
+
@property.expects(:sync)
|
116
|
+
|
117
|
+
@change.forward
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should return the default event if syncing the property returns nil" do
|
121
|
+
@property.stubs(:sync).returns nil
|
122
|
+
|
123
|
+
@change.expects(:event).with(:myprop_changed).returns :myevent
|
124
|
+
|
125
|
+
@change.forward.should == [:myevent]
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should return the default event if syncing the property returns an empty array" do
|
129
|
+
@property.stubs(:sync).returns []
|
130
|
+
|
131
|
+
@change.expects(:event).with(:myprop_changed).returns :myevent
|
132
|
+
|
133
|
+
@change.forward.should == [:myevent]
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should log the change" do
|
137
|
+
@property.expects(:sync).returns [:one]
|
138
|
+
|
139
|
+
@property.expects(:log)
|
140
|
+
@property.expects(:change_to_s)
|
141
|
+
|
142
|
+
@change.forward
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should return an array of events" do
|
146
|
+
@property.expects(:sync).returns [:one, :two]
|
147
|
+
|
148
|
+
@change.expects(:event).with(:one).returns :uno
|
149
|
+
@change.expects(:event).with(:two).returns :dos
|
150
|
+
|
151
|
+
@change.forward.should == [:uno, :dos]
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
describe "backward" do
|
156
|
+
before do
|
157
|
+
@property = stub 'property'
|
158
|
+
@property.stub_everything
|
159
|
+
@property.stubs(:should).returns "shouldval"
|
160
|
+
@change = Change.new(@property, "value")
|
161
|
+
@change.stubs :go
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should swap the 'is' and 'should' values" do
|
165
|
+
@change.backward
|
166
|
+
@change.is.should == "shouldval"
|
167
|
+
@change.should.should == "value"
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should set the 'should' value on the property to the previous 'is' value" do
|
171
|
+
@property.expects(:should=).with "value"
|
172
|
+
@change.backward
|
173
|
+
end
|
174
|
+
|
175
|
+
it "should log that it's reversing the change" do
|
176
|
+
@property.expects(:info)
|
177
|
+
@change.backward
|
178
|
+
end
|
179
|
+
|
180
|
+
it "should execute" do
|
181
|
+
@change.expects(:go)
|
182
|
+
@change.backward
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|