Skip to content

Commit b2f9c71

Browse files
authored
Merge pull request eclipse-omr#7576 from janvrany/pr/jitbuilder-fix-deprecated-method-in-apigen-tests
Use assertRegex instead of deprecated assertRegexpMatches v2
2 parents 3ddaad3 + 6f14a29 commit b2f9c71

File tree

1 file changed

+57
-47
lines changed

1 file changed

+57
-47
lines changed

jitbuilder/apigen/test/cppgentests.py

Lines changed: 57 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@
2828
import genutils
2929
import cppgen
3030

31+
# Method assertRegexpMatches has been deprecated in Python 3.2 and compatibility
32+
# alias was apparently removed in Python 3.12.
33+
#
34+
# However not all CI build agents have been upgraded to Python 3.2 while some
35+
# only have Python 3.12+ and cannot be easily downgraded (e.g., RISC-V agents).
36+
#
37+
# The code belows provides compatibility for Python < 3.2
38+
if not hasattr(unittest.TestCase, "assertRegex") and hasattr(unittest.TestCase, "assertRegexpMatches"):
39+
setattr(unittest.TestCase, "assertRegex", unittest.TestCase.assertRegexpMatches)
40+
3141
class CppGeneratorTest(unittest.TestCase):
3242
"""Tests for CppGenerator class"""
3343

@@ -37,10 +47,10 @@ def setUp(self):
3747
self.generator = cppgen.CppGenerator(self.api, "", [])
3848

3949
def test_generate_include_1(self):
40-
self.assertRegexpMatches(self.generator.generate_include("foo.hpp"), '#include\s+"foo.hpp"')
50+
self.assertRegex(self.generator.generate_include("foo.hpp"), '#include\s+"foo.hpp"')
4151

4252
def test_generate_include_2(self):
43-
self.assertRegexpMatches(self.generator.generate_include("bar"), '#include\s+"bar"')
53+
self.assertRegex(self.generator.generate_include("bar"), '#include\s+"bar"')
4454

4555
def test_get_client_class_name_1(self):
4656
class_desc = self.api.classes()[0].inner_classes()[0]
@@ -92,26 +102,26 @@ def test_get_impl_type_5(self):
92102
self.assertRaises(KeyError, self.generator.get_impl_type, type_desc)
93103

94104
def test_generate_static_cast_1(self):
95-
self.assertRegexpMatches(self.generator.generate_static_cast("void *", "foo"),
96-
"static_cast<\s*void \*\s*>\(\s*foo\s*\)")
105+
self.assertRegex(self.generator.generate_static_cast("void *", "foo"),
106+
"static_cast<\s*void \*\s*>\(\s*foo\s*\)")
97107

98108
def test_generate_static_cast_2(self):
99-
self.assertRegexpMatches(self.generator.generate_static_cast("bar", "quux"),
100-
"static_cast<\s*bar\s*>\(\s*quux\s*\)")
109+
self.assertRegex(self.generator.generate_static_cast("bar", "quux"),
110+
"static_cast<\s*bar\s*>\(\s*quux\s*\)")
101111

102112
def test_generate_static_cast_3(self):
103-
self.assertRegexpMatches(self.generator.generate_static_cast(" ", " "),
104-
"static_cast<\s*>\(\s*\)")
113+
self.assertRegex(self.generator.generate_static_cast(" ", " "),
114+
"static_cast<\s*>\(\s*\)")
105115

106116
def test_to_impl_cast_1(self):
107117
class_desc = self.api.get_class_by_name("class_1_inner_class_1")
108-
self.assertRegexpMatches(self.generator.to_impl_cast(class_desc, "foo"),
109-
"static_cast<TR::class_1::class_1_inner_class_1\s*\*>\(\s*foo\s*\)")
118+
self.assertRegex(self.generator.to_impl_cast(class_desc, "foo"),
119+
"static_cast<TR::class_1::class_1_inner_class_1\s*\*>\(\s*foo\s*\)")
110120

111121
def test_to_impl_cast_2(self):
112122
class_desc = self.api.get_class_by_name("class_2")
113-
self.assertRegexpMatches(self.generator.to_impl_cast(class_desc, "bar"),
114-
"static_cast<TR::class_2\s*\*>\(\s*static_cast<TR::class_1\s*\*>\(\s*bar\s*\)\s*\)")
123+
self.assertRegex(self.generator.to_impl_cast(class_desc, "bar"),
124+
"static_cast<TR::class_2\s*\*>\(\s*static_cast<TR::class_1\s*\*>\(\s*bar\s*\)\s*\)")
115125

116126
@unittest.skip("Instead of rasing an assert, to_impl_case raises an AttributeError: 'APIType' object has no attribute 'base', which is no good.")
117127
def test_to_impl_cast_3(self):
@@ -120,13 +130,13 @@ def test_to_impl_cast_3(self):
120130

121131
def test_to_opaque_cast_1(self):
122132
class_desc = self.api.get_class_by_name("class_1_inner_class_1")
123-
self.assertRegexpMatches(self.generator.to_opaque_cast("foo", class_desc),
124-
"static_cast<void\s*\*>\(\s*foo\s*\)")
133+
self.assertRegex(self.generator.to_opaque_cast("foo", class_desc),
134+
"static_cast<void\s*\*>\(\s*foo\s*\)")
125135

126136
def test_to_opaque_cast_2(self):
127137
class_desc = self.api.get_class_by_name("class_2")
128-
self.assertRegexpMatches(self.generator.to_opaque_cast("bar", class_desc),
129-
"static_cast<void\s*\*>\(\s*static_cast<TR::class_1\s*\*>\(\s*bar\s*\)\s*\)")
138+
self.assertRegex(self.generator.to_opaque_cast("bar", class_desc),
139+
"static_cast<void\s*\*>\(\s*static_cast<TR::class_1\s*\*>\(\s*bar\s*\)\s*\)")
130140

131141
@unittest.skip("Instead of rasing an assert, to_impl_case raises an AttributeError: 'APIType' object has no attribute 'base', which is no good.")
132142
def test_to_opaque_cast_3(self):
@@ -135,13 +145,13 @@ def test_to_opaque_cast_3(self):
135145

136146
def test_to_client_cast_1(self):
137147
class_desc = self.api.get_class_by_name("class_1_inner_class_1")
138-
self.assertRegexpMatches(self.generator.to_client_cast(class_desc, "foo"),
139-
"static_cast<class_1::class_1_inner_class_1\s*\*>\(\s*foo\s*\)")
148+
self.assertRegex(self.generator.to_client_cast(class_desc, "foo"),
149+
"static_cast<class_1::class_1_inner_class_1\s*\*>\(\s*foo\s*\)")
140150

141151
def test_to_client_cast_2(self):
142152
class_desc = self.api.get_class_by_name("class_2")
143-
self.assertRegexpMatches(self.generator.to_client_cast(class_desc, "bar"),
144-
"static_cast<class_2\s*\*>\(\s*bar\s*\)")
153+
self.assertRegex(self.generator.to_client_cast(class_desc, "bar"),
154+
"static_cast<class_2\s*\*>\(\s*bar\s*\)")
145155

146156
@unittest.skip("Instead of rasing an assert, to_impl_case raises an AttributeError: 'APIType' object has no attribute 'base', which is no good.")
147157
def test_to_client_cast_3(self):
@@ -150,27 +160,27 @@ def test_to_client_cast_3(self):
150160

151161
def test_grab_impl_1(self):
152162
type_desc = genutils.APIType("int32", self.api)
153-
self.assertRegexpMatches(self.generator.grab_impl("foo", type_desc), "foo")
163+
self.assertRegex(self.generator.grab_impl("foo", type_desc), "foo")
154164

155165
def test_grab_impl_2(self):
156166
type_desc = self.api.get_class_by_name("class_1_inner_class_1").as_type()
157-
self.assertRegexpMatches(self.generator.grab_impl("bar", type_desc),
158-
"static_cast<TR::class_1::class_1_inner_class_1\s*\*>\(\s*bar\s*!=\s*NULL\s*\?\s*bar->_impl\s*:\s*NULL\s*\)")
167+
self.assertRegex(self.generator.grab_impl("bar", type_desc),
168+
"static_cast<TR::class_1::class_1_inner_class_1\s*\*>\(\s*bar\s*!=\s*NULL\s*\?\s*bar->_impl\s*:\s*NULL\s*\)")
159169

160170
def test_generate_parm_1(self):
161171
parm_desc = self.api.services()[0].parameters()[0]
162-
self.assertRegexpMatches(self.generator.generate_parm(parm_desc),
163-
"int16_t\s*Project_service_1_parm_1")
172+
self.assertRegex(self.generator.generate_parm(parm_desc),
173+
"int16_t\s*Project_service_1_parm_1")
164174

165175
def test_generate_parm_2(self):
166176
parm_desc = self.api.services()[0].parameters()[1]
167-
self.assertRegexpMatches(self.generator.generate_parm(parm_desc),
168-
"void\s*\*\s*\*\s*Project_service_1_parm_2")
177+
self.assertRegex(self.generator.generate_parm(parm_desc),
178+
"void\s*\*\s*\*\s*Project_service_1_parm_2")
169179

170180
def test_generate_parm_3(self):
171181
parm_desc = self.api.services()[0].parameters()[2]
172-
self.assertRegexpMatches(self.generator.generate_parm(parm_desc),
173-
"double\s*\*\s*Project_service_1_parm_3")
182+
self.assertRegex(self.generator.generate_parm(parm_desc),
183+
"double\s*\*\s*Project_service_1_parm_3")
174184

175185
def test_generate_arg_1(self):
176186
parm_desc = self.api.services()[0].parameters()[0]
@@ -202,45 +212,45 @@ def test_get_allocator_name_1(self):
202212

203213
def test_generate_field_decl_1(self):
204214
field = self.api.get_class_by_name("class_1").fields()[0]
205-
self.assertRegexpMatches(self.generator.generate_field_decl(field),
206-
"public:\s*float\s+class_1_field_1\s*;")
215+
self.assertRegex(self.generator.generate_field_decl(field),
216+
"public:\s*float\s+class_1_field_1\s*;")
207217

208218
def test_generate_field_decl_2(self):
209219
field = self.api.get_class_by_name("class_1").fields()[1]
210-
self.assertRegexpMatches(self.generator.generate_field_decl(field, False),
211-
"double\s+class_1_field_2\s*;")
220+
self.assertRegex(self.generator.generate_field_decl(field, False),
221+
"double\s+class_1_field_2\s*;")
212222

213223
def test_generate_class_service_decl_1(self):
214224
service = self.api.get_class_by_name("class_1").services()[0]
215-
self.assertRegexpMatches(self.generator.generate_class_service_decl(service),
216-
"public:\s*const\s*char\s*\*\s*class_1_service_1\(\s*const\s*char\s*\*\s*class_1_service_1_parm\s*\);")
225+
self.assertRegex(self.generator.generate_class_service_decl(service),
226+
"public:\s*const\s*char\s*\*\s*class_1_service_1\(\s*const\s*char\s*\*\s*class_1_service_1_parm\s*\);")
217227

218228
def test_generate_class_service_decl_2(self):
219229
service = self.api.get_class_by_name("class_1").services()[1]
220-
self.assertRegexpMatches(self.generator.generate_class_service_decl(service),
221-
"protected:\s*void\s*class_1_service_2\(\s*\);")
230+
self.assertRegex(self.generator.generate_class_service_decl(service),
231+
"protected:\s*void\s*class_1_service_2\(\s*\);")
222232

223233
def test_generate_ctor_decl_1(self):
224234
ctor = self.api.get_class_by_name("class_2").constructors()[0]
225-
self.assertRegexpMatches(self.generator.generate_ctor_decl(ctor, "class_2"),
226-
"public:\s*class_2\(\)\s*;")
235+
self.assertRegex(self.generator.generate_ctor_decl(ctor, "class_2"),
236+
"public:\s*class_2\(\)\s*;")
227237

228238
def test_generate_ctor_decl_2(self):
229239
ctor = self.api.get_class_by_name("class_1_inner_class_1").constructors()[0]
230-
self.assertRegexpMatches(self.generator.generate_ctor_decl(ctor, "class_1_inner_class_1"),
231-
"public:\s*class_1_inner_class_1\(\)\s*;")
240+
self.assertRegex(self.generator.generate_ctor_decl(ctor, "class_1_inner_class_1"),
241+
"public:\s*class_1_inner_class_1\(\)\s*;")
232242

233243
def test_generate_dtor_decl_1(self):
234244
class_desc = self.api.get_class_by_name("class_2")
235-
self.assertRegexpMatches(self.generator.generate_dtor_decl(class_desc),
236-
"public:\s*~class_2\(\)\s*;")
245+
self.assertRegex(self.generator.generate_dtor_decl(class_desc),
246+
"public:\s*~class_2\(\)\s*;")
237247

238248
def test_generate_dtor_decl_2(self):
239249
class_desc = self.api.get_class_by_name("class_1_inner_class_1")
240-
self.assertRegexpMatches(self.generator.generate_dtor_decl(class_desc),
241-
"public:\s*~class_1_inner_class_1\(\)\s*;")
250+
self.assertRegex(self.generator.generate_dtor_decl(class_desc),
251+
"public:\s*~class_1_inner_class_1\(\)\s*;")
242252

243253
def test_generate_allocator_decl_1(self):
244254
class_desc = self.api.get_class_by_name("class_1_inner_class_1")
245-
self.assertRegexpMatches(self.generator.generate_allocator_decl(class_desc),
246-
'extern\s*"C"\s*void\s*\*\s*allocateclass_1class_1_inner_class_1\(void\s*\*\s*impl\);')
255+
self.assertRegex(self.generator.generate_allocator_decl(class_desc),
256+
'extern\s*"C"\s*void\s*\*\s*allocateclass_1class_1_inner_class_1\(void\s*\*\s*impl\);')

0 commit comments

Comments
 (0)