puppet 0.24.4 → 0.24.5
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 +170 -0
- data/Rakefile +6 -4
- data/bin/filebucket +3 -2
- data/bin/puppet +7 -4
- data/bin/puppetca +32 -14
- data/bin/puppetd +12 -34
- data/bin/puppetmasterd +3 -2
- data/bin/puppetrun +5 -43
- data/bin/ralsh +2 -2
- data/conf/debian/README.source +2 -0
- data/conf/debian/TODO.Debian +1 -0
- data/conf/debian/changelog +257 -0
- data/conf/debian/compat +1 -0
- data/conf/debian/control +45 -0
- data/conf/debian/copyright +17 -0
- data/conf/debian/docs +1 -0
- data/conf/debian/fileserver.conf +12 -0
- data/conf/debian/puppet.NEWS +63 -0
- data/conf/debian/puppet.conf +8 -0
- data/conf/debian/puppet.dirs +7 -0
- data/conf/debian/puppet.files +6 -0
- data/conf/debian/puppet.init +64 -0
- data/conf/debian/puppet.logrotate +11 -0
- data/conf/debian/puppet.postinst +9 -0
- data/conf/debian/puppet.postrm +21 -0
- data/conf/debian/puppet.preinst +25 -0
- data/conf/debian/puppetmaster.files +4 -0
- data/conf/debian/puppetmaster.init +58 -0
- data/conf/debian/rules +115 -0
- data/conf/debian/watch +2 -0
- data/conf/gentoo/init.d/puppet +1 -1
- data/conf/gentoo/init.d/puppetmaster +32 -31
- data/conf/redhat/client.init +10 -2
- data/conf/redhat/puppet.spec +4 -1
- data/conf/redhat/server.init +9 -1
- data/examples/{code/allatonce → allatonce} +0 -0
- data/examples/{code/assignments → assignments} +0 -0
- data/examples/{code/components → components} +0 -0
- data/examples/{root/etc → etc}/init.d/sleeper +0 -0
- data/examples/{root/etc → etc}/otherfile +0 -0
- data/examples/{root/etc → etc}/puppet/fileserver.conf +0 -0
- data/examples/{root/etc → etc}/puppet/namespaceauth.conf +0 -0
- data/examples/{root/etc → etc}/puppet/puppet.conf +0 -0
- data/examples/{root/etc → etc}/puppet/tagmail.conf +0 -0
- data/examples/{code/execs → execs} +0 -0
- data/examples/{code/file.bl → file.bl} +0 -0
- data/examples/{code/filedefaults → filedefaults} +0 -0
- data/examples/{code/fileparsing → fileparsing} +0 -0
- data/examples/{code/filerecursion → filerecursion} +0 -0
- data/examples/{code/functions → functions} +0 -0
- data/examples/{code/groups → groups} +0 -0
- data/examples/{code/head → head} +0 -0
- data/examples/{code/importing → importing} +0 -0
- data/examples/{code/mac_automount.pp → mac_automount.pp} +0 -0
- data/examples/{code/mac_dscl.pp → mac_dscl.pp} +0 -0
- data/examples/{code/mac_dscl_revert.pp → mac_dscl_revert.pp} +0 -0
- data/examples/{code/mac_netinfo.pp → mac_netinfo.pp} +0 -0
- data/examples/{code/mac_pkgdmg.pp → mac_pkgdmg.pp} +0 -0
- data/examples/{code/modules → modules}/sample-module.pp +0 -0
- data/examples/{code/modules → modules}/sample-module/README.txt +0 -0
- data/examples/{code/modules → modules}/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +0 -0
- data/examples/{code/modules → modules}/sample-module/manifests/init.pp +0 -0
- data/examples/{code/modules → modules}/sample-module/templates/sample.erb +0 -0
- data/examples/{code/nodes → nodes} +0 -0
- data/examples/{code/one → one} +0 -0
- data/examples/{code/relationships → relationships} +0 -0
- data/examples/{code/selectors → selectors} +0 -0
- data/examples/{code/simpletests → simpletests} +0 -0
- data/examples/{code/svncommit → svncommit} +0 -0
- data/ext/autotest/Rakefile +8 -0
- data/ext/autotest/config +43 -0
- data/ext/autotest/readme.rst +16 -0
- data/{examples/root → ext}/bin/sleeper +1 -1
- data/ext/emacs/puppet-mode.el +246 -184
- data/ext/ldap/puppet.schema +7 -2
- data/ext/module_puppet +4 -3
- data/ext/nagios/check_puppet.rb +117 -0
- data/ext/puppetlast +40 -0
- data/install.rb +12 -3
- data/lib/puppet.rb +1 -44
- data/lib/puppet/defaults.rb +23 -10
- data/lib/puppet/dsl.rb +2 -2
- data/lib/puppet/executables/client/certhandler.rb +77 -0
- data/lib/puppet/external/nagios.rb +1 -1
- data/lib/puppet/external/nagios/base.rb +60 -46
- data/lib/puppet/file_serving/indirection_hooks.rb +4 -2
- data/lib/puppet/file_serving/metadata.rb +0 -9
- data/lib/puppet/file_serving/terminus_helper.rb +4 -4
- data/lib/puppet/indirector.rb +26 -28
- data/lib/puppet/indirector/catalog/compiler.rb +6 -28
- data/lib/puppet/indirector/checksum/file.rb +2 -2
- data/lib/puppet/indirector/direct_file_server.rb +7 -7
- data/lib/puppet/indirector/envelope.rb +13 -0
- data/lib/puppet/indirector/exec.rb +2 -2
- data/lib/puppet/indirector/facts/facter.rb +2 -2
- data/lib/puppet/indirector/file.rb +17 -14
- data/lib/puppet/indirector/file_metadata/file.rb +2 -2
- data/lib/puppet/indirector/file_server.rb +14 -14
- data/lib/puppet/indirector/indirection.rb +113 -48
- data/lib/puppet/indirector/ldap.rb +13 -25
- data/lib/puppet/indirector/memory.rb +7 -7
- data/lib/puppet/indirector/module_files.rb +14 -14
- data/lib/puppet/indirector/node/exec.rb +3 -10
- data/lib/puppet/indirector/node/ldap.rb +138 -41
- data/lib/puppet/indirector/node/plain.rb +1 -8
- data/lib/puppet/indirector/node/rest.rb +1 -1
- data/lib/puppet/indirector/plain.rb +2 -2
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/request.rb +42 -0
- data/lib/puppet/indirector/rest.rb +51 -3
- data/lib/puppet/indirector/terminus.rb +0 -27
- data/lib/puppet/indirector/yaml.rb +12 -17
- data/lib/puppet/metatype/attributes.rb +3 -7
- data/lib/puppet/metatype/evaluation.rb +2 -2
- data/lib/puppet/module.rb +6 -2
- data/lib/puppet/network/client/master.rb +29 -81
- data/lib/puppet/network/handler/master.rb +12 -43
- data/lib/puppet/network/http.rb +8 -6
- data/lib/puppet/network/http/handler.rb +42 -32
- data/lib/puppet/network/http/mongrel.rb +8 -9
- data/lib/puppet/network/http/mongrel/rest.rb +42 -15
- data/lib/puppet/network/http/webrick.rb +27 -16
- data/lib/puppet/network/http/webrick/rest.rb +38 -14
- data/lib/puppet/network/http_pool.rb +3 -2
- data/lib/puppet/network/server.rb +24 -22
- data/lib/puppet/network/xmlrpc/client.rb +6 -1
- data/lib/puppet/node.rb +38 -79
- data/lib/puppet/node/catalog.rb +9 -0
- data/lib/puppet/node/facts.rb +9 -1
- data/lib/puppet/parser/ast/function.rb +1 -1
- data/lib/puppet/parser/collector.rb +6 -0
- data/lib/puppet/parser/compiler.rb +1 -1
- data/lib/puppet/parser/functions.rb +25 -1
- data/lib/puppet/parser/interpreter.rb +2 -17
- data/lib/puppet/parser/parser.rb +4 -4
- data/lib/puppet/parser/parser_support.rb +6 -2
- data/lib/puppet/parser/resource.rb +6 -0
- data/lib/puppet/parser/templatewrapper.rb +9 -0
- data/lib/puppet/pgraph.rb +1 -1
- data/lib/puppet/property.rb +0 -1
- data/lib/puppet/provider.rb +9 -95
- data/lib/puppet/provider/confine.rb +77 -0
- data/lib/puppet/provider/confine/exists.rb +22 -0
- data/lib/puppet/provider/confine/false.rb +19 -0
- data/lib/puppet/provider/confine/feature.rb +17 -0
- data/lib/puppet/provider/confine/true.rb +20 -0
- data/lib/puppet/provider/confine/variable.rb +42 -0
- data/lib/puppet/provider/confine_collection.rb +47 -0
- data/lib/puppet/provider/confiner.rb +20 -0
- data/lib/puppet/provider/cron/crontab.rb +6 -2
- data/lib/puppet/provider/group/groupadd.rb +1 -1
- data/lib/puppet/provider/group/ldap.rb +48 -0
- data/lib/puppet/provider/ldap.rb +137 -0
- data/lib/puppet/provider/nameservice.rb +1 -2
- data/lib/puppet/provider/nameservice/objectadd.rb +2 -5
- data/lib/puppet/provider/package/dpkg.rb +16 -1
- data/lib/puppet/provider/package/freebsd.rb +15 -4
- data/lib/puppet/provider/package/gem.rb +33 -12
- data/lib/puppet/provider/package/pkgdmg.rb +1 -60
- data/lib/puppet/provider/package/ports.rb +6 -1
- data/lib/puppet/provider/package/rpm.rb +14 -13
- data/lib/puppet/provider/package/urpmi.rb +3 -3
- data/lib/puppet/provider/service/base.rb +4 -4
- data/lib/puppet/provider/service/debian.rb +1 -1
- data/lib/puppet/provider/service/init.rb +5 -3
- data/lib/puppet/provider/service/redhat.rb +35 -7
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +69 -0
- data/lib/puppet/provider/user/ldap.rb +133 -0
- data/lib/puppet/provider/user/useradd.rb +1 -1
- data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +14 -14
- data/lib/puppet/rails/database/schema.rb +9 -0
- data/lib/puppet/rails/resource.rb +1 -0
- data/lib/puppet/reference/providers.rb +8 -2
- data/lib/puppet/reference/report.rb +23 -0
- data/lib/puppet/reports/rrdgraph.rb +4 -2
- data/lib/puppet/sslcertificates/ca.rb +9 -4
- data/lib/puppet/sslcertificates/support.rb +26 -2
- data/lib/puppet/transaction.rb +11 -16
- data/lib/puppet/transaction/change.rb +94 -0
- data/lib/puppet/transaction/event.rb +21 -0
- data/lib/puppet/transaction/report.rb +4 -0
- data/lib/puppet/type.rb +0 -2
- data/lib/puppet/type/file/ensure.rb +0 -5
- data/lib/puppet/type/file/group.rb +13 -7
- data/lib/puppet/type/file/source.rb +8 -15
- data/lib/puppet/type/file/target.rb +2 -0
- data/lib/puppet/type/group.rb +1 -1
- data/lib/puppet/type/mount.rb +4 -2
- data/lib/puppet/type/nagios_hostescalation.rb +3 -0
- data/lib/puppet/type/nagios_servicegroup.rb +3 -0
- data/lib/puppet/type/ssh_authorized_key.rb +56 -0
- data/lib/puppet/type/user.rb +3 -0
- data/lib/puppet/type/yumrepo.rb +0 -1
- data/lib/puppet/util.rb +1 -1
- data/lib/puppet/util/ldap.rb +5 -0
- data/lib/puppet/util/ldap/connection.rb +69 -0
- data/lib/puppet/util/ldap/generator.rb +45 -0
- data/lib/puppet/util/ldap/manager.rb +281 -0
- data/lib/puppet/util/posix.rb +2 -2
- data/lib/puppet/util/resource_template.rb +61 -0
- data/lib/puppet/util/settings.rb +63 -3
- data/lib/puppet/util/storage.rb +4 -0
- data/lib/puppet/util/warnings.rb +7 -0
- data/man/man8/filebucket.8 +116 -0
- data/man/man8/pi.8 +34 -0
- data/man/man8/puppet.8 +78 -0
- data/man/man8/puppet.conf.8 +1747 -0
- data/man/man8/puppetca.8 +118 -0
- data/man/man8/puppetd.8 +184 -0
- data/man/man8/puppetdoc.8 +62 -0
- data/man/man8/puppetmasterd.8 +87 -0
- data/man/man8/puppetrun.8 +151 -0
- data/man/man8/ralsh.8 +135 -0
- data/test/README +24 -0
- data/test/certmgr/support.rb +28 -1
- data/test/data/failers/badclassnoparam +10 -0
- data/test/data/failers/badclassparam +10 -0
- data/test/data/failers/badcompnoparam +9 -0
- data/test/data/failers/badcompparam +9 -0
- data/test/data/failers/badtypeparam +3 -0
- data/test/data/failers/noobjectrvalue +1 -0
- data/test/data/providers/cron/crontab.allthree +17 -0
- data/test/data/providers/cron/crontab.envNcomment +12 -0
- data/test/data/providers/cron/crontab.envNname +11 -0
- data/test/data/providers/cron/crontab.multirecords +12 -0
- data/test/data/providers/cron/crontab_collections.yaml +44 -0
- data/test/data/providers/cron/crontab_multiple_with_env.yaml +54 -0
- data/test/data/providers/cron/crontab_sample_records.yaml +272 -0
- data/test/data/providers/cron/examples/freebsd +2 -0
- data/test/data/providers/cron/examples/one +14 -0
- data/test/data/providers/cron/examples/openbsd +20 -0
- data/test/data/providers/package/testpackages.yaml +65 -0
- data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +5 -0
- data/test/data/reports/1.yaml +108 -0
- data/test/data/reports/2.yaml +108 -0
- data/test/data/reports/tagmail_failers.conf +3 -0
- data/test/data/reports/tagmail_passers.conf +30 -0
- data/test/data/snippets/aliastest.pp +16 -0
- data/test/data/snippets/argumentdefaults +14 -0
- data/test/data/snippets/casestatement.pp +58 -0
- data/test/data/snippets/classheirarchy.pp +15 -0
- data/test/data/snippets/classincludes.pp +17 -0
- data/test/data/snippets/classpathtest +11 -0
- data/test/data/snippets/collection.pp +10 -0
- data/test/data/snippets/collection_within_virtual_definitions.pp +20 -0
- data/test/data/snippets/componentmetaparams.pp +11 -0
- data/test/data/snippets/componentrequire.pp +8 -0
- data/test/data/snippets/deepclassheirarchy.pp +23 -0
- data/test/data/snippets/defineoverrides.pp +17 -0
- data/test/data/snippets/emptyclass.pp +9 -0
- data/test/data/snippets/emptyexec.pp +3 -0
- data/test/data/snippets/falsevalues.pp +3 -0
- data/test/data/snippets/filecreate +11 -0
- data/test/data/snippets/fqdefinition.pp +5 -0
- data/test/data/snippets/fqparents.pp +11 -0
- data/test/data/snippets/implicititeration +15 -0
- data/test/data/snippets/multipleinstances +7 -0
- data/test/data/snippets/multisubs.pp +13 -0
- data/test/data/snippets/namevartest +9 -0
- data/test/data/snippets/scopetest +13 -0
- data/test/data/snippets/selectorvalues.pp +42 -0
- data/test/data/snippets/simpledefaults +5 -0
- data/test/data/snippets/simpleselector +38 -0
- data/test/data/snippets/singleary.pp +19 -0
- data/test/data/snippets/singlequote.pp +11 -0
- data/test/data/snippets/singleselector.pp +22 -0
- data/test/data/snippets/subclass_name_duplication.pp +11 -0
- data/test/data/snippets/tag.pp +9 -0
- data/test/data/snippets/tagged.pp +35 -0
- data/test/data/snippets/virtualresources.pp +14 -0
- data/test/data/types/hosts/1 +3 -0
- data/test/data/types/hosts/2 +13 -0
- data/test/data/types/hosts/solaris +5 -0
- data/test/data/types/mailalias/file1 +183 -0
- data/test/data/types/mount/freebsd.fstab +7 -0
- data/test/data/types/mount/linux.fstab +11 -0
- data/test/data/types/mount/solaris.fstab +11 -0
- data/test/data/types/port/1 +533 -0
- data/test/data/types/port/darwin +11866 -0
- data/test/data/types/ssh_authorized_key/1 +2 -0
- data/test/data/types/sshkey/1 +21 -0
- data/test/data/types/yumrepos/fedora-devel.repo +26 -0
- data/test/data/types/yumrepos/fedora.repo +9 -0
- data/test/language/parser.rb +8 -1
- data/test/lib/puppettest/runnable_test.rb +3 -0
- data/test/lib/puppettest/support/utils.rb +1 -1
- data/test/lib/rake/puppet_testtask.rb +3 -0
- data/test/lib/stubba.rb +1 -1
- data/test/network/client/ca.rb +1 -0
- data/test/network/client/master.rb +13 -127
- data/test/network/handler/master.rb +61 -80
- data/test/other/provider.rb +0 -45
- data/test/other/transactions.rb +53 -15
- data/test/rails/host.rb +0 -37
- data/test/ral/providers/cron/crontab.rb +32 -3
- data/test/ral/providers/provider.rb +28 -7
- data/test/ral/type/filesources.rb +2 -18
- data/test/ral/type/sshkey.rb +0 -1
- data/test/ral/type/user.rb +6 -0
- data/test/test +241 -0
- metadata +289 -113
- data/examples/root/etc/configfile +0 -0
- data/examples/root/etc/debian-passwd +0 -29
- data/examples/root/etc/debian-syslog.conf +0 -71
- data/lib/puppet/event.rb +0 -28
- data/lib/puppet/network/handler/configuration.rb +0 -184
- data/lib/puppet/network/http/mongrel/xmlrpc.rb +0 -4
- data/lib/puppet/network/http/webrick/xmlrpc.rb +0 -4
- data/lib/puppet/propertychange.rb +0 -141
- data/lib/puppet/provider/interface/redhat.rb +0 -250
- data/lib/puppet/provider/interface/sunos.rb +0 -133
- data/lib/puppet/type/interface.rb +0 -60
- data/lib/puppet/util/variables.rb +0 -38
- data/test/network/handler/configuration.rb +0 -160
- data/test/other/propertychange.rb +0 -140
- data/test/util/loadedfile.rb +0 -121
data/test/other/provider.rb
CHANGED
@@ -48,51 +48,6 @@ class TestImpl < Test::Unit::TestCase
|
|
48
48
|
|
49
49
|
end
|
50
50
|
|
51
|
-
def test_provider_false_confine
|
52
|
-
assert_nothing_raised do
|
53
|
-
@provider.confine :false => false
|
54
|
-
end
|
55
|
-
|
56
|
-
assert(@provider.suitable?, "False did not check correctly")
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_provider_true_confine
|
60
|
-
assert_nothing_raised do
|
61
|
-
@provider.confine :true => true
|
62
|
-
end
|
63
|
-
|
64
|
-
assert(@provider.suitable?, "True did not check correctly")
|
65
|
-
|
66
|
-
# Now check whether we multiple true things work
|
67
|
-
assert_nothing_raised do
|
68
|
-
@provider.confine :true => false
|
69
|
-
@provider.confine :true => true
|
70
|
-
end
|
71
|
-
assert(! @provider.suitable?, "One truth overrode another")
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_provider_exists_confine
|
75
|
-
file = tempfile()
|
76
|
-
|
77
|
-
assert_nothing_raised do
|
78
|
-
@provider.confine :exists => file
|
79
|
-
end
|
80
|
-
|
81
|
-
assert(! @provider.suitable?, "Exists did not check correctly")
|
82
|
-
File.open(file, "w") { |f| f.puts "" }
|
83
|
-
assert(@provider.suitable?, "Exists did not find file correctly")
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_provider_facts_confine
|
87
|
-
# Now check for multiple platforms
|
88
|
-
assert_nothing_raised do
|
89
|
-
@provider.confine :operatingsystem => [Facter["operatingsystem"].value, :yayos]
|
90
|
-
@provider.confine :operatingsystem => [:fakeos, :otheros]
|
91
|
-
end
|
92
|
-
|
93
|
-
assert(@provider.suitable?, "Implementation not considered suitable")
|
94
|
-
end
|
95
|
-
|
96
51
|
def test_provider_default
|
97
52
|
nondef = nil
|
98
53
|
assert_nothing_raised {
|
data/test/other/transactions.rb
CHANGED
@@ -72,11 +72,11 @@ class TestTransactions < Test::Unit::TestCase
|
|
72
72
|
path1 = tempfile()
|
73
73
|
path2 = tempfile()
|
74
74
|
objects = []
|
75
|
-
objects << Puppet::Type.
|
75
|
+
objects << Puppet::Type.type(:file).create(
|
76
76
|
:path => path1,
|
77
77
|
:content => "yayness"
|
78
78
|
)
|
79
|
-
objects << Puppet::Type.
|
79
|
+
objects << Puppet::Type.type(:file).create(
|
80
80
|
:path => path2,
|
81
81
|
:content => "booness"
|
82
82
|
)
|
@@ -155,7 +155,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
155
155
|
path = tempfile()
|
156
156
|
firstpath = tempfile()
|
157
157
|
secondpath = tempfile()
|
158
|
-
file = Puppet::Type.
|
158
|
+
file = Puppet::Type.type(:file).create(:title => "file", :path => path, :content => "yayness")
|
159
159
|
first = Puppet::Type.newexec(:title => "first",
|
160
160
|
:command => "/bin/echo first > #{firstpath}",
|
161
161
|
:subscribe => [:file, path],
|
@@ -716,6 +716,45 @@ class TestTransactions < Test::Unit::TestCase
|
|
716
716
|
"Not all resources were evaluated or not in the right order")
|
717
717
|
end
|
718
718
|
|
719
|
+
# We need to generate resources before we prefetch them, else generated
|
720
|
+
# resources that require prefetching don't work.
|
721
|
+
def test_generate_before_prefetch
|
722
|
+
config = mk_catalog()
|
723
|
+
trans = Puppet::Transaction.new(config)
|
724
|
+
|
725
|
+
generate = nil
|
726
|
+
prefetch = nil
|
727
|
+
trans.expects(:generate).with { |*args| generate = Time.now; true }
|
728
|
+
trans.expects(:prefetch).with { |*args| ! generate.nil? }
|
729
|
+
trans.prepare
|
730
|
+
return
|
731
|
+
|
732
|
+
resource = Puppet::Type.type(:file).create :ensure => :present, :path => tempfile()
|
733
|
+
other_resource = mock 'generated'
|
734
|
+
def resource.generate
|
735
|
+
[other_resource]
|
736
|
+
end
|
737
|
+
|
738
|
+
|
739
|
+
config = mk_catalog(yay, rah)
|
740
|
+
trans = Puppet::Transaction.new(config)
|
741
|
+
|
742
|
+
assert_nothing_raised do
|
743
|
+
trans.generate
|
744
|
+
end
|
745
|
+
|
746
|
+
%w{ya ra y r}.each do |name|
|
747
|
+
assert(trans.catalog.vertex?(Puppet::Type.type(:generator)[name]),
|
748
|
+
"Generated %s was not a vertex" % name)
|
749
|
+
assert($finished.include?(name), "%s was not finished" % name)
|
750
|
+
end
|
751
|
+
|
752
|
+
# Now make sure that cleanup gets rid of those generated types.
|
753
|
+
assert_nothing_raised do
|
754
|
+
trans.cleanup
|
755
|
+
end
|
756
|
+
end
|
757
|
+
|
719
758
|
def test_ignore_tags?
|
720
759
|
config = Puppet::Node::Catalog.new
|
721
760
|
config.host_config = true
|
@@ -757,7 +796,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
757
796
|
def test_proxy_resources
|
758
797
|
type = mkreducer do
|
759
798
|
def evaluate
|
760
|
-
return Puppet::
|
799
|
+
return Puppet::Transaction::Change.new(Fakeprop.new(
|
761
800
|
:path => :path, :is => :is, :should => :should, :name => self.name, :resource => "a parent"), :is)
|
762
801
|
end
|
763
802
|
end
|
@@ -776,7 +815,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
776
815
|
assert(changes.length > 0, "did not get any changes")
|
777
816
|
|
778
817
|
changes.each do |change|
|
779
|
-
assert_equal(resource, change.
|
818
|
+
assert_equal(resource, change.resource, "change did not get proxy set correctly")
|
780
819
|
end
|
781
820
|
end
|
782
821
|
|
@@ -866,17 +905,16 @@ class TestTransactions < Test::Unit::TestCase
|
|
866
905
|
assert(result, "c did not trigger anything")
|
867
906
|
assert_instance_of(Array, result)
|
868
907
|
event = result.shift
|
869
|
-
assert_instance_of(Puppet::Event, event)
|
870
|
-
assert_equal(:triggered, event.
|
908
|
+
assert_instance_of(Puppet::Transaction::Event, event)
|
909
|
+
assert_equal(:triggered, event.name, "event was not set correctly")
|
871
910
|
assert_equal(c, event.source, "source was not set correctly")
|
872
|
-
assert_equal(trans, event.transaction, "transaction was not set correctly")
|
873
911
|
|
874
912
|
assert(trans.triggered?(c, :refresh),
|
875
913
|
"Transaction did not store the trigger")
|
876
914
|
end
|
877
915
|
|
878
916
|
def test_set_target
|
879
|
-
file = Puppet::Type.
|
917
|
+
file = Puppet::Type.type(:file).create(:path => tempfile(), :content => "yay")
|
880
918
|
exec1 = Puppet::Type.type(:exec).create :command => "/bin/echo exec1"
|
881
919
|
exec2 = Puppet::Type.type(:exec).create :command => "/bin/echo exec2"
|
882
920
|
trans = Puppet::Transaction.new(mk_catalog(file, exec1, exec2))
|
@@ -911,7 +949,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
911
949
|
Puppet::Type.rmtype(:norefresh)
|
912
950
|
end
|
913
951
|
|
914
|
-
file = Puppet::Type.
|
952
|
+
file = Puppet::Type.type(:file).create :path => tempfile(), :content => "yay"
|
915
953
|
one = klass.create :name => "one", :subscribe => file
|
916
954
|
|
917
955
|
assert_apply(file, one)
|
@@ -956,7 +994,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
956
994
|
newparam(:name) {}
|
957
995
|
newproperty(:testing) do
|
958
996
|
def sync
|
959
|
-
|
997
|
+
# noop
|
960
998
|
:ran_testing
|
961
999
|
end
|
962
1000
|
end
|
@@ -989,8 +1027,8 @@ class TestTransactions < Test::Unit::TestCase
|
|
989
1027
|
# Now files
|
990
1028
|
d = tempfile()
|
991
1029
|
f = File.join(d, "file")
|
992
|
-
file = Puppet::Type.
|
993
|
-
dir = Puppet::Type.
|
1030
|
+
file = Puppet::Type.type(:file).create(:path => f, :content => "yay")
|
1031
|
+
dir = Puppet::Type.type(:file).create(:path => d, :ensure => :directory, :require => file)
|
994
1032
|
|
995
1033
|
rels[dir] = file
|
996
1034
|
rels.each do |after, before|
|
@@ -1014,7 +1052,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
1014
1052
|
path = tempfile
|
1015
1053
|
epath = tempfile
|
1016
1054
|
spath = tempfile
|
1017
|
-
file = Puppet::Type.
|
1055
|
+
file = Puppet::Type.type(:file).create(:path => path, :ensure => :file,
|
1018
1056
|
:title => "file")
|
1019
1057
|
exec = Puppet::Type.type(:exec).create(:command => "touch %s" % epath,
|
1020
1058
|
:path => ENV["PATH"], :subscribe => file, :refreshonly => true,
|
@@ -1052,7 +1090,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
1052
1090
|
3.times do |i|
|
1053
1091
|
path = tempfile
|
1054
1092
|
paths << path
|
1055
|
-
file = Puppet::Type.
|
1093
|
+
file = Puppet::Type.type(:file).create(:path => path, :ensure => :absent,
|
1056
1094
|
:backup => false, :title => "file%s" % i)
|
1057
1095
|
File.open(path, "w") { |f| f.puts "" }
|
1058
1096
|
files << file
|
data/test/rails/host.rb
CHANGED
@@ -151,41 +151,4 @@ class TestRailsHost < PuppetTest::TestCase
|
|
151
151
|
"loglevel was not added")
|
152
152
|
end
|
153
153
|
end
|
154
|
-
|
155
|
-
def test_freshness_connect_update
|
156
|
-
Puppet::Rails.init
|
157
|
-
Puppet[:storeconfigs] = true
|
158
|
-
|
159
|
-
Puppet[:code] = " "
|
160
|
-
# this is the default server setup
|
161
|
-
master = Puppet::Network::Handler.configuration.new(
|
162
|
-
:Local => true
|
163
|
-
)
|
164
|
-
|
165
|
-
# Create a host
|
166
|
-
Puppet::Rails::Host.new(:name => "test", :ip => "192.168.0.3").save
|
167
|
-
|
168
|
-
assert_nothing_raised("Failed to update last_connect for unknown host") do
|
169
|
-
master.version("created",'192.168.0.1')
|
170
|
-
end
|
171
|
-
|
172
|
-
# Make sure it created the host
|
173
|
-
created = Puppet::Rails::Host.find_by_name("created")
|
174
|
-
assert(created, "Freshness did not create host")
|
175
|
-
assert(created.last_freshcheck,
|
176
|
-
"Did not set last_freshcheck on created host")
|
177
|
-
|
178
|
-
# Now check on the existing host
|
179
|
-
assert_nothing_raised("Failed to update last_connect for unknown host") do
|
180
|
-
master.version("test",'192.168.0.2')
|
181
|
-
end
|
182
|
-
|
183
|
-
# Recreate it, so we're not using the cached object.
|
184
|
-
host = Puppet::Rails::Host.find_by_name("test")
|
185
|
-
|
186
|
-
# Make sure it created the host
|
187
|
-
assert(host.last_freshcheck,
|
188
|
-
"Did not set last_freshcheck on existing host")
|
189
|
-
end
|
190
154
|
end
|
191
|
-
|
@@ -530,8 +530,6 @@ class TestCronParsedProvider < Test::Unit::TestCase
|
|
530
530
|
@provider.initvars
|
531
531
|
str += "\n"
|
532
532
|
target.write(str)
|
533
|
-
assert_equal(str, target.read,
|
534
|
-
"Did not write correctly")
|
535
533
|
assert_nothing_raised("Could not prefetch with %s" % str.inspect) do
|
536
534
|
@provider.prefetch
|
537
535
|
end
|
@@ -551,6 +549,11 @@ class TestCronParsedProvider < Test::Unit::TestCase
|
|
551
549
|
end
|
552
550
|
end
|
553
551
|
|
552
|
+
# #707
|
553
|
+
def test_write_freebsd_special
|
554
|
+
assert_equal(@provider.to_line(:record_type => :crontab, :ensure => :present, :special => "reboot", :command => "/bin/echo something"), "@reboot /bin/echo something")
|
555
|
+
end
|
556
|
+
|
554
557
|
def test_prefetch
|
555
558
|
cron = @type.create :command => "/bin/echo yay", :name => "test", :hour => 4
|
556
559
|
|
@@ -599,5 +602,31 @@ class TestCronParsedProvider < Test::Unit::TestCase
|
|
599
602
|
result = target.read
|
600
603
|
assert_equal("# Puppet Name: test\n* 4 * * * /bin/echo yay\n", result, "Did not write out environment setting")
|
601
604
|
end
|
602
|
-
end
|
603
605
|
|
606
|
+
# Testing #1216
|
607
|
+
def test_strange_lines
|
608
|
+
@provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
|
609
|
+
text = " 5 \t\t 1,2 * 1 0 /bin/echo funtest"
|
610
|
+
|
611
|
+
records = nil
|
612
|
+
assert_nothing_raised {
|
613
|
+
records = @provider.parse(text)
|
614
|
+
}
|
615
|
+
|
616
|
+
should = {
|
617
|
+
:minute => %w{5},
|
618
|
+
:hour => %w{1 2},
|
619
|
+
:monthday => :absent,
|
620
|
+
:month => %w{1},
|
621
|
+
:weekday => %w{0},
|
622
|
+
:command => "/bin/echo funtest"
|
623
|
+
}
|
624
|
+
|
625
|
+
is = records.shift
|
626
|
+
assert(is, "Did not get record")
|
627
|
+
|
628
|
+
should.each do |p, v|
|
629
|
+
assert_equal(v, is[p], "did not parse %s correctly" % p)
|
630
|
+
end
|
631
|
+
end
|
632
|
+
end
|
@@ -37,12 +37,13 @@ class TestProvider < Test::Unit::TestCase
|
|
37
37
|
cleanup { Puppet::Type.rmtype(:provider_test) }
|
38
38
|
end
|
39
39
|
|
40
|
-
def
|
41
|
-
provider = newprovider
|
40
|
+
def test_confine_defaults_to_suitable
|
42
41
|
|
43
|
-
|
44
|
-
|
42
|
+
provider = newprovider
|
43
|
+
assert(provider.suitable?, "Marked unsuitable with no confines")
|
44
|
+
end
|
45
45
|
|
46
|
+
def test_confine_results
|
46
47
|
{
|
47
48
|
{:true => true} => true,
|
48
49
|
{:true => false} => false,
|
@@ -54,6 +55,8 @@ class TestProvider < Test::Unit::TestCase
|
|
54
55
|
{:exists => echo} => true,
|
55
56
|
{:exists => "/this/file/does/not/exist"} => false,
|
56
57
|
}.each do |hash, result|
|
58
|
+
provider = newprovider
|
59
|
+
|
57
60
|
# First test :true
|
58
61
|
hash.each do |test, val|
|
59
62
|
assert_nothing_raised do
|
@@ -61,19 +64,25 @@ class TestProvider < Test::Unit::TestCase
|
|
61
64
|
end
|
62
65
|
end
|
63
66
|
|
64
|
-
assert_equal(result, provider.suitable?,
|
65
|
-
"Failed for %s" % [hash.inspect])
|
67
|
+
assert_equal(result, provider.suitable?, "Failed for %s" % [hash.inspect])
|
66
68
|
|
67
69
|
provider.initvars
|
68
70
|
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_multiple_confines_do_not_override
|
74
|
+
provider = newprovider
|
69
75
|
|
70
76
|
# Make sure multiple confines don't overwrite each other
|
71
77
|
provider.confine :true => false
|
72
78
|
assert(! provider.suitable?)
|
73
79
|
provider.confine :true => true
|
74
80
|
assert(! provider.suitable?)
|
81
|
+
end
|
75
82
|
|
76
|
-
|
83
|
+
def test_one_failed_confine_is_sufficient
|
84
|
+
|
85
|
+
provider = newprovider
|
77
86
|
|
78
87
|
# Make sure we test multiple of them, and that a single false wins
|
79
88
|
provider.confine :true => true, :false => false
|
@@ -82,6 +91,18 @@ class TestProvider < Test::Unit::TestCase
|
|
82
91
|
assert(! provider.suitable?)
|
83
92
|
end
|
84
93
|
|
94
|
+
# #1197 - the binary should not be
|
95
|
+
def test_command_checks_for_binaries_each_time
|
96
|
+
provider = newprovider
|
97
|
+
|
98
|
+
provider.commands :testing => "/no/such/path"
|
99
|
+
|
100
|
+
provider.stubs(:binary).returns "/no/such/path"
|
101
|
+
|
102
|
+
provider.command(:testing)
|
103
|
+
assert_equal("/no/such/path", provider.command(:testing), "Did not return correct binary path")
|
104
|
+
end
|
105
|
+
|
85
106
|
def test_command
|
86
107
|
{:echo => "echo", :echo_with_path => echo, :missing => "nosuchcommand", :missing_qualified => "/path/to/nosuchcommand"}.each do |name, command|
|
87
108
|
provider = newprovider
|
@@ -145,16 +145,7 @@ class TestFileSources < Test::Unit::TestCase
|
|
145
145
|
# Make sure the munge didn't actually change the source
|
146
146
|
assert_equal([source], property.should, "munging changed the source")
|
147
147
|
|
148
|
-
# First try it with a missing source
|
149
148
|
currentvalue = nil
|
150
|
-
assert_nothing_raised do
|
151
|
-
currentvalue = property.retrieve
|
152
|
-
end
|
153
|
-
|
154
|
-
# And make sure the property considers itself in sync, since there's nothing
|
155
|
-
# to do
|
156
|
-
assert(property.insync?(currentvalue), "source thinks there's work to do with no file or dest")
|
157
|
-
|
158
149
|
# Now make the dest a directory, and make sure the object sets :ensure
|
159
150
|
# up to create a directory
|
160
151
|
Dir.mkdir(source)
|
@@ -170,9 +161,6 @@ class TestFileSources < Test::Unit::TestCase
|
|
170
161
|
|
171
162
|
# Now remove the source, and make sure :ensure was not modified
|
172
163
|
Dir.rmdir(source)
|
173
|
-
assert_nothing_raised do
|
174
|
-
property.retrieve
|
175
|
-
end
|
176
164
|
assert_equal(:directory, file.should(:ensure),
|
177
165
|
"Did not keep :ensure setting")
|
178
166
|
|
@@ -208,10 +196,6 @@ class TestFileSources < Test::Unit::TestCase
|
|
208
196
|
property = file.property(:source)
|
209
197
|
assert(property, "did not get source property")
|
210
198
|
|
211
|
-
# Try it with no source at all
|
212
|
-
currentvalues = file.retrieve
|
213
|
-
assert(property.insync?(currentvalues[property]), "source property not in sync with missing source")
|
214
|
-
|
215
199
|
# with a directory
|
216
200
|
Dir.mkdir(source)
|
217
201
|
currentvalues = file.retrieve
|
@@ -623,9 +607,9 @@ class TestFileSources < Test::Unit::TestCase
|
|
623
607
|
:name => name
|
624
608
|
)
|
625
609
|
|
626
|
-
|
610
|
+
assert_raise Puppet::Error do
|
627
611
|
file.retrieve
|
628
|
-
|
612
|
+
end
|
629
613
|
|
630
614
|
comp = mk_catalog(file)
|
631
615
|
comp.apply
|
data/test/ral/type/sshkey.rb
CHANGED
data/test/ral/type/user.rb
CHANGED
@@ -362,6 +362,12 @@ class TestUser < Test::Unit::TestCase
|
|
362
362
|
user.delete(:groups)
|
363
363
|
end
|
364
364
|
|
365
|
+
def test_groups_list_must_not_contain_commas
|
366
|
+
assert_raise(Puppet::Error) do
|
367
|
+
Puppet::Type.type(:user).create :name => "luke", :groups => "root,adm"
|
368
|
+
end
|
369
|
+
end
|
370
|
+
|
365
371
|
def test_autorequire
|
366
372
|
file = tempfile()
|
367
373
|
comp = nil
|
data/test/test
ADDED
@@ -0,0 +1,241 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
#
|
4
|
+
# = Synopsis
|
5
|
+
#
|
6
|
+
# Run unit tests, usually with the goal of resolving some conflict
|
7
|
+
# between tests.
|
8
|
+
#
|
9
|
+
# = Usage
|
10
|
+
#
|
11
|
+
# test [-d|--debug] [-f|--files] [-h|--help] [-n method] [-v|--verbose] <file> [file] ...
|
12
|
+
#
|
13
|
+
# = Description
|
14
|
+
#
|
15
|
+
# This script is useful for running a specific subset of unit tests, especially
|
16
|
+
# when attempting to find a conflict between tests. By default, it will take
|
17
|
+
# the first argument you pass it and run that test or test directory with each
|
18
|
+
# test directory in turn, looking for a failure. If any tests fail, then
|
19
|
+
# the script will drill into that test directory, looking for the specific conflict.
|
20
|
+
#
|
21
|
+
# In this way, when you have deduced you have two conflicting unit tests (tests which
|
22
|
+
# pass in isolation but fail when run together), you can tell this script where
|
23
|
+
# the failure is and leave it alone to find the conflict.
|
24
|
+
#
|
25
|
+
# This script is different from the Rakefile because it will run all tests in
|
26
|
+
# a single process, whereas if you ask the Rakefile to run multiple tests, it will
|
27
|
+
# run them in separate processes thus making it impossible to find conflicts.
|
28
|
+
#
|
29
|
+
# = Examples
|
30
|
+
#
|
31
|
+
# Attempt to resolve a conflict between a single test suite that could be anywhere:
|
32
|
+
#
|
33
|
+
# ./test ral/providers/user.rb
|
34
|
+
#
|
35
|
+
# Determine whether two individual files conflict:
|
36
|
+
#
|
37
|
+
# ./test --files language/functions.rb ral/providers/provider.rb
|
38
|
+
#
|
39
|
+
# Run the same test, but only run a specific unit test:
|
40
|
+
#
|
41
|
+
# ./test -d -n test_search --files language/functions.rb ral/providers/provider.rb
|
42
|
+
#
|
43
|
+
# = Options
|
44
|
+
#
|
45
|
+
# debug::
|
46
|
+
# Enable full debugging.
|
47
|
+
#
|
48
|
+
# files::
|
49
|
+
# Specify exactly which files to test.
|
50
|
+
#
|
51
|
+
# help::
|
52
|
+
# Print this help message
|
53
|
+
#
|
54
|
+
# n::
|
55
|
+
# Specify a single unit test to run. You can still specify as many files
|
56
|
+
# as you want.
|
57
|
+
#
|
58
|
+
# verbose::
|
59
|
+
# Print extra information.
|
60
|
+
#
|
61
|
+
# = Example
|
62
|
+
#
|
63
|
+
# puppet -l /tmp/script.log script.pp
|
64
|
+
#
|
65
|
+
# = Author
|
66
|
+
#
|
67
|
+
# Luke Kanies
|
68
|
+
#
|
69
|
+
# = Copyright
|
70
|
+
#
|
71
|
+
# Copyright (c) 2005 Reductive Labs, LLC
|
72
|
+
# Licensed under the GNU Public License
|
73
|
+
|
74
|
+
require 'find'
|
75
|
+
require 'getoptlong'
|
76
|
+
include Find
|
77
|
+
|
78
|
+
result = GetoptLong.new(
|
79
|
+
[ "--debug", "-d", GetoptLong::NO_ARGUMENT ],
|
80
|
+
[ "--verbose", "-v", GetoptLong::NO_ARGUMENT ],
|
81
|
+
[ "-n", GetoptLong::REQUIRED_ARGUMENT ],
|
82
|
+
[ "--files", "-f", GetoptLong::NO_ARGUMENT ],
|
83
|
+
[ "--help", "-h", GetoptLong::NO_ARGUMENT ]
|
84
|
+
)
|
85
|
+
|
86
|
+
usage = "USAGE: %s [--help] suite" % $0
|
87
|
+
|
88
|
+
$options = {}
|
89
|
+
keep = []
|
90
|
+
|
91
|
+
result.each { |opt,arg|
|
92
|
+
case opt
|
93
|
+
when "--verbose"
|
94
|
+
$options[:verbose] = true
|
95
|
+
when "--files"
|
96
|
+
$options[:files] = true
|
97
|
+
when "--debug"
|
98
|
+
$options[:debug] = true
|
99
|
+
$options[:verbose] = true
|
100
|
+
when "--help"
|
101
|
+
puts usage
|
102
|
+
exit
|
103
|
+
else
|
104
|
+
keep << opt
|
105
|
+
keep << arg if arg
|
106
|
+
end
|
107
|
+
}
|
108
|
+
|
109
|
+
def dirs
|
110
|
+
Dir.glob("*").find_all { |d| FileTest.directory?(d) }.reject { |d|
|
111
|
+
["lib", "data"].include?(d)
|
112
|
+
}
|
113
|
+
end
|
114
|
+
|
115
|
+
def rake(*args)
|
116
|
+
print "trying %s..." % args.join(" ")
|
117
|
+
output = %x{rake %s} % args.join(" ")
|
118
|
+
|
119
|
+
if $?.exitstatus == 0
|
120
|
+
puts "succeeded"
|
121
|
+
return true
|
122
|
+
else
|
123
|
+
puts "failed"
|
124
|
+
return false
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def resolve(dir)
|
129
|
+
dirs = dirs()
|
130
|
+
|
131
|
+
# If the passed dir is a subdir or file, put the basedir last
|
132
|
+
if dir.include?(File::SEPARATOR)
|
133
|
+
basedir = dir.split(File::SEPARATOR)[0]
|
134
|
+
if dirs.include?(basedir)
|
135
|
+
dirs.delete(basedir)
|
136
|
+
dirs << basedir
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
failed = nil
|
141
|
+
dirs.each do |d|
|
142
|
+
next if d == dir
|
143
|
+
unless run([d, dir])
|
144
|
+
failed = d
|
145
|
+
break
|
146
|
+
end
|
147
|
+
end
|
148
|
+
puts "%s failed" % failed
|
149
|
+
|
150
|
+
files = ruby_files(failed)
|
151
|
+
|
152
|
+
files.each do |file|
|
153
|
+
unless run([file, dir])
|
154
|
+
puts file
|
155
|
+
exit(0)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
exit(1)
|
160
|
+
end
|
161
|
+
|
162
|
+
def ruby_files(dir)
|
163
|
+
files = []
|
164
|
+
# First collect the entire file list.
|
165
|
+
begin
|
166
|
+
find(dir) { |f| files << f if f =~ /\.rb$/ }
|
167
|
+
rescue => detail
|
168
|
+
puts "could not find on %s: %s" % [dir.inspect, detail]
|
169
|
+
end
|
170
|
+
files
|
171
|
+
end
|
172
|
+
|
173
|
+
def run(files, flags = nil)
|
174
|
+
args = %w{ruby}
|
175
|
+
args << "-Ilib:../lib"
|
176
|
+
args << "lib/rake/puppet_test_loader.rb"
|
177
|
+
if flags
|
178
|
+
args += flags
|
179
|
+
end
|
180
|
+
args += ARGV
|
181
|
+
|
182
|
+
print files.join(" ") + "... "
|
183
|
+
$stdout.flush
|
184
|
+
|
185
|
+
files.each do |file|
|
186
|
+
case File.stat(file).ftype
|
187
|
+
when "file": args << file
|
188
|
+
when "directory": args += ruby_files(file)
|
189
|
+
else
|
190
|
+
$stderr.puts "Skipping %s; can't handle %s" %
|
191
|
+
[file, File.stat(file).ftype]
|
192
|
+
end
|
193
|
+
end
|
194
|
+
args = args.join(" ")
|
195
|
+
if $options[:verbose]
|
196
|
+
p args
|
197
|
+
end
|
198
|
+
output = %x{#{args} 2>&1}
|
199
|
+
if $options[:debug]
|
200
|
+
print output
|
201
|
+
end
|
202
|
+
|
203
|
+
if $?.exitstatus == 0
|
204
|
+
puts "succeeded"
|
205
|
+
return true
|
206
|
+
else
|
207
|
+
puts "failed"
|
208
|
+
puts output
|
209
|
+
return false
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
if $options[:files]
|
214
|
+
run(ARGV, keep)
|
215
|
+
else
|
216
|
+
dir = ARGV.shift
|
217
|
+
|
218
|
+
unless dir
|
219
|
+
$stderr.puts usage
|
220
|
+
exit(1)
|
221
|
+
end
|
222
|
+
resolve(dir)
|
223
|
+
end
|
224
|
+
#
|
225
|
+
#
|
226
|
+
#files = []
|
227
|
+
#
|
228
|
+
#args.each do |test|
|
229
|
+
# if FileTest.directory?(test)
|
230
|
+
# files += ruby_files(test)
|
231
|
+
# end
|
232
|
+
#end
|
233
|
+
|
234
|
+
## Now load all of our files.
|
235
|
+
#files.each do |file|
|
236
|
+
# load file unless file =~ /^-/
|
237
|
+
#end
|
238
|
+
#
|
239
|
+
#runner = Test::Unit::AutoRunner.new(false)
|
240
|
+
#runner.process_args
|
241
|
+
#runner.run
|