mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
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
This commit is contained in:
parent
b7b57a811a
commit
01563ccd5d
3 changed files with 35 additions and 1 deletions
|
@ -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…
Reference in a new issue