@@ -61,6 +61,7 @@ def __iter__(self):
61
61
encoded_cmd = base64 .b64encode (
62
62
"{}\n " .format (command ).encode ('utf-8' )
63
63
).decode ('utf-8' )
64
+ print_stdin = 'read line; echo "$line"'
64
65
65
66
66
67
@mock .patch ('exec_helpers._ssh_client_base.logger' , autospec = True )
@@ -1046,6 +1047,99 @@ def test_check_stderr(self, check_call, client, policy, logger):
1046
1047
command , verbose , timeout = None ,
1047
1048
error_info = None , raise_on_err = raise_on_err )
1048
1049
1050
+ @mock .patch ('exec_helpers.ssh_client.SSHClient.check_call' )
1051
+ def test_check_stdin_str (self , check_call , client , policy , logger ):
1052
+ stdin = u'this is a line'
1053
+
1054
+ return_value = exec_result .ExecResult (
1055
+ cmd = print_stdin ,
1056
+ stdin = stdin ,
1057
+ stdout = [stdin ],
1058
+ stderr = [],
1059
+ exit_code = 0
1060
+ )
1061
+ check_call .return_value = return_value
1062
+
1063
+ verbose = False
1064
+ raise_on_err = True
1065
+
1066
+ # noinspection PyTypeChecker
1067
+ result = self .get_ssh ().check_call (
1068
+ command = print_stdin ,
1069
+ stdin = stdin ,
1070
+ verbose = verbose ,
1071
+ timeout = None ,
1072
+ raise_on_err = raise_on_err )
1073
+ check_call .assert_called_once_with (
1074
+ command = print_stdin ,
1075
+ stdin = stdin ,
1076
+ verbose = verbose ,
1077
+ timeout = None ,
1078
+ raise_on_err = raise_on_err )
1079
+ self .assertEqual (result , return_value )
1080
+
1081
+ @mock .patch ('exec_helpers.ssh_client.SSHClient.check_call' )
1082
+ def test_check_stdin_bytes (self , check_call , client , policy , logger ):
1083
+ stdin = b'this is a line'
1084
+
1085
+ return_value = exec_result .ExecResult (
1086
+ cmd = print_stdin ,
1087
+ stdin = stdin ,
1088
+ stdout = [stdin ],
1089
+ stderr = [],
1090
+ exit_code = 0
1091
+ )
1092
+ check_call .return_value = return_value
1093
+
1094
+ verbose = False
1095
+ raise_on_err = True
1096
+
1097
+ # noinspection PyTypeChecker
1098
+ result = self .get_ssh ().check_call (
1099
+ command = print_stdin ,
1100
+ stdin = stdin ,
1101
+ verbose = verbose ,
1102
+ timeout = None ,
1103
+ raise_on_err = raise_on_err )
1104
+ check_call .assert_called_once_with (
1105
+ command = print_stdin ,
1106
+ stdin = stdin ,
1107
+ verbose = verbose ,
1108
+ timeout = None ,
1109
+ raise_on_err = raise_on_err )
1110
+ self .assertEqual (result , return_value )
1111
+
1112
+ @mock .patch ('exec_helpers.ssh_client.SSHClient.check_call' )
1113
+ def test_check_stdin_bytearray (self , check_call , client , policy , logger ):
1114
+ stdin = bytearray (b'this is a line' )
1115
+
1116
+ return_value = exec_result .ExecResult (
1117
+ cmd = print_stdin ,
1118
+ stdin = stdin ,
1119
+ stdout = [stdin ],
1120
+ stderr = [],
1121
+ exit_code = 0
1122
+ )
1123
+ check_call .return_value = return_value
1124
+
1125
+ verbose = False
1126
+ raise_on_err = True
1127
+
1128
+ # noinspection PyTypeChecker
1129
+ result = self .get_ssh ().check_call (
1130
+ command = print_stdin ,
1131
+ stdin = stdin ,
1132
+ verbose = verbose ,
1133
+ timeout = None ,
1134
+ raise_on_err = raise_on_err )
1135
+ check_call .assert_called_once_with (
1136
+ command = print_stdin ,
1137
+ stdin = stdin ,
1138
+ verbose = verbose ,
1139
+ timeout = None ,
1140
+ raise_on_err = raise_on_err )
1141
+ self .assertEqual (result , return_value )
1142
+
1049
1143
1050
1144
@mock .patch ('exec_helpers._ssh_client_base.logger' , autospec = True )
1051
1145
@mock .patch (
0 commit comments