8ef2e6da05
* Add support for Windows hosts in the SSH connection plugin * fix Python 2.6 unit test and sanity issues * fix up connection tests in CI, disable SCP for now * ensure we don't pollute the existing environment during the test * Add connection_windows_ssh to classifier * use test dir for inventory file * Required powershell as default shell and fix tests * Remove exlicit become_methods on connection * clarify console encoding comment * ignore recent SCP errors in integration tests * Add cmd shell type and added more tests * Fix some doc issues * revises windows faq * add anchors for windows links * revises windows setup page * Update changelogs/fragments/windows-ssh.yaml Co-Authored-By: jborean93 <jborean93@gmail.com>
53 lines
3.3 KiB
Python
53 lines
3.3 KiB
Python
from ansible.plugins.shell.powershell import _parse_clixml
|
|
|
|
|
|
def test_parse_clixml_empty():
|
|
empty = b'#< CLIXML\r\n<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04"></Objs>'
|
|
expected = b''
|
|
actual = _parse_clixml(empty)
|
|
assert actual == expected
|
|
|
|
|
|
def test_parse_clixml_with_progress():
|
|
progress = b'#< CLIXML\r\n<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">' \
|
|
b'<Obj S="progress" RefId="0"><TN RefId="0"><T>System.Management.Automation.PSCustomObject</T><T>System.Object</T></TN><MS>' \
|
|
b'<I64 N="SourceId">1</I64><PR N="Record"><AV>Preparing modules for first use.</AV><AI>0</AI><Nil />' \
|
|
b'<PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj></Objs>'
|
|
expected = b''
|
|
actual = _parse_clixml(progress)
|
|
assert actual == expected
|
|
|
|
|
|
def test_parse_clixml_single_stream():
|
|
single_stream = b'#< CLIXML\r\n<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">' \
|
|
b'<S S="Error">fake : The term \'fake\' is not recognized as the name of a cmdlet. Check _x000D__x000A_</S>' \
|
|
b'<S S="Error">the spelling of the name, or if a path was included._x000D__x000A_</S>' \
|
|
b'<S S="Error">At line:1 char:1_x000D__x000A_</S>' \
|
|
b'<S S="Error">+ fake cmdlet_x000D__x000A_</S><S S="Error">+ ~~~~_x000D__x000A_</S>' \
|
|
b'<S S="Error"> + CategoryInfo : ObjectNotFound: (fake:String) [], CommandNotFoundException_x000D__x000A_</S>' \
|
|
b'<S S="Error"> + FullyQualifiedErrorId : CommandNotFoundException_x000D__x000A_</S><S S="Error"> _x000D__x000A_</S>' \
|
|
b'</Objs>'
|
|
expected = b"fake : The term 'fake' is not recognized as the name of a cmdlet. Check \r\n" \
|
|
b"the spelling of the name, or if a path was included.\r\n" \
|
|
b"At line:1 char:1\r\n" \
|
|
b"+ fake cmdlet\r\n" \
|
|
b"+ ~~~~\r\n" \
|
|
b" + CategoryInfo : ObjectNotFound: (fake:String) [], CommandNotFoundException\r\n" \
|
|
b" + FullyQualifiedErrorId : CommandNotFoundException\r\n "
|
|
actual = _parse_clixml(single_stream)
|
|
assert actual == expected
|
|
|
|
|
|
def test_parse_clixml_multiple_streams():
|
|
multiple_stream = b'#< CLIXML\r\n<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">' \
|
|
b'<S S="Error">fake : The term \'fake\' is not recognized as the name of a cmdlet. Check _x000D__x000A_</S>' \
|
|
b'<S S="Error">the spelling of the name, or if a path was included._x000D__x000A_</S>' \
|
|
b'<S S="Error">At line:1 char:1_x000D__x000A_</S>' \
|
|
b'<S S="Error">+ fake cmdlet_x000D__x000A_</S><S S="Error">+ ~~~~_x000D__x000A_</S>' \
|
|
b'<S S="Error"> + CategoryInfo : ObjectNotFound: (fake:String) [], CommandNotFoundException_x000D__x000A_</S>' \
|
|
b'<S S="Error"> + FullyQualifiedErrorId : CommandNotFoundException_x000D__x000A_</S><S S="Error"> _x000D__x000A_</S>' \
|
|
b'<S S="Info">hi info</S>' \
|
|
b'</Objs>'
|
|
expected = b"hi info"
|
|
actual = _parse_clixml(multiple_stream, stream="Info")
|
|
assert actual == expected
|