@@ -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