---
- name : raise failure when state=present and name=all
win_chocolatey :
name : all
state : present
register : fail_all_present
failed_when : fail_all_present.msg != "Cannot specify the package name as 'all' when state=present"
- name : raise failure when state=reinstalled and name=all
win_chocolatey :
name : all
state : reinstalled
register : fail_all_reinstalled
failed_when : fail_all_reinstalled.msg != "Cannot specify the package name as 'all' when state=reinstalled"
- name : install package (check mode)
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : present
check_mode : yes
register : install_check
- name : get result of install package (check mode)
win_command : choco.exe list --local-only --exact --limit-output {{ test_choco_package1|quote }}
register : install_actual_check
failed_when : not install_actual_check.rc in [0, 2] # v0.10.12+ returns 2 for no package
- name : assert install package (check mode)
assert :
that :
- install_check is changed
- install_actual_check.stdout_lines == []
- name : install package
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : present
register : install
- name : get result of install package
win_command : choco.exe list --local-only --exact --limit-output {{ test_choco_package1|quote }}
register : install_actual
- name : get package info of install package
win_shell : Get-Content -Path '{{ test_choco_path }}\{{ test_choco_package1 }}-0.1.0.txt' -Raw
register : install_actual_info
- name : assert install package
assert :
that :
- install is changed
- install_actual.stdout_lines == [test_choco_package1 + "|0.1.0"]
- (install_actual_info.stdout|from_json).allow_empty_checksums == False
- (install_actual_info.stdout|from_json).force == False
- (install_actual_info.stdout|from_json).force_x86 == False
- (install_actual_info.stdout|from_json).ignore_checksums == False
- (install_actual_info.stdout|from_json).install_args == None
- (install_actual_info.stdout|from_json).package_params == {}
- (install_actual_info.stdout|from_json).proxy_url == None
- (install_actual_info.stdout|from_json).source == "normal"
- (install_actual_info.stdout|from_json).timeout == "2700000"
- name : install package (idempotent)
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : present
register : install_again
- name : assert install package (idempotent)
assert :
that :
- not install_again is changed
- name : remove package (check mode)
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : absent
check_mode : yes
register : remove_check
- name : get result of remove package (check mode)
win_command : choco.exe list --local-only --exact --limit-output {{ test_choco_package1|quote }}
register : remove_actual_check
- name : assert remove package (check mode)
assert :
that :
- remove_check is changed
- remove_actual_check.stdout_lines == [test_choco_package1 + "|0.1.0"]
- name : remove package
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : absent
register : remove
- name : get result of remove package
win_command : choco.exe list --local-only --exact --limit-output {{ test_choco_package1|quote }}
register : remove_actual
failed_when : not remove_actual.rc in [0, 2]
- name : check if removed package file still exists
win_stat :
path : '{{ test_choco_path }}\{{ test_choco_package1 }}-0.1.0.txt'
register : remove_actual_info
- name : assert remove package
assert :
that :
- remove is changed
- remove_actual.stdout_lines == []
- remove_actual_info.stat.exists == False
- name : remove package (idempotent)
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : absent
register : remove_again
- name : assert remove_package (idempotent)
assert :
that :
- not remove_again is changed
- name : install multiple packages with timeout
win_chocolatey :
name : '{{ test_choco_packages }}'
state : present
timeout : 1000
register : install_multiple
- name : get list of installed packages with timeout
win_command : choco.exe list --local-only --limit-output ansible
register : install_multiple_actual
- name : get info on package 1
win_shell : Get-Content -Path '{{ test_choco_path }}\{{ test_choco_package1 }}-0.1.0.txt' -Raw
register : install_multiple_package1
- name : get info on package 2
win_shell : Get-Content -Path '{{ test_choco_path }}\{{ test_choco_package2 }}-1.0.0.txt' -Raw
register : install_multiple_package2
- name : assert install multiple packages with timeout
assert :
that :
- install_multiple is changed
- install_multiple_actual.stdout_lines == [test_choco_package1 + "|0.1.0", test_choco_package2 + "|1.0.0"]
- (install_multiple_package1.stdout|from_json).allow_empty_checksums == False
- (install_multiple_package1.stdout|from_json).force == False
- (install_multiple_package1.stdout|from_json).force_x86 == False
- (install_multiple_package1.stdout|from_json).ignore_checksums == False
- (install_multiple_package1.stdout|from_json).install_args == None
- (install_multiple_package1.stdout|from_json).package_params == {}
- (install_multiple_package1.stdout|from_json).proxy_url == None
- (install_multiple_package1.stdout|from_json).source == "normal"
- (install_multiple_package1.stdout|from_json).timeout == "1000000"
- (install_multiple_package2.stdout|from_json).allow_empty_checksums == False
- (install_multiple_package2.stdout|from_json).force == False
- (install_multiple_package2.stdout|from_json).force_x86 == False
- (install_multiple_package2.stdout|from_json).ignore_checksums == False
- (install_multiple_package2.stdout|from_json).install_args == None
- (install_multiple_package2.stdout|from_json).package_params == {}
- (install_multiple_package2.stdout|from_json).proxy_url == None
- (install_multiple_package2.stdout|from_json).source == "normal"
- (install_multiple_package2.stdout|from_json).timeout == "1000000"
- name : install multiple packages (idempotent)
win_chocolatey :
name : '{{ test_choco_packages }}'
state : present
register : install_multiple_again
- name : assert install multiple packages (idempotent)
assert :
that :
- not install_multiple_again is changed
- name : remove multiple packages
win_chocolatey :
name : '{{ test_choco_packages }}'
state : absent
register : remove_multiple
- name : get list of installed packages after removal
win_command : choco.exe list --local-only --limit-output ansible
register : remove_multiple_actual
failed_when : not remove_multiple_actual.rc in [0, 2]
- name : get info on package 1
win_stat :
path : '{{ test_choco_path }}\{{ test_choco_package1 }}-0.1.0.txt'
register : remove_multiple_package1
- name : get info on package 2
win_stat :
path : '{{ test_choco_path }}\{{ test_choco_package2 }}-1.0.0.txt'
register : remove_multiple_package2
- name : assert remove multiple packages
assert :
that :
- remove_multiple is changed
- remove_multiple_actual.stdout_lines == []
- remove_multiple_package1.stat.exists == False
- remove_multiple_package2.stat.exists == False
- name : remove multiple packages (idempotent)
win_chocolatey :
name : '{{ test_choco_packages }}'
state : absent
register : remove_multiple_again
- name : assert remove multiple packages (idempotent)
assert :
that :
- not remove_multiple_again is changed
- name : install package with params
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : present
install_args : /install_arg 1 /install_arg 2
package_params : /param1 /param2:value
allow_empty_checksums : yes
architecture : x86
force : yes
ignore_checksums : yes
proxy_url : http://proxyhost
version : 0.0 .1
register : install_params
- name : get result of install package with params
win_command : choco.exe list --local-only --limit-output --exact {{ test_choco_package1|quote }}
register : install_params_actual
- name : get info of install package with params
win_shell : Get-Content -Path '{{ test_choco_path }}\{{ test_choco_package1 }}-0.0.1.txt'
register : install_params_info
- name : assert install package with params
assert :
that :
- install_params is changed
- install_params_actual.stdout_lines == [test_choco_package1 + "|0.0.1"]
- (install_params_info.stdout|from_json).allow_empty_checksums == True
- (install_params_info.stdout|from_json).force == True
- (install_params_info.stdout|from_json).force_x86 == True
- (install_params_info.stdout|from_json).ignore_checksums == True
- (install_params_info.stdout|from_json).install_args == "/install_arg 1 /install_arg 2"
- (install_params_info.stdout|from_json).package_params.keys()|count == 2
- (install_params_info.stdout|from_json).package_params.param1 == True
- (install_params_info.stdout|from_json).package_params.param2 == "value"
- (install_params_info.stdout|from_json).proxy_url == "http://proxyhost"
- (install_params_info.stdout|from_json).source == "normal"
- (install_params_info.stdout|from_json).timeout == "2700000"
- name : install package with version (idempotent)
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : present
version : 0.0 .1
register : install_with_version
- name : assert install package with version (idempotent)
assert :
that :
- not install_with_version is changed
- name : fail to install side by side package
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : present
version : 0.1 .0
register : fail_multiple_versions
failed_when : fail_multiple_versions.msg != "Chocolatey package '" + test_choco_package1 + "' is already installed with version(s) '0.0.1' but was expecting '0.1.0'. Either change the expected version, set state=latest, set allow_multiple=yes, or set force=yes to continue"
- name : force the upgrade of an existing version
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : present
version : 0.1 .0
force : yes
register : force_different_version
- name : get result of force the upgrade of an existing version
win_command : choco.exe list --local-only --limit-output --exact {{ test_choco_package1|quote }}
register : force_different_version_actual
- name : get result of forced package install file
win_stat :
path : '{{ test_choco_path }}\{{ test_choco_package1 }}-0.1.0.txt'
register : force_different_version_info
- name : assert force the upgrade of an existing version
assert :
that :
- force_different_version is changed
- force_different_version_actual.stdout_lines == [test_choco_package1 + "|0.1.0"]
- force_different_version_info.stat.exists
- name : remove package after force clobbered everything
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : absent
ignore_errors : yes # the mock package created doesn't really handle force well
- name : install package with reference to source name
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : present
source : ansible-test-override
register : install_source_name
- name : get result of install package with reference to source name
win_command : choco.exe list --local-only --limit-output --exact {{ test_choco_package1|quote }}
register : install_source_name_actual
- name : get result fo installed package with reference to source name info
win_shell : Get-Content -Path '{{ test_choco_path }}\{{ test_choco_package1 }}-0.1.0.txt' -Raw
register : install_source_name_info
- name : assert install package with reference to source name
assert :
that :
- install_source_name is changed
- install_source_name_actual.stdout_lines == [test_choco_package1 + "|0.1.0"]
- (install_source_name_info.stdout|from_json).source == "override"
- name : reinstall package without source override
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : reinstalled
register : reinstalled_package
- name : get result of reinstalled package without source override
win_shell : Get-Content -Path '{{ test_choco_path }}\{{ test_choco_package1 }}-0.1.0.txt' -Raw
register : reinstalled_package_info
- name : assert reinstall package without source override
assert :
that :
- reinstalled_package is changed
- (reinstalled_package_info.stdout|from_json).source == "normal"
- name : downgrade package
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : downgrade
version : 0.0 .1
register : downgraded_package
- name : get result of downgrade package
win_command : choco.exe list --local-only --limit-output --exact {{ test_choco_package1|quote }}
register : downgraded_package_actual
- name : assert downgrade package
assert :
that :
- downgraded_package is changed
- downgraded_package_actual.stdout_lines == [test_choco_package1 + "|0.0.1"]
- name : downgrade package (idempotent)
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : downgrade
version : 0.0 .1
register : downgraded_package_again
- name : assert downgrade package (idempotent)
assert :
that :
- not downgraded_package_again is changed
- name : downgrade package without version specified
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : downgrade
register : downgrade_without_version
- name : get result of downgrade without version
win_command : choco.exe list --local-only --limit-output --exact {{ test_choco_package1|quote }}
register : downgrade_without_version_actual
- name : assert downgrade package without version specified
assert :
that :
- not downgrade_without_version is changed
- downgrade_without_version_actual.stdout_lines == [test_choco_package1 + "|0.0.1"]
- name : upgrade package
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : latest
register : upgrade_package
- name : get result of upgrade package
win_command : choco.exe list --local-only --limit-output --exact {{ test_choco_package1|quote }}
register : upgrade_package_actual
- name : assert upgrade package
assert :
that :
- upgrade_package is changed
- upgrade_package_actual.stdout_lines == [test_choco_package1 + "|0.1.0"]
- name : upgrade package (idempotent)
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : latest
register : upgrade_package_again
- name : assert upgrade package (idempotent)
assert :
that :
- not upgrade_package_again is changed
- name : install prerelease package
win_chocolatey :
name : '{{ test_choco_package2 }}'
state : present
allow_prerelease : yes
register : install_prerelease
- name : get result of install prerelease package
win_command : choco.exe list --local-only --limit-output --exact {{ test_choco_package2|quote }}
register : install_prerelease_actual
- name : assert install prerelease package
assert :
that :
- install_prerelease is changed
- install_prerelease_actual.stdout_lines == [test_choco_package2 + "|1.0.1-beta1"]
- name : downgrade package
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : downgrade
version : 0.0 .1
- name : upgrade all packages
win_chocolatey :
name : all
state : latest
register : all_latest
- name : get result of upgrade all packages
win_command : choco.exe list --local-only --limit-output --exact {{ test_choco_package1|quote }}
register : all_latest_actual
- name : assert upgrade all packages
assert :
that :
- all_latest is changed
- all_latest_actual.stdout_lines == [test_choco_package1 + "|0.1.0"]
- name : install newer version of package
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : present
- name : install older package with allow_multiple
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : present
allow_multiple : True
version : '0.0.1'
register : allow_multiple
- name : get result of install older package with allow_multiple
win_command : choco.exe list --local-only --limit-output --all-versions --exact {{ test_choco_package1|quote }}
register : allow_multiple_actual
- name : assert install older package with allow_multiple
assert :
that :
- allow_multiple is changed
- allow_multiple_actual.stdout == "ansible|0.1.0\r\nansible|0.0.1\r\n"
- name : pin 2 packages (check mode)
win_chocolatey :
name :
- '{{ test_choco_package1 }}'
- '{{ test_choco_package2 }}'
state : present
pinned : yes
register : pin_multiple_check
check_mode : True
- name : get result of pin 2 packages (check mode)
win_command : choco.exe pin list --limit-output
register : pin_multiple_actual_check
- name : assert pin 2 packages (check mode)
assert :
that :
- pin_multiple_check is changed
- pin_multiple_actual_check.stdout == ""
- name : pin 2 packages
win_chocolatey :
name :
- '{{ test_choco_package1 }}'
- '{{ test_choco_package2 }}'
state : present
pinned : yes
register : pin_multiple
- name : get result of pin 2 packages
win_command : choco.exe pin list --limit-output
register : pin_multiple_actual
- name : assert pin 2 packages
assert :
that :
- pin_multiple is changed
- pin_multiple_actual.stdout_lines == ["ansible|0.1.0", "ansible-test|1.0.1-beta1"]
- name : pin 2 packages (idempotent)
win_chocolatey :
name :
- '{{ test_choco_package1 }}'
- '{{ test_choco_package2 }}'
state : present
pinned : yes
register : pin_multiple_again
- name : assert pin 2 packages (idempoent)
assert :
that :
- not pin_multiple_again is changed
- name : pin specific older version
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : present
pinned : yes
version : '0.0.1'
register : pin_older
- name : get result of pin specific older version
win_command : choco.exe pin list --limit-output
register : pin_older_actual
- name : assert pin specific older version
assert :
that :
- pin_older is changed
- pin_older_actual.stdout_lines == ["ansible|0.1.0", "ansible|0.0.1", "ansible-test|1.0.1-beta1"]
- name : unpin package at version
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : present
pinned : no
version : '0.1.0'
register : unpin_version
- name : get result of unpin package at version
win_command : choco.exe pin list --limit-output
register : unpin_version_actual
- name : assert unpin package at version
assert :
that :
- unpin_version is changed
- unpin_version_actual.stdout_lines == ["ansible|0.0.1", "ansible-test|1.0.1-beta1"]
- name : unpin multiple packages without a version
win_chocolatey :
name :
- '{{ test_choco_package1 }}'
- '{{ test_choco_package2 }}'
state : present
pinned : no
register : unpin_multiple
- name : get result of unpin multiple packages without a version
win_command : choco.exe pin list --limit-output
register : unpin_multiple_actual
- name : assert unpin multiple packages without a version
assert :
that :
- unpin_multiple is changed
- unpin_multiple_actual.stdout == ""
- name : uninstall specific version installed with allow_multiple
win_chocolatey :
name : '{{ test_choco_package1 }}'
state : absent
version : '0.0.1'
register : remove_multiple
- name : get result of uninstall specific version installed with allow_multiple
win_command : choco.exe list --local-only --limit-output --all-versions --exact {{ test_choco_package1|quote }}
register : remove_multiple_actual
- name : assert uninstall specific version installed with allow_multiple
assert :
that :
- remove_multiple is changed
- remove_multiple_actual.stdout == "ansible|0.1.0\r\n"