@@ -99,7 +99,6 @@ def main_method(self):
9999 assert read_write_context .strip () == expected_read_write_context .strip ()
100100 assert read_only_context .strip () == expected_read_only_context .strip ()
101101
102-
103102def test_class_method_dependencies () -> None :
104103 file_path = Path (__file__ ).resolve ()
105104
@@ -1260,3 +1259,57 @@ def __repr__(self) -> str:
12601259
12611260 assert read_write_context .strip () == expected_read_write_context .strip ()
12621261 assert read_only_context .strip () == expected_read_only_context .strip ()
1262+
1263+ def test_indirect_init_helper () -> None :
1264+ code = """
1265+ class MyClass:
1266+ def __init__(self):
1267+ self.x = 1
1268+ self.y = outside_method()
1269+ def target_method(self):
1270+ return self.x + self.y
1271+
1272+ def outside_method():
1273+ return 1
1274+ """
1275+ with tempfile .NamedTemporaryFile (mode = "w" ) as f :
1276+ f .write (code )
1277+ f .flush ()
1278+ file_path = Path (f .name ).resolve ()
1279+ opt = Optimizer (
1280+ Namespace (
1281+ project_root = file_path .parent .resolve (),
1282+ disable_telemetry = True ,
1283+ tests_root = "tests" ,
1284+ test_framework = "pytest" ,
1285+ pytest_cmd = "pytest" ,
1286+ experiment_id = None ,
1287+ test_project_root = Path ().resolve (),
1288+ )
1289+ )
1290+ function_to_optimize = FunctionToOptimize (
1291+ function_name = "target_method" ,
1292+ file_path = file_path ,
1293+ parents = [FunctionParent (name = "MyClass" , type = "ClassDef" )],
1294+ starting_line = None ,
1295+ ending_line = None ,
1296+ )
1297+
1298+ code_ctx = get_code_optimization_context (function_to_optimize , opt .args .project_root )
1299+ read_write_context , read_only_context = code_ctx .read_writable_code , code_ctx .read_only_context_code
1300+ expected_read_write_context = """
1301+ class MyClass:
1302+ def __init__(self):
1303+ self.x = 1
1304+ self.y = outside_method()
1305+ def target_method(self):
1306+ return self.x + self.y
1307+ """
1308+ expected_read_only_context = f"""
1309+ ```python:{ file_path .relative_to (opt .args .project_root )}
1310+ def outside_method():
1311+ return 1
1312+ ```
1313+ """
1314+ assert read_write_context .strip () == expected_read_write_context .strip ()
1315+ assert read_only_context .strip () == expected_read_only_context .strip ()
0 commit comments