ansible/test/integration/targets/win_command/tasks/main.yml
Matt Martz 4fe08441be Deprecate tests used as filters (#32361)
* Warn on tests used as filters

* Update docs, add aliases for tests that fit more gramatically with test syntax

* Fix rst formatting

* Add successful filter, alias of success

* Remove renamed_deprecation, it was overkill

* Make directory alias for is_dir

* Update tests to use proper jinja test syntax

* Update additional documentation, living outside of YAML files, to reflect proper jinja test syntax

* Add conversion script, porting guide updates, and changelog updates

* Update newly added uses of tests as filters

* No underscore variable

* Convert recent tests as filter changes to win_stat

* Fix some changes related to rebasing a few integration tests

* Make tests_as_filters_warning explicitly accept the name of the test, instead of inferring the name

* Add test for tests_as_filters_warning

* Update tests as filters in newly added/modified tests

* Address recent changes to several integration tests

* Address recent changes in cs_vpc
2017-11-27 17:58:08 -05:00

207 lines
5.7 KiB
YAML

- name: execute a command
win_command: whoami /groups
register: cmdout
- name: validate result
assert:
that:
- cmdout is successful
- cmdout is changed
- cmdout.cmd == 'whoami /groups'
- cmdout.delta is match('^\d:(\d){2}:(\d){2}.(\d){6}$')
- cmdout.end is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- cmdout.rc == 0
- cmdout.start is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- cmdout.stderr == ""
- cmdout.stdout is search('GROUP INFORMATION')
- '"GROUP INFORMATION" in cmdout.stdout_lines'
- name: execute something nonexistent
win_command: bogus_command1234
register: cmdout
ignore_errors: true
- name: validate result
assert:
that:
- cmdout is failed
- cmdout is not changed
- cmdout.cmd == 'bogus_command1234'
- cmdout.rc == 2
- "'Could not locate the following executable bogus_command1234' in cmdout.msg"
- name: execute something with error output
win_command: cmd /c "echo some output & echo some error 1>&2"
register: cmdout
- name: validate result
assert:
that:
- cmdout is successful
- cmdout is changed
- cmdout.cmd == 'cmd /c "echo some output & echo some error 1>&2"'
- cmdout.delta is match('^\d:(\d){2}:(\d){2}.(\d){6}$')
- cmdout.end is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- cmdout.rc == 0
- cmdout.start is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- cmdout.stderr is search('some error')
- cmdout.stdout == "some output \r\n"
- cmdout.stdout_lines == ["some output "]
- name: ensure test file is absent
win_file:
path: c:\testfile.txt
state: absent
- name: run with creates, should create
win_command: cmd /c "echo $null >> c:\testfile.txt"
args:
creates: c:\testfile.txt
register: cmdout
- name: validate result
assert:
that:
- cmdout is successful
- cmdout is changed
- name: run again with creates, should skip
win_command: cmd /c "echo $null >> c:\testfile.txt"
args:
creates: c:\testfile.txt
register: cmdout
- name: validate result
assert:
that:
- cmdout is skipped
- cmdout.msg is search('exists')
- name: test creates with hidden system file, should skip
win_command: echo no
args:
creates: C:\pagefile.sys
register: cmdout
- name: validate result
assert:
that:
- cmdout is skipped
- cmdout.msg is search('exists')
- name: ensure testfile is still present
win_stat:
path: c:\testfile.txt
register: statout
- name: validate result
assert:
that:
- statout.stat.exists == true
- name: run with removes, should remove
win_command: cmd /c "del c:\testfile.txt"
args:
removes: c:\testfile.txt
register: cmdout
- name: validate result
assert:
that:
- cmdout is successful
- cmdout is changed
- name: run again with removes, should skip
win_command: cmd /c "del c:\testfile.txt"
args:
removes: c:\testfile.txt
register: cmdout
- name: validate result
assert:
that:
- cmdout is skipped
- cmdout.msg is search('does not exist')
- name: run something with known nonzero exit code
win_command: cmd /c "exit 254"
register: cmdout
ignore_errors: true
- name: validate result
assert:
that:
- cmdout is failed
- cmdout.failed == True # check the failure key explicitly, since failed does magic with RC
- cmdout.rc == 254
- name: interleave large writes between stdout/stderr (check for buffer consumption deadlock)
win_command: powershell /c "$ba = New-Object byte[] 4096; (New-Object System.Random 32).NextBytes($ba); $text = [Convert]::ToBase64String($ba); Write-Output startout; Write-Error starterror; Write-Error $text; Write-Output $text; Write-Error $text; Write-Output $text; Write-Error $text; Write-Output $text; Write-Output doneout Write-Error doneerror"
register: cmdout
- name: ensure that the entirety of both streams were read
assert:
that:
- cmdout.stdout is search("startout")
- cmdout.stdout is search("doneout")
- cmdout.stderr is search("starterror")
- cmdout.stderr is search("doneerror")
- name: create testing folder for argv binary
win_file:
path: C:\ansible testing
state: directory
- name: download binary the outputs argv to stdout
win_get_url:
url: https://s3.amazonaws.com/ansible-ci-files/test/integration/roles/test_win_module_utils/PrintArgv.exe
dest: C:\ansible testing\PrintArgv.exe
- name: call argv binary with absolute path
win_command: '"C:\ansible testing\PrintArgv.exe" arg1 "arg 2" C:\path\arg "\"quoted arg\""'
register: cmdout
- name: assert call to argv binary with absolute path
assert:
that:
- cmdout is changed
- cmdout.rc == 0
- cmdout.stdout_lines[0] == 'arg1'
- cmdout.stdout_lines[1] == 'arg 2'
- cmdout.stdout_lines[2] == 'C:\\path\\arg'
- cmdout.stdout_lines[3] == '"quoted arg"'
- name: call argv binary with relative path
win_command: 'PrintArgv.exe C:\path\end\slash\ ADDLOCAL="msi,example" two\\slashes'
args:
chdir: C:\ansible testing
register: cmdout
- name: assert call to argv binary with relative path
assert:
that:
- cmdout is changed
- cmdout.rc == 0
- cmdout.stdout_lines[0] == 'C:\\path\\end\\slash\\'
- cmdout.stdout_lines[1] == 'ADDLOCAL=msi,example'
- cmdout.stdout_lines[2] == 'two\\\\slashes'
- name: remove testing folder
win_file:
path: C:\ansible testing
state: absent
- name: run stdin test
win_command: powershell.exe -
args:
stdin: Write-Host "some input"
register: cmdout
- name: assert run stdin test
assert:
that:
- cmdout is changed
- cmdout.rc == 0
- cmdout.stdout_lines|count == 1
- cmdout.stdout_lines[0] == "some input"
- cmdout.stderr == ""