summaryrefslogtreecommitdiffstats
path: root/test/ral/providers/cron
diff options
context:
space:
mode:
authorMarkus Roberts <Markus@reality.com>2010-07-09 18:12:17 -0700
committerMarkus Roberts <Markus@reality.com>2010-07-09 18:12:17 -0700
commit3180b9d9b2c844dade1d361326600f7001ec66dd (patch)
tree98fe7c5ac7eb942aac9c39f019a17b0b3f5a57f4 /test/ral/providers/cron
parent543225970225de5697734bfaf0a6eee996802c04 (diff)
downloadpuppet-3180b9d9b2c844dade1d361326600f7001ec66dd.tar.gz
puppet-3180b9d9b2c844dade1d361326600f7001ec66dd.tar.xz
puppet-3180b9d9b2c844dade1d361326600f7001ec66dd.zip
Code smell: Two space indentation
Replaced 106806 occurances of ^( +)(.*$) with The ruby community almost universally (i.e. everyone but Luke, Markus, and the other eleven people who learned ruby in the 1900s) uses two-space indentation. 3 Examples: The code: end # Tell getopt which arguments are valid def test_get_getopt_args element = Setting.new :name => "foo", :desc => "anything", :settings => Puppet::Util::Settings.new assert_equal([["--foo", GetoptLong::REQUIRED_ARGUMENT]], element.getopt_args, "Did not produce appropriate getopt args") becomes: end # Tell getopt which arguments are valid def test_get_getopt_args element = Setting.new :name => "foo", :desc => "anything", :settings => Puppet::Util::Settings.new assert_equal([["--foo", GetoptLong::REQUIRED_ARGUMENT]], element.getopt_args, "Did not produce appropriate getopt args") The code: assert_equal(str, val) assert_instance_of(Float, result) end # Now test it with a passed object becomes: assert_equal(str, val) assert_instance_of(Float, result) end # Now test it with a passed object The code: end assert_nothing_raised do klass[:Yay] = "boo" klass["Cool"] = :yayness end becomes: end assert_nothing_raised do klass[:Yay] = "boo" klass["Cool"] = :yayness end
Diffstat (limited to 'test/ral/providers/cron')
-rwxr-xr-xtest/ral/providers/cron/crontab.rb1082
1 files changed, 541 insertions, 541 deletions
diff --git a/test/ral/providers/cron/crontab.rb b/test/ral/providers/cron/crontab.rb
index 3a996cb4e..0c87a5bba 100755
--- a/test/ral/providers/cron/crontab.rb
+++ b/test/ral/providers/cron/crontab.rb
@@ -7,642 +7,642 @@ require 'mocha'
require 'puppettest/fileparsing'
class TestCronParsedProvider < Test::Unit::TestCase
- include PuppetTest
- include PuppetTest::FileParsing
-
-
- FIELDS = {
- :crontab => %w{command minute hour month monthday weekday}.collect { |o| o.intern },
- :freebsd_special => %w{special command}.collect { |o| o.intern },
- :environment => [:line],
- :blank => [:line],
- :comment => [:line],
- }
-
- # These are potentially multi-line records; there's no one-to-one map, but they model
- # a full cron job. These tests assume individual record types will always be correctly
- # parsed, so all they
- def sample_crons
- @sample_crons ||= YAML.load(File.read(File.join(@crondir, "crontab_collections.yaml")))
+ include PuppetTest
+ include PuppetTest::FileParsing
+
+
+ FIELDS = {
+ :crontab => %w{command minute hour month monthday weekday}.collect { |o| o.intern },
+ :freebsd_special => %w{special command}.collect { |o| o.intern },
+ :environment => [:line],
+ :blank => [:line],
+ :comment => [:line],
+ }
+
+ # These are potentially multi-line records; there's no one-to-one map, but they model
+ # a full cron job. These tests assume individual record types will always be correctly
+ # parsed, so all they
+ def sample_crons
+ @sample_crons ||= YAML.load(File.read(File.join(@crondir, "crontab_collections.yaml")))
+ end
+
+ # These are simple lines that can appear in the files; there is a one to one
+ # mapping between records and lines. We have plenty of redundancy here because
+ # we use these records to build up our complex, multi-line cron jobs below.
+ def sample_records
+ @sample_records ||= YAML.load(File.read(File.join(@crondir, "crontab_sample_records.yaml")))
+ end
+
+ def setup
+ super
+ @type = Puppet::Type.type(:cron)
+ @provider = @type.provider(:crontab)
+ @provider.initvars
+ @crondir = datadir(File.join(%w{providers cron}))
+
+ @oldfiletype = @provider.filetype
+ end
+
+ def teardown
+ Puppet::Util::FileType.filetype(:ram).clear
+ @provider.clear
+ super
+ end
+
+ # Make sure a cron job matches up. Any non-passed fields are considered absent.
+ def assert_cron_equal(msg, cron, options)
+ assert_instance_of(@provider, cron, "not an instance of provider in #{msg}")
+ options.each do |param, value|
+ assert_equal(value, cron.send(param), "#{param} was not equal in #{msg}")
end
-
- # These are simple lines that can appear in the files; there is a one to one
- # mapping between records and lines. We have plenty of redundancy here because
- # we use these records to build up our complex, multi-line cron jobs below.
- def sample_records
- @sample_records ||= YAML.load(File.read(File.join(@crondir, "crontab_sample_records.yaml")))
+ %w{command environment minute hour month monthday weekday}.each do |var|
+ assert_equal(:absent, cron.send(var), "#{var} was not parsed absent in #{msg}") unless options.include?(var.intern)
end
+ end
+
+ # Make sure a cron record matches. This only works for crontab records.
+ def assert_record_equal(msg, record, options)
+ raise ArgumentError, "You must pass the required record type" unless options.include?(:record_type)
+ assert_instance_of(Hash, record, "not an instance of a hash in #{msg}")
+ options.each do |param, value|
+ assert_equal(value, record[param], "#{param} was not equal in #{msg}")
+ end
+ FIELDS[record[:record_type]].each do |var|
+ assert_equal(:absent, record[var], "#{var} was not parsed absent in #{msg}") unless options.include?(var)
+ end
+ end
- def setup
- super
- @type = Puppet::Type.type(:cron)
- @provider = @type.provider(:crontab)
- @provider.initvars
- @crondir = datadir(File.join(%w{providers cron}))
+ def assert_header(file)
+ header = []
+ file.gsub! /^(# HEADER: .+$)\n/ do
+ header << $1
+ ''
+ end
+ assert_equal(4, header.length, "Did not get four header lines")
+ end
+
+ # This handles parsing every possible iteration of cron records. Note that this is only
+ # single-line stuff and doesn't include multi-line values (e.g., with names and/or envs).
+ # Those have separate tests.
+ def test_parse_line
+ # First just do each sample record one by one
+ sample_records.each do |name, options|
+ result = nil
+ assert_nothing_raised("Could not parse #{name}: '#{options[:text]}'") do
+ result = @provider.parse_line(options[:text])
+ end
+ assert_record_equal("record for #{name}", result, options[:record])
+ end
- @oldfiletype = @provider.filetype
+ # Then do them all at once.
+ records = []
+ text = ""
+ sample_records.each do |name, options|
+ records << options[:record]
+ text += options[:text] + "\n"
end
- def teardown
- Puppet::Util::FileType.filetype(:ram).clear
- @provider.clear
- super
+ result = nil
+ assert_nothing_raised("Could not match all records in one file") do
+ result = @provider.parse(text)
end
- # Make sure a cron job matches up. Any non-passed fields are considered absent.
- def assert_cron_equal(msg, cron, options)
- assert_instance_of(@provider, cron, "not an instance of provider in #{msg}")
- options.each do |param, value|
- assert_equal(value, cron.send(param), "#{param} was not equal in #{msg}")
- end
- %w{command environment minute hour month monthday weekday}.each do |var|
- assert_equal(:absent, cron.send(var), "#{var} was not parsed absent in #{msg}") unless options.include?(var.intern)
- end
+ records.zip(result).each do |should, record|
+ assert_record_equal("record for #{should.inspect} in full match", record, should)
+ end
+ end
+
+ # Here we test that each record generates to the correct text.
+ def test_generate_line
+ # First just do each sample record one by one
+ sample_records.each do |name, options|
+ result = nil
+ assert_nothing_raised("Could not generate #{name}: '#{options[:record]}'") do
+ result = @provider.to_line(options[:record])
+ end
+ assert_equal(options[:text], result, "Did not generate correct text for #{name}")
end
- # Make sure a cron record matches. This only works for crontab records.
- def assert_record_equal(msg, record, options)
- raise ArgumentError, "You must pass the required record type" unless options.include?(:record_type)
- assert_instance_of(Hash, record, "not an instance of a hash in #{msg}")
- options.each do |param, value|
- assert_equal(value, record[param], "#{param} was not equal in #{msg}")
- end
- FIELDS[record[:record_type]].each do |var|
- assert_equal(:absent, record[var], "#{var} was not parsed absent in #{msg}") unless options.include?(var)
- end
+ # Then do them all at once.
+ records = []
+ text = ""
+ sample_records.each do |name, options|
+ records << options[:record]
+ text += options[:text] + "\n"
end
- def assert_header(file)
- header = []
- file.gsub! /^(# HEADER: .+$)\n/ do
- header << $1
- ''
- end
- assert_equal(4, header.length, "Did not get four header lines")
+ result = nil
+ assert_nothing_raised("Could not match all records in one file") do
+ result = @provider.to_file(records)
end
- # This handles parsing every possible iteration of cron records. Note that this is only
- # single-line stuff and doesn't include multi-line values (e.g., with names and/or envs).
- # Those have separate tests.
- def test_parse_line
- # First just do each sample record one by one
- sample_records.each do |name, options|
- result = nil
- assert_nothing_raised("Could not parse #{name}: '#{options[:text]}'") do
- result = @provider.parse_line(options[:text])
- end
- assert_record_equal("record for #{name}", result, options[:record])
- end
+ assert_header(result)
- # Then do them all at once.
- records = []
- text = ""
- sample_records.each do |name, options|
- records << options[:record]
- text += options[:text] + "\n"
- end
+ assert_equal(text, result, "Did not generate correct full crontab")
+ end
- result = nil
- assert_nothing_raised("Could not match all records in one file") do
- result = @provider.parse(text)
+ # Test cronjobs that are made up from multiple records.
+ def test_multi_line_cronjobs
+ fulltext = ""
+ all_records = []
+ sample_crons.each do |name, record_names|
+ records = record_names.collect do |record_name|
+ unless record = sample_records[record_name]
+ raise "Could not find sample record #{record_name}"
end
+ record
+ end
+
+ text = records.collect { |r| r[:text] }.join("\n") + "\n"
+ record_list = records.collect { |r| r[:record] }
+
+ # Add it to our full collection
+ all_records += record_list
+ fulltext += text
+
+ # First make sure we generate each one correctly
+ result = nil
+ assert_nothing_raised("Could not generate multi-line cronjob #{name}") do
+ result = @provider.to_file(record_list)
+ end
+ assert_header(result)
+ assert_equal(text, result, "Did not generate correct text for multi-line cronjob #{name}")
+
+ # Now make sure we parse each one correctly
+ assert_nothing_raised("Could not parse multi-line cronjob #{name}") do
+ result = @provider.parse(text)
+ end
+ record_list.zip(result).each do |should, record|
+ assert_record_equal("multiline cronjob #{name}", record, should)
+ end
+ end
- records.zip(result).each do |should, record|
- assert_record_equal("record for #{should.inspect} in full match", record, should)
- end
+ # Make sure we can generate it all correctly
+ result = nil
+ assert_nothing_raised("Could not generate all multi-line cronjobs") do
+ result = @provider.to_file(all_records)
end
+ assert_header(result)
+ assert_equal(fulltext, result, "Did not generate correct text for all multi-line cronjobs")
- # Here we test that each record generates to the correct text.
- def test_generate_line
- # First just do each sample record one by one
- sample_records.each do |name, options|
- result = nil
- assert_nothing_raised("Could not generate #{name}: '#{options[:record]}'") do
- result = @provider.to_line(options[:record])
- end
- assert_equal(options[:text], result, "Did not generate correct text for #{name}")
+ # Now make sure we parse them all correctly
+ assert_nothing_raised("Could not parse multi-line cronjobs") do
+ result = @provider.parse(fulltext)
+ end
+ all_records.zip(result).each do |should, record|
+ assert_record_equal("multiline cronjob %s", record, should)
+ end
+ end
+
+ # Take our sample files, and make sure we can entirely parse them,
+ # then that we can generate them again and we get the same data.
+ def test_parse_and_generate_sample_files
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
+ crondir = datadir(File.join(%w{providers cron}))
+ files = Dir.glob("#{crondir}/crontab.*")
+
+ setme
+ @provider.default_target = @me
+ target = @provider.target_object(@me)
+ files.each do |file|
+ str = args = nil
+ assert_nothing_raised("could not load #{file}") do
+ str, args = YAML.load(File.read(file))
+ end
+
+ # Stupid old yaml
+ args.each do |hash|
+ hash.each do |param, value|
+ if param.is_a?(String) and param =~ /^:/
+ hash.delete(param)
+ param = param.sub(/^:/,'').intern
+ hash[param] = value
+ end
+
+ if value.is_a?(String) and value =~ /^:/
+ value = value.sub(/^:/,'').intern
+ hash[param] = value
+ end
end
-
- # Then do them all at once.
- records = []
- text = ""
- sample_records.each do |name, options|
- records << options[:record]
- text += options[:text] + "\n"
+ end
+ target.write(str)
+ assert_nothing_raised("could not parse #{file}") do
+ @provider.prefetch
+ end
+ records = @provider.send(:instance_variable_get, "@records")
+
+ args.zip(records) do |should, sis|
+ # Make the values a bit more equal.
+ should[:target] = @me
+ should[:ensure] = :present
+ #should[:environment] ||= []
+ should[:on_disk] = true
+ is = sis.dup
+ sis.dup.each do |p,v|
+ is.delete(p) if v == :absent
end
- result = nil
- assert_nothing_raised("Could not match all records in one file") do
- result = @provider.to_file(records)
- end
+ assert_equal(
+ should, is,
+
+ "Did not parse #{file} correctly")
+ end
- assert_header(result)
+ assert_nothing_raised("could not generate #{file}") do
+ @provider.flush_target(@me)
+ end
- assert_equal(text, result, "Did not generate correct full crontab")
+ assert_equal(str, target.read, "#{file} changed")
+ @provider.clear
end
+ end
+
+ # A simple test to see if we can load the cron from disk.
+ def test_load
+ setme
+ records = nil
+ assert_nothing_raised {
+ records = @provider.retrieve(@me)
+ }
+ assert_instance_of(Array, records, "did not get correct response")
+ end
+
+ # Test that a cron job turns out as expected, by creating one and generating
+ # it directly
+ def test_simple_to_cron
+ # make the cron
+ setme
+
+ name = "yaytest"
+ args = {:name => name,
+ :command => "date > /dev/null",
+ :minute => "30",
+ :user => @me,
+ :record_type => :crontab
+ }
+ # generate the text
+ str = nil
+ assert_nothing_raised {
+ str = @provider.to_line(args)
+ }
- # Test cronjobs that are made up from multiple records.
- def test_multi_line_cronjobs
- fulltext = ""
- all_records = []
- sample_crons.each do |name, record_names|
- records = record_names.collect do |record_name|
- unless record = sample_records[record_name]
- raise "Could not find sample record #{record_name}"
- end
- record
- end
-
- text = records.collect { |r| r[:text] }.join("\n") + "\n"
- record_list = records.collect { |r| r[:record] }
-
- # Add it to our full collection
- all_records += record_list
- fulltext += text
-
- # First make sure we generate each one correctly
- result = nil
- assert_nothing_raised("Could not generate multi-line cronjob #{name}") do
- result = @provider.to_file(record_list)
- end
- assert_header(result)
- assert_equal(text, result, "Did not generate correct text for multi-line cronjob #{name}")
-
- # Now make sure we parse each one correctly
- assert_nothing_raised("Could not parse multi-line cronjob #{name}") do
- result = @provider.parse(text)
- end
- record_list.zip(result).each do |should, record|
- assert_record_equal("multiline cronjob #{name}", record, should)
- end
- end
-
- # Make sure we can generate it all correctly
- result = nil
- assert_nothing_raised("Could not generate all multi-line cronjobs") do
- result = @provider.to_file(all_records)
- end
- assert_header(result)
- assert_equal(fulltext, result, "Did not generate correct text for all multi-line cronjobs")
-
- # Now make sure we parse them all correctly
- assert_nothing_raised("Could not parse multi-line cronjobs") do
- result = @provider.parse(fulltext)
- end
- all_records.zip(result).each do |should, record|
- assert_record_equal("multiline cronjob %s", record, should)
- end
- end
- # Take our sample files, and make sure we can entirely parse them,
- # then that we can generate them again and we get the same data.
- def test_parse_and_generate_sample_files
- @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
- crondir = datadir(File.join(%w{providers cron}))
- files = Dir.glob("#{crondir}/crontab.*")
-
- setme
- @provider.default_target = @me
- target = @provider.target_object(@me)
- files.each do |file|
- str = args = nil
- assert_nothing_raised("could not load #{file}") do
- str, args = YAML.load(File.read(file))
- end
-
- # Stupid old yaml
- args.each do |hash|
- hash.each do |param, value|
- if param.is_a?(String) and param =~ /^:/
- hash.delete(param)
- param = param.sub(/^:/,'').intern
- hash[param] = value
- end
-
- if value.is_a?(String) and value =~ /^:/
- value = value.sub(/^:/,'').intern
- hash[param] = value
- end
- end
- end
- target.write(str)
- assert_nothing_raised("could not parse #{file}") do
- @provider.prefetch
- end
- records = @provider.send(:instance_variable_get, "@records")
-
- args.zip(records) do |should, sis|
- # Make the values a bit more equal.
- should[:target] = @me
- should[:ensure] = :present
- #should[:environment] ||= []
- should[:on_disk] = true
- is = sis.dup
- sis.dup.each do |p,v|
- is.delete(p) if v == :absent
- end
-
- assert_equal(
- should, is,
+ assert_equal(
+ "# Puppet Name: #{name}\n30 * * * * date > /dev/null", str,
- "Did not parse #{file} correctly")
- end
+ "Cron did not generate correctly")
+ end
+
+ # Test that comments are correctly retained
+ def test_retain_comments
+ str = "# this is a comment\n#and another comment\n"
+ user = "fakeuser"
+ records = nil
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
+ target = @provider.target_object(user)
+ target.write(str)
+ assert_nothing_raised {
+ @provider.prefetch
+ }
- assert_nothing_raised("could not generate #{file}") do
- @provider.flush_target(@me)
- end
+ assert_nothing_raised {
+ newstr = @provider.flush_target(user)
+ assert(target.read.include?(str), "Comments were lost")
+ }
+ end
- assert_equal(str, target.read, "#{file} changed")
- @provider.clear
- end
- end
+ def test_simpleparsing
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
+ text = "5 1,2 * 1 0 /bin/echo funtest"
- # A simple test to see if we can load the cron from disk.
- def test_load
- setme
- records = nil
- assert_nothing_raised {
- records = @provider.retrieve(@me)
- }
- assert_instance_of(Array, records, "did not get correct response")
- end
+ records = nil
+ assert_nothing_raised {
+ records = @provider.parse(text)
+ }
- # Test that a cron job turns out as expected, by creating one and generating
- # it directly
- def test_simple_to_cron
- # make the cron
- setme
-
- name = "yaytest"
- args = {:name => name,
- :command => "date > /dev/null",
- :minute => "30",
- :user => @me,
- :record_type => :crontab
- }
- # generate the text
- str = nil
- assert_nothing_raised {
- str = @provider.to_line(args)
- }
-
-
- assert_equal(
- "# Puppet Name: #{name}\n30 * * * * date > /dev/null", str,
-
- "Cron did not generate correctly")
- end
+ should = {
+ :minute => %w{5},
+ :hour => %w{1 2},
+ :monthday => :absent,
+ :month => %w{1},
+ :weekday => %w{0},
+ :command => "/bin/echo funtest"
+ }
- # Test that comments are correctly retained
- def test_retain_comments
- str = "# this is a comment\n#and another comment\n"
- user = "fakeuser"
- records = nil
- @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
- target = @provider.target_object(user)
- target.write(str)
- assert_nothing_raised {
- @provider.prefetch
- }
-
- assert_nothing_raised {
- newstr = @provider.flush_target(user)
- assert(target.read.include?(str), "Comments were lost")
- }
- end
+ is = records.shift
+ assert(is, "Did not get record")
- def test_simpleparsing
- @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
- text = "5 1,2 * 1 0 /bin/echo funtest"
-
- records = nil
- assert_nothing_raised {
- records = @provider.parse(text)
- }
-
- should = {
- :minute => %w{5},
- :hour => %w{1 2},
- :monthday => :absent,
- :month => %w{1},
- :weekday => %w{0},
- :command => "/bin/echo funtest"
- }
-
- is = records.shift
- assert(is, "Did not get record")
-
- should.each do |p, v|
- assert_equal(v, is[p], "did not parse #{p} correctly")
- end
+ should.each do |p, v|
+ assert_equal(v, is[p], "did not parse #{p} correctly")
end
+ end
- # Make sure we can create a cron in an empty tab.
- # LAK:FIXME This actually modifies the user's crontab,
- # which is pretty heinous.
- def test_mkcron_if_empty
- setme
- @provider.filetype = @oldfiletype
-
- records = @provider.retrieve(@me)
+ # Make sure we can create a cron in an empty tab.
+ # LAK:FIXME This actually modifies the user's crontab,
+ # which is pretty heinous.
+ def test_mkcron_if_empty
+ setme
+ @provider.filetype = @oldfiletype
- target = @provider.target_object(@me)
+ records = @provider.retrieve(@me)
- cleanup do
- if records.length == 0
- target.remove
- else
- target.write(@provider.to_file(records))
- end
- end
+ target = @provider.target_object(@me)
- # Now get rid of it
- assert_nothing_raised("Could not remove cron tab") do
- target.remove
- end
+ cleanup do
+ if records.length == 0
+ target.remove
+ else
+ target.write(@provider.to_file(records))
+ end
+ end
- @provider.flush :target => @me, :command => "/do/something",
- :record_type => :crontab
- created = @provider.retrieve(@me)
- assert(created.detect { |r| r[:command] == "/do/something" }, "Did not create cron tab")
+ # Now get rid of it
+ assert_nothing_raised("Could not remove cron tab") do
+ target.remove
end
- # Make sure we correctly bidirectionally parse things.
- def test_records_and_strings
- @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
- setme
-
- target = @provider.target_object(@me)
-
- [
- "* * * * * /some/command",
- "0,30 * * * * /some/command",
- "0-30 * * * * /some/command",
- "# Puppet Name: name\n0-30 * * * * /some/command",
- "# Puppet Name: name\nVAR=VALUE\n0-30 * * * * /some/command",
- "# Puppet Name: name\nVAR=VALUE\nC=D\n0-30 * * * * /some/command",
- "0 * * * * /some/command"
- ].each do |str|
- @provider.initvars
- str += "\n"
- target.write(str)
-
- assert_equal(
- str, target.read,
+ @provider.flush :target => @me, :command => "/do/something",
+ :record_type => :crontab
+ created = @provider.retrieve(@me)
+ assert(created.detect { |r| r[:command] == "/do/something" }, "Did not create cron tab")
+ end
+
+ # Make sure we correctly bidirectionally parse things.
+ def test_records_and_strings
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
+ setme
+
+ target = @provider.target_object(@me)
+
+ [
+ "* * * * * /some/command",
+ "0,30 * * * * /some/command",
+ "0-30 * * * * /some/command",
+ "# Puppet Name: name\n0-30 * * * * /some/command",
+ "# Puppet Name: name\nVAR=VALUE\n0-30 * * * * /some/command",
+ "# Puppet Name: name\nVAR=VALUE\nC=D\n0-30 * * * * /some/command",
+ "0 * * * * /some/command"
+ ].each do |str|
+ @provider.initvars
+ str += "\n"
+ target.write(str)
+
+ assert_equal(
+ str, target.read,
- "Did not write correctly")
- assert_nothing_raised("Could not prefetch with #{str.inspect}") do
- @provider.prefetch
- end
- assert_nothing_raised("Could not flush with #{str.inspect}") do
- @provider.flush_target(@me)
- end
+ "Did not write correctly")
+ assert_nothing_raised("Could not prefetch with #{str.inspect}") do
+ @provider.prefetch
+ end
+ assert_nothing_raised("Could not flush with #{str.inspect}") do
+ @provider.flush_target(@me)
+ end
- assert_equal(
- str, target.read,
+ assert_equal(
+ str, target.read,
- "Changed in read/write")
+ "Changed in read/write")
- @provider.clear
- end
+ @provider.clear
end
+ end
- # Test that a specified cron job will be matched against an existing job
- # with no name, as long as all fields match
- def test_matchcron
- mecron = "0,30 * * * * date
+ # Test that a specified cron job will be matched against an existing job
+ # with no name, as long as all fields match
+ def test_matchcron
+ mecron = "0,30 * * * * date
- * * * * * funtest
- # a comment
- 0,30 * * 1 * date
- "
+ * * * * * funtest
+ # a comment
+ 0,30 * * 1 * date
+ "
- youcron = "0,30 * * * * date
+ youcron = "0,30 * * * * date
- * * * * * yaytest
- # a comment
- 0,30 * * 1 * fooness
- "
- setme
- @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
- you = "you"
+ * * * * * yaytest
+ # a comment
+ 0,30 * * 1 * fooness
+ "
+ setme
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
+ you = "you"
- # Write the same tab to multiple targets
- @provider.target_object(@me).write(mecron.gsub(/^\s+/, ''))
- @provider.target_object(you).write(youcron.gsub(/^\s+/, ''))
+ # Write the same tab to multiple targets
+ @provider.target_object(@me).write(mecron.gsub(/^\s+/, ''))
+ @provider.target_object(you).write(youcron.gsub(/^\s+/, ''))
- # Now make some crons that should match
- matchers = [
+ # Now make some crons that should match
+ matchers = [
- @type.new(
+ @type.new(
- :name => "yaycron",
- :minute => [0, 30],
- :command => "date",
+ :name => "yaycron",
+ :minute => [0, 30],
+ :command => "date",
- :user => @me
- ),
+ :user => @me
+ ),
- @type.new(
+ @type.new(
- :name => "youtest",
- :command => "yaytest",
+ :name => "youtest",
+ :command => "yaytest",
- :user => you
- )
- ]
+ :user => you
+ )
+ ]
- nonmatchers = [
+ nonmatchers = [
- @type.new(
+ @type.new(
- :name => "footest",
- :minute => [0, 30],
- :hour => 1,
- :command => "fooness",
+ :name => "footest",
+ :minute => [0, 30],
+ :hour => 1,
+ :command => "fooness",
- :user => @me # wrong target
- ),
+ :user => @me # wrong target
+ ),
- @type.new(
+ @type.new(
- :name => "funtest2",
- :command => "funtest",
+ :name => "funtest2",
+ :command => "funtest",
- :user => you # wrong target for this cron
- )
- ]
-
- # Create another cron so we prefetch two of them
- @type.new(:name => "testing", :minute => 30, :command => "whatever", :user => "you")
-
- assert_nothing_raised("Could not prefetch cron") do
- @provider.prefetch([matchers, nonmatchers].flatten.inject({}) { |crons, cron| crons[cron.name] = cron; crons })
- end
+ :user => you # wrong target for this cron
+ )
+ ]
- matchers.each do |cron|
- assert_equal(:present, cron.provider.ensure, "Cron #{cron.name} was not matched")
- if value = cron.value(:minute) and value == "*"
- value = :absent
- end
- assert_equal(value, cron.provider.minute, "Minutes were not retrieved, so cron was not matched")
- assert_equal(cron.value(:target), cron.provider.target, "Cron #{cron.name} was matched from the wrong target")
- end
+ # Create another cron so we prefetch two of them
+ @type.new(:name => "testing", :minute => 30, :command => "whatever", :user => "you")
- nonmatchers.each do |cron|
- assert_equal(:absent, cron.provider.ensure, "Cron #{cron.name} was incorrectly matched")
- end
+ assert_nothing_raised("Could not prefetch cron") do
+ @provider.prefetch([matchers, nonmatchers].flatten.inject({}) { |crons, cron| crons[cron.name] = cron; crons })
end
- def test_data
- setme
- @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
- target = @provider.target_object(@me)
- fakedata("data/providers/cron/examples").each do |file|
- text = File.read(file)
- target.write(text)
-
- assert_nothing_raised("Could not parse #{file}") do
- @provider.prefetch
- end
- # mark the provider modified
- @provider.modified(@me)
-
- # and zero the text
- target.write("")
-
- result = nil
- assert_nothing_raised("Could not generate #{file}") do
- @provider.flush_target(@me)
- end
-
- # Ignore whitespace differences, since those don't affect function.
- modtext = text.gsub(/[ \t]+/, " ")
- modtarget = target.read.gsub(/[ \t]+/, " ")
- assert_equal(modtext, modtarget, "File was not rewritten the same")
-
- @provider.clear
- end
+ matchers.each do |cron|
+ assert_equal(:present, cron.provider.ensure, "Cron #{cron.name} was not matched")
+ if value = cron.value(:minute) and value == "*"
+ value = :absent
+ end
+ assert_equal(value, cron.provider.minute, "Minutes were not retrieved, so cron was not matched")
+ assert_equal(cron.value(:target), cron.provider.target, "Cron #{cron.name} was matched from the wrong target")
end
- # Match freebsd's annoying @daily stuff.
- def test_match_freebsd_special
- @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
- setme
-
- target = @provider.target_object(@me)
-
- [
- "@daily /some/command",
- "@daily /some/command more"
- ].each do |str|
- @provider.initvars
- str += "\n"
- target.write(str)
- assert_nothing_raised("Could not prefetch with #{str.inspect}") do
- @provider.prefetch
- end
- records = @provider.send(:instance_variable_get, "@records")
- records.each do |r|
-
- assert_equal(
- :freebsd_special, r[:record_type],
+ nonmatchers.each do |cron|
+ assert_equal(:absent, cron.provider.ensure, "Cron #{cron.name} was incorrectly matched")
+ end
+ end
+
+ def test_data
+ setme
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
+ target = @provider.target_object(@me)
+ fakedata("data/providers/cron/examples").each do |file|
+ text = File.read(file)
+ target.write(text)
+
+ assert_nothing_raised("Could not parse #{file}") do
+ @provider.prefetch
+ end
+ # mark the provider modified
+ @provider.modified(@me)
+
+ # and zero the text
+ target.write("")
+
+ result = nil
+ assert_nothing_raised("Could not generate #{file}") do
+ @provider.flush_target(@me)
+ end
+
+ # Ignore whitespace differences, since those don't affect function.
+ modtext = text.gsub(/[ \t]+/, " ")
+ modtarget = target.read.gsub(/[ \t]+/, " ")
+ assert_equal(modtext, modtarget, "File was not rewritten the same")
+
+ @provider.clear
+ end
+ end
+
+ # Match freebsd's annoying @daily stuff.
+ def test_match_freebsd_special
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
+ setme
+
+ target = @provider.target_object(@me)
+
+ [
+ "@daily /some/command",
+ "@daily /some/command more"
+ ].each do |str|
+ @provider.initvars
+ str += "\n"
+ target.write(str)
+ assert_nothing_raised("Could not prefetch with #{str.inspect}") do
+ @provider.prefetch
+ end
+ records = @provider.send(:instance_variable_get, "@records")
+ records.each do |r|
+
+ assert_equal(
+ :freebsd_special, r[:record_type],
- "Did not create lines as freebsd lines")
- end
- assert_nothing_raised("Could not flush with #{str.inspect}") do
- @provider.flush_target(@me)
- end
+ "Did not create lines as freebsd lines")
+ end
+ assert_nothing_raised("Could not flush with #{str.inspect}") do
+ @provider.flush_target(@me)
+ end
- assert_equal(
- str, target.read,
+ assert_equal(
+ str, target.read,
- "Changed in read/write")
+ "Changed in read/write")
- @provider.clear
- end
+ @provider.clear
end
+ end
- # #707
- def test_write_freebsd_special
- assert_equal(@provider.to_line(:record_type => :crontab, :ensure => :present, :special => "reboot", :command => "/bin/echo something"), "@reboot /bin/echo something")
- end
+ # #707
+ def test_write_freebsd_special
+ assert_equal(@provider.to_line(:record_type => :crontab, :ensure => :present, :special => "reboot", :command => "/bin/echo something"), "@reboot /bin/echo something")
+ end
- def test_prefetch
- cron = @type.new :command => "/bin/echo yay", :name => "test", :hour => 4
+ def test_prefetch
+ cron = @type.new :command => "/bin/echo yay", :name => "test", :hour => 4
- assert_nothing_raised("Could not prefetch cron") do
- cron.provider.class.prefetch("test" => cron)
- end
+ assert_nothing_raised("Could not prefetch cron") do
+ cron.provider.class.prefetch("test" => cron)
end
+ end
- # Testing #669.
- def test_environment_settings
- @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
- setme
+ # Testing #669.
+ def test_environment_settings
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
+ setme
- target = @provider.target_object(@me)
+ target = @provider.target_object(@me)
- # First with no env settings
- resource = @type.new :command => "/bin/echo yay", :name => "test", :hour => 4
- cron = resource.provider
+ # First with no env settings
+ resource = @type.new :command => "/bin/echo yay", :name => "test", :hour => 4
+ cron = resource.provider
- cron.ensure = :present
- cron.command = "/bin/echo yay"
- cron.hour = %w{4}
- cron.flush
+ cron.ensure = :present
+ cron.command = "/bin/echo yay"
+ cron.hour = %w{4}
+ cron.flush
- result = target.read
- assert_equal("# Puppet Name: test\n* 4 * * * /bin/echo yay\n", result, "Did not write cron out correctly")
+ result = target.read
+ assert_equal("# Puppet Name: test\n* 4 * * * /bin/echo yay\n", result, "Did not write cron out correctly")
- # Now set the env
- cron.environment = "TEST=foo"
- cron.flush
+ # Now set the env
+ cron.environment = "TEST=foo"
+ cron.flush
- result = target.read
- assert_equal("# Puppet Name: test\nTEST=foo\n* 4 * * * /bin/echo yay\n", result, "Did not write out environment setting")
+ result = target.read
+ assert_equal("# Puppet Name: test\nTEST=foo\n* 4 * * * /bin/echo yay\n", result, "Did not write out environment setting")
- # Modify it
- cron.environment = ["TEST=foo", "BLAH=yay"]
- cron.flush
+ # Modify it
+ cron.environment = ["TEST=foo", "BLAH=yay"]
+ cron.flush
- result = target.read
- assert_equal("# Puppet Name: test\nTEST=foo\nBLAH=yay\n* 4 * * * /bin/echo yay\n", result, "Did not write out environment setting")
+ result = target.read
+ assert_equal("# Puppet Name: test\nTEST=foo\nBLAH=yay\n* 4 * * * /bin/echo yay\n", result, "Did not write out environment setting")
- # And remove it
- cron.environment = :absent
- cron.flush
+ # And remove it
+ cron.environment = :absent
+ cron.flush
- result = target.read
- assert_equal("# Puppet Name: test\n* 4 * * * /bin/echo yay\n", result, "Did not write out environment setting")
- end
+ result = target.read
+ assert_equal("# Puppet Name: test\n* 4 * * * /bin/echo yay\n", result, "Did not write out environment setting")
+ end
- # Testing #1216
- def test_strange_lines
- @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
- text = " 5 \t\t 1,2 * 1 0 /bin/echo funtest"
-
- records = nil
- assert_nothing_raised {
- records = @provider.parse(text)
- }
-
- should = {
- :minute => %w{5},
- :hour => %w{1 2},
- :monthday => :absent,
- :month => %w{1},
- :weekday => %w{0},
- :command => "/bin/echo funtest"
- }
-
- is = records.shift
- assert(is, "Did not get record")
-
- should.each do |p, v|
- assert_equal(v, is[p], "did not parse #{p} correctly")
- end
+ # Testing #1216
+ def test_strange_lines
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
+ text = " 5 \t\t 1,2 * 1 0 /bin/echo funtest"
+
+ records = nil
+ assert_nothing_raised {
+ records = @provider.parse(text)
+ }
+
+ should = {
+ :minute => %w{5},
+ :hour => %w{1 2},
+ :monthday => :absent,
+ :month => %w{1},
+ :weekday => %w{0},
+ :command => "/bin/echo funtest"
+ }
+
+ is = records.shift
+ assert(is, "Did not get record")
+
+ should.each do |p, v|
+ assert_equal(v, is[p], "did not parse #{p} correctly")
end
+ end
end