aboutsummaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/acceptance/tests/resource/cron/should_write_leading_zeroes_spec.rb31
-rw-r--r--spec/unit/type/cron_spec.rb45
2 files changed, 76 insertions, 0 deletions
diff --git a/spec/acceptance/tests/resource/cron/should_write_leading_zeroes_spec.rb b/spec/acceptance/tests/resource/cron/should_write_leading_zeroes_spec.rb
new file mode 100644
index 0000000..eb2bf1e
--- /dev/null
+++ b/spec/acceptance/tests/resource/cron/should_write_leading_zeroes_spec.rb
@@ -0,0 +1,31 @@
+require 'spec_helper_acceptance'
+
+RSpec.context 'when leading zeroes are present' do
+ before(:each) do
+ compatible_agents.each do |agent|
+ step 'ensure the user exists via puppet'
+ setup(agent)
+ end
+ end
+
+ after(:each) do
+ compatible_agents.each do |agent|
+ step 'Cron: cleanup'
+ clean(agent)
+ end
+ end
+
+ compatible_agents.each do |host|
+ it 'does not ignore leading zeroes' do
+ step 'apply the resource on the host' do
+ on(host, puppet_resource('cron', 'crontest', 'user=tstuser', 'command=/bin/true', 'ensure=present', "minute='05'", "hour='007'", "weekday='03'", "month='0011'", "monthday='07'"), acceptable_exit_codes: [0])
+ end
+
+ step 'Verify that crontab -l contains what you expected' do
+ run_cron_on(host, :list, 'tstuser') do
+ expect(stdout).to match(%r{05 007 07 0011 03 /bin/true})
+ end
+ end
+ end
+ end
+end
diff --git a/spec/unit/type/cron_spec.rb b/spec/unit/type/cron_spec.rb
index 32bde11..1ce66a4 100644
--- a/spec/unit/type/cron_spec.rb
+++ b/spec/unit/type/cron_spec.rb
@@ -127,6 +127,15 @@ describe Puppet::Type.type(:cron), unless: Puppet.features.microsoft_windows? do
# As it turns out cron does not complaining about steps that exceed the valid range
# expect { described_class.new(:name => 'foo', :minute => '*/120' ) }.to raise_error(Puppet::Error, /is not a valid minute/)
end
+
+ it 'supports values with leading zeros' do
+ expect { described_class.new(name: 'foo', minute: ['0', '0011', '044']) }.not_to raise_error
+ expect { described_class.new(name: 'foo', minute: '022') }.not_to raise_error
+ end
+
+ it 'does not remove leading zeroes' do
+ expect(described_class.new(name: 'foo', minute: '0045')[:minute]).to eq(['0045'])
+ end
end
describe 'hour' do
@@ -194,6 +203,15 @@ describe Puppet::Type.type(:cron), unless: Puppet.features.microsoft_windows? do
# As it turns out cron does not complaining about steps that exceed the valid range
# expect { described_class.new(:name => 'foo', :hour => '*/26' ) }.to raise_error(Puppet::Error, /is not a valid hour/)
end
+
+ it 'supports values with leading zeros' do
+ expect { described_class.new(name: 'foo', hour: ['007', '1', '0023']) }.not_to raise_error
+ expect { described_class.new(name: 'foo', hour: '022') }.not_to raise_error
+ end
+
+ it 'does not remove leading zeroes' do
+ expect(described_class.new(name: 'foo', hour: '005')[:hour]).to eq(['005'])
+ end
end
describe 'weekday' do
@@ -277,6 +295,15 @@ describe Puppet::Type.type(:cron), unless: Puppet.features.microsoft_windows? do
# As it turns out cron does not complaining about steps that exceed the valid range
# expect { described_class.new(:name => 'foo', :weekday => '*/9' ) }.to raise_error(Puppet::Error, /is not a valid weekday/)
end
+
+ it 'supports values with leading zeros' do
+ expect { described_class.new(name: 'foo', weekday: ['Mon', 'Wed', '05']) }.not_to raise_error
+ expect { described_class.new(name: 'foo', weekday: '007') }.not_to raise_error
+ end
+
+ it 'does not remove leading zeroes' do
+ expect(described_class.new(name: 'foo', weekday: '006')[:weekday]).to eq(['006'])
+ end
end
describe 'month' do
@@ -376,6 +403,15 @@ describe Puppet::Type.type(:cron), unless: Puppet.features.microsoft_windows? do
# As it turns out cron does not complaining about steps that exceed the valid range
# expect { described_class.new(:name => 'foo', :month => '*/13' ) }.to raise_error(Puppet::Error, /is not a valid month/)
end
+
+ it 'supports values with leading zeros' do
+ expect { described_class.new(name: 'foo', month: ['007', '1', '0012']) }.not_to raise_error
+ expect { described_class.new(name: 'foo', month: ['Jan', '04', '0009']) }.not_to raise_error
+ end
+
+ it 'does not remove leading zeroes' do
+ expect(described_class.new(name: 'foo', month: '09')[:month]).to eq(['09'])
+ end
end
describe 'monthday' do
@@ -441,6 +477,15 @@ describe Puppet::Type.type(:cron), unless: Puppet.features.microsoft_windows? do
# As it turns out cron does not complaining about steps that exceed the valid range
# expect { described_class.new(:name => 'foo', :monthday => '*/32' ) }.to raise_error(Puppet::Error, /is not a valid monthday/)
end
+
+ it 'supports values with leading zeros' do
+ expect { described_class.new(name: 'foo', monthday: ['007', '1', '0023']) }.not_to raise_error
+ expect { described_class.new(name: 'foo', monthday: '022') }.not_to raise_error
+ end
+
+ it 'does not remove leading zeroes' do
+ expect(described_class.new(name: 'foo', monthday: '01')[:monthday]).to eq(['01'])
+ end
end
describe 'special' do