windows: fix list type in legacy module utils (#30483)

* windows: fix list type in legacy module utils

* only change the return for the list type instead of affecting it all

* additional null check when using an array

(cherry picked from commit 01563ccd5d)
pull/30580/head
Jordan Borean 7 years ago committed by Toshio Kuratomi
parent 1af9ab1b14
commit 8a247989c5

@ -201,7 +201,9 @@ Function Get-AnsibleParam($obj, $name, $default = $null, $resultobj = @{}, $fail
# If $value -eq $null, the parameter was unspecified by the user (deliberately or not) # If $value -eq $null, the parameter was unspecified by the user (deliberately or not)
# Please leave $null-values intact, modules need to know if a parameter was specified # Please leave $null-values intact, modules need to know if a parameter was specified
if ($value -ne $null) { # When $value is already an array, we cannot rely on the null check, as an empty list
# is seen as null in the check below
if ($value -ne $null -or $value -is [array]) {
if ($type -eq "path") { if ($type -eq "path") {
# Expand environment variables on path-type # Expand environment variables on path-type
$value = Expand-Environment($value) $value = Expand-Environment($value)
@ -240,6 +242,8 @@ Function Get-AnsibleParam($obj, $name, $default = $null, $resultobj = @{}, $fail
} else { } else {
Fail-Json -obj $resultobj -message "Get-AnsibleParam: Parameter '$name' is not a YAML list." Fail-Json -obj $resultobj -message "Get-AnsibleParam: Parameter '$name' is not a YAML list."
} }
# , is not a typo, forces it to return as a list when it is empty or only has 1 entry
return ,$value
} }
} }

@ -0,0 +1,12 @@
#powershell
#Requires -Module Ansible.ModuleUtils.Legacy
$params = Parse-Args $args
$value = Get-AnsibleParam -Obj $params -Name value -Type list
if ($value -isnot [array]) {
Fail-Json -obj @{} -message "value was not a list but was $($value.GetType().FullName)"
}
Exit-Json @{ count = $value.Count }

@ -21,3 +21,21 @@
- path: '{{ bogus_driveletter.stdout_lines[0] }}:\goodpath' - path: '{{ bogus_driveletter.stdout_lines[0] }}:\goodpath'
- path: '{{ bogus_driveletter.stdout_lines[0] }}:\badpath*%@:\blar' - path: '{{ bogus_driveletter.stdout_lines[0] }}:\badpath*%@:\blar'
should_fail: true should_fail: true
- name: test list parameters
testlist:
value: '{{item.value}}'
register: list_tests
failed_when: list_tests|failed or list_tests.count != item.count
with_items:
- value: []
count: 0
- value:
- 1
- 2
count: 2
- value:
- 1
count: 1
- value: "1, 2"
count: 2

Loading…
Cancel
Save