@@ -119,6 +119,56 @@ def test_custom_init(self):
119
119
# there should be no trust entries at all
120
120
self .assertFalse (any ('trust' in s for s in lines ))
121
121
122
+ def test_init__LANG_С (self ):
123
+ # PBCKP-1744
124
+ prev_LANG = os .environ .get ("LANG" )
125
+
126
+ try :
127
+ os .environ ["LANG" ] = "C"
128
+
129
+ with get_remote_node (conn_params = conn_params ) as node :
130
+ node .init ().start ()
131
+ finally :
132
+ __class__ .helper__restore_envvar ("LANG" , prev_LANG )
133
+
134
+ def test_init__unk_LANG_and_LC_CTYPE (self ):
135
+ # PBCKP-1744
136
+ prev_LANG = os .environ .get ("LANG" )
137
+ prev_LANGUAGE = os .environ .get ("LANGUAGE" )
138
+ prev_LC_CTYPE = os .environ .get ("LC_CTYPE" )
139
+ prev_LC_COLLATE = os .environ .get ("LC_COLLATE" )
140
+
141
+ try :
142
+ os .environ ["LANG" ] = "UNKNOWN_LANG"
143
+ os .environ .pop ("LANGUAGE" , None )
144
+ os .environ ["LC_CTYPE" ] = "UNKNOWN_CTYPE"
145
+ os .environ .pop ("LC_COLLATE" , None )
146
+
147
+ assert os .environ .get ("LANG" ) == "UNKNOWN_LANG"
148
+ assert not ("LANGUAGE" in os .environ .keys ())
149
+ assert os .environ .get ("LC_CTYPE" ) == "UNKNOWN_CTYPE"
150
+ assert not ("LC_COLLATE" in os .environ .keys ())
151
+
152
+ while True :
153
+ try :
154
+ with get_remote_node (conn_params = conn_params ):
155
+ pass
156
+ except testgres .exceptions .ExecUtilException as e :
157
+ # warning: setlocale: LC_CTYPE: cannot change locale (UNKNOWN_CTYPE): No such file or directory
158
+ # postgres (PostgreSQL) 14.12
159
+ errMsg = str (e )
160
+ assert "LC_CTYPE" in errMsg
161
+ assert "UNKNOWN_CTYPE" in errMsg
162
+ assert "warning: setlocale: LC_CTYPE: cannot change locale (UNKNOWN_CTYPE): No such file or directory" in errMsg
163
+ assert "postgres" in errMsg
164
+ break
165
+ raise Exception ("We expected an error!" )
166
+ finally :
167
+ __class__ .helper__restore_envvar ("LANG" , prev_LANG )
168
+ __class__ .helper__restore_envvar ("LANGUAGE" , prev_LANGUAGE )
169
+ __class__ .helper__restore_envvar ("LC_CTYPE" , prev_LC_CTYPE )
170
+ __class__ .helper__restore_envvar ("LC_COLLATE" , prev_LC_COLLATE )
171
+
122
172
def test_double_init (self ):
123
173
with get_remote_node (conn_params = conn_params ).init () as node :
124
174
# can't initialize node more than once
@@ -994,6 +1044,12 @@ def test_child_process_dies(self):
994
1044
# try to handle children list -- missing processes will have ptype "ProcessType.Unknown"
995
1045
[ProcessProxy (p ) for p in children ]
996
1046
1047
+ def helper__restore_envvar (name , prev_value ):
1048
+ if prev_value is None :
1049
+ os .environ .pop (name , None )
1050
+ else :
1051
+ os .environ [name ] = prev_value
1052
+
997
1053
998
1054
if __name__ == '__main__' :
999
1055
if os_ops .environ ('ALT_CONFIG' ):
0 commit comments