33
44import json
55import os
6+ from distutils .dir_util import copy_tree
7+ from distutils .file_util import copy_file
68from threading import Thread
79
810import pytest
@@ -168,9 +170,7 @@ def add_event(name):
168170 r .add_event (Event ({"name" : name }))
169171 recorders [name ] = r
170172
171- threads = [
172- Thread (target = add_event , args = (f"thread{ i } " ,)) for i in range (thread_count )
173- ]
173+ threads = [Thread (target = add_event , args = (f"thread{ i } " ,)) for i in range (thread_count )]
174174 for _ , t in enumerate (threads ):
175175 t .start ()
176176 for _ , t in enumerate (threads ):
@@ -188,3 +188,27 @@ def add_event(name):
188188 events = recorders [f"thread{ n } " ].events
189189 assert len (events ) == 1
190190 assert events [0 ].event ["name" ] == f"thread{ n } "
191+
192+
193+ def test_process_recording (data_dir , shell , tmp_path ):
194+ fixture = data_dir / "package1"
195+ tmp = tmp_path / "process"
196+ copy_tree (fixture , str (tmp / "package1" ))
197+ copy_file (data_dir / "appmap.yml" , str (tmp ))
198+ copy_tree (data_dir / "flask" / "init" , str (tmp / "init" ))
199+
200+ ret = shell .run (
201+ "python" ,
202+ "-m" ,
203+ "package1.package2" ,
204+ env = {"PYTHONPATH" : "init" , "APPMAP_RECORD_PROCESS" : "true" },
205+ cwd = tmp ,
206+ )
207+ assert ret .returncode == 0
208+
209+ appmap_dir = tmp / "tmp" / "appmap" / "process"
210+ appmap_files = list (appmap_dir .glob ("*.appmap.json" ))
211+ assert len (appmap_files ) == 1
212+ actual = json .loads (appmap_files [0 ].read_text ())
213+ assert len (actual ["events" ]) > 0
214+ assert len (actual ["classMap" ]) > 0
0 commit comments