summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2017-09-26 08:53:03 -0700
committerGitHub <noreply@github.com>2017-09-26 08:53:03 -0700
commit128cc10a928324b426a0f74ed3208a2e1ed68874 (patch)
treec5ae9a8c121dd0cea41e34515b9db49ddbaed840
parentc4af66766f970b915a5bd2cd65308936082202a7 (diff)
parent5e13fe603bba737eebcc130800aa3d9698cfb511 (diff)
downloadchef-128cc10a928324b426a0f74ed3208a2e1ed68874.tar.gz
Merge pull request #6434 from chef/jdm/win-task-start-day
Only accept MM/DD/YYYY for windows_task start_day
-rw-r--r--lib/chef/provider/windows_task.rb8
-rw-r--r--spec/functional/resource/windows_task_spec.rb9
-rw-r--r--spec/unit/provider/windows_task_spec.rb10
3 files changed, 18 insertions, 9 deletions
diff --git a/lib/chef/provider/windows_task.rb b/lib/chef/provider/windows_task.rb
index 8703c30da9..b090a3c1d3 100644
--- a/lib/chef/provider/windows_task.rb
+++ b/lib/chef/provider/windows_task.rb
@@ -220,7 +220,7 @@ class Chef
def start_day_updated?
current_day = DateTime.strptime(current_resource.start_day, convert_system_date_format_to_ruby_date_format)
- new_day = DateTime.parse(new_resource.start_day)
+ new_day = parse_day(new_resource.start_day)
current_day != new_day
end
@@ -230,7 +230,7 @@ class Chef
end
def convert_user_date_to_system_date(date_in_string)
- DateTime.parse(date_in_string).strftime(convert_system_date_format_to_ruby_long_date)
+ parse_day(date_in_string).strftime(convert_system_date_format_to_ruby_long_date)
end
def convert_system_date_format_to_ruby_long_date
@@ -488,6 +488,10 @@ class Chef
current_resource.idle_time(duration.minutes.atom.to_i)
end
+ def parse_day(str)
+ Date.strptime(str, "%m/%d/%Y")
+ end
+
end
end
end
diff --git a/spec/functional/resource/windows_task_spec.rb b/spec/functional/resource/windows_task_spec.rb
index fbb5e4dd12..c2496c702f 100644
--- a/spec/functional/resource/windows_task_spec.rb
+++ b/spec/functional/resource/windows_task_spec.rb
@@ -36,15 +36,20 @@ describe Chef::Resource::WindowsTask, :windows_only do
subject do
new_resource = Chef::Resource::WindowsTask.new(task_name, run_context)
new_resource.command task_name
+ # Make sure MM/DD/YYYY is accepted
+ new_resource.start_day "09/20/2017"
new_resource
end
- it "creates a scheduled task to run every 1 hr" do
+ it "creates a scheduled task to run every 1 hr starting on 09/20/2017" do
subject.run_action(:create)
task_details = windows_task_provider.send(:load_task_hash, task_name)
expect(task_details[:TaskName]).to eq("\\chef-client")
expect(task_details[:TaskToRun]).to eq("chef-client")
expect(task_details[:"Repeat:Every"]).to eq("1 Hour(s), 0 Minute(s)")
+
+ # This test will not work across locales
+ expect(task_details[:StartDate]).to eq("9/20/2017")
end
end
@@ -300,7 +305,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
context "when start_day is passed with frequency :onstart" do
it "raises error" do
subject.frequency :onstart
- subject.start_day "mon"
+ subject.start_day "09/20/2017"
expect { subject.after_created }.to raise_error("`start_day` property is not supported with frequency: onstart")
end
end
diff --git a/spec/unit/provider/windows_task_spec.rb b/spec/unit/provider/windows_task_spec.rb
index ec66cf2551..b18d842bfa 100644
--- a/spec/unit/provider/windows_task_spec.rb
+++ b/spec/unit/provider/windows_task_spec.rb
@@ -331,7 +331,7 @@ describe Chef::Provider::WindowsTask do
new_resource.frequency_modifier 15
new_resource.user "SYSTEM"
new_resource.execution_time_limit "PT72H"
- new_resource.start_day "30-Mar-2017"
+ new_resource.start_day "03/30/2017"
new_resource.start_time "13:12"
end
@@ -383,7 +383,7 @@ describe Chef::Provider::WindowsTask do
new_resource.frequency_modifier 15
new_resource.user "SYSTEM"
new_resource.execution_time_limit "PT72H"
- new_resource.start_day "30-Mar-2017"
+ new_resource.start_day "03/30/2017"
new_resource.start_time "13:12"
end
context "when start_day not changed" do
@@ -429,9 +429,9 @@ describe Chef::Provider::WindowsTask do
end
describe "#convert_user_date_to_system_date" do
- it "when current resource start date is '30-May-2017' then returns '05/30/2017'" do
- allow(provider).to receive(:get_system_short_date_format).and_return("MM/dd/yyyy")
- expect(provider.send(:convert_user_date_to_system_date, "30-May-2017")).to eq("05/30/2017")
+ it "when current resource start date is '05/30/2017' then returns '30/05/2017'" do
+ allow(provider).to receive(:get_system_short_date_format).and_return("dd/MM/yyyy")
+ expect(provider.send(:convert_user_date_to_system_date, "05/30/2017")).to eq("30/05/2017")
end
end