win_service: quoted path fix (#32469)

* win_service: fix for path in quotes

* Added tests to verify behaviour doesn't regress
pull/30670/merge
Jordan Borean 7 years ago committed by GitHub
parent be4a0f1f3d
commit 5b1db00b65
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -32,7 +32,7 @@ $display_name = Get-AnsibleParam -obj $params -name 'display_name' -type 'str'
$force_dependent_services = Get-AnsibleParam -obj $params -name 'force_dependent_services' -type 'bool' -default $false $force_dependent_services = Get-AnsibleParam -obj $params -name 'force_dependent_services' -type 'bool' -default $false
$name = Get-AnsibleParam -obj $params -name 'name' -type 'str' -failifempty $true $name = Get-AnsibleParam -obj $params -name 'name' -type 'str' -failifempty $true
$password = Get-AnsibleParam -obj $params -name 'password' -type 'str' $password = Get-AnsibleParam -obj $params -name 'password' -type 'str'
$path = Get-AnsibleParam -obj $params -name 'path' -type 'path' $path = Get-AnsibleParam -obj $params -name 'path'
$start_mode = Get-AnsibleParam -obj $params -name 'start_mode' -type 'str' -validateset 'auto','manual','disabled','delayed' $start_mode = Get-AnsibleParam -obj $params -name 'start_mode' -type 'str' -validateset 'auto','manual','disabled','delayed'
$state = Get-AnsibleParam -obj $params -name 'state' -type 'str' -validateset 'started','stopped','restarted','absent','paused' $state = Get-AnsibleParam -obj $params -name 'state' -type 'str' -validateset 'started','stopped','restarted','absent','paused'
$username = Get-AnsibleParam -obj $params -name 'username' -type 'str' $username = Get-AnsibleParam -obj $params -name 'username' -type 'str'
@ -51,6 +51,9 @@ if ($password -ne $null -and $username -eq $null) {
if ($desktop_interact -eq $true -and (-not ($username -eq "LocalSystem" -or $username -eq $null))) { if ($desktop_interact -eq $true -and (-not ($username -eq "LocalSystem" -or $username -eq $null))) {
Fail-Json $result "Can only set 'desktop_interact' to true when 'username' equals 'LocalSystem'" Fail-Json $result "Can only set 'desktop_interact' to true when 'username' equals 'LocalSystem'"
} }
if ($path -ne $null) {
$path = [System.Environment]::ExpandEnvironmentVariables($path)
}
Function Get-ServiceInfo($name) { Function Get-ServiceInfo($name) {
# Need to get new objects so we have the latest info # Need to get new objects so we have the latest info

@ -51,3 +51,9 @@
- '{{test_win_service_name}}' - '{{test_win_service_name}}'
- TestServiceParent2 - TestServiceParent2
- TestServiceDependency - TestServiceDependency
- name: remove test environment variable
win_environment:
name: TEST_SERVICE_PATH
level: machine
state: absent

@ -610,6 +610,37 @@
- not win_service_path_again|changed - not win_service_path_again|changed
- win_service_path_again.path == 'C:\\temp\\test.exe' - win_service_path_again.path == 'C:\\temp\\test.exe'
- name: create test environment variable
win_environment:
name: TEST_SERVICE_PATH
value: C:\temp
level: machine
state: present
- name: set service path with quotes and env var
win_service:
name: "{{test_win_service_name}}"
path: '"%TEST_SERVICE_PATH%\test.exe"'
register: win_service_env_quote_path
- name: check that the quoted service path has been changed
assert:
that:
- win_service_env_quote_path|changed
- win_service_env_quote_path.path == '"C:\\temp\\test.exe"'
- name: set service path with quotes and env var again
win_service:
name: "{{test_win_service_name}}"
path: '"%TEST_SERVICE_PATH%\test.exe"'
register: win_service_env_quote_path_again
- name: check that the quoted service path has been changed again
assert:
that:
- not win_service_env_quote_path_again|changed
- win_service_env_quote_path_again.path == '"C:\\temp\\test.exe"'
- name: revert original service path back to normal - name: revert original service path back to normal
win_service: win_service:
name: "{{test_win_service_name}}" name: "{{test_win_service_name}}"

Loading…
Cancel
Save