@@ -22,6 +22,76 @@ def tmp_examples(tmp_path_factory):
2222    yield  tmp_examples 
2323
2424
25+ @pytest .fixture (scope = "session" ) 
26+ def  example_cases (tmp_path_factory ):
27+     """Copy the entire examples tree into a temp directory once per test 
28+     session. 
29+ 
30+     Returns the path to that copy. 
31+     """ 
32+     root_temp_dir  =  tmp_path_factory .mktemp ("temp" )
33+ 
34+     # case 1: pack with no examples 
35+     case1ex_dir  =  root_temp_dir  /  "case1"  /  "docs"  /  "examples" 
36+     case1  =  case1ex_dir  /  "empty_pack"   # empty_pack 
37+     case1 .mkdir (parents = True , exist_ok = True )
38+     case1req_dir  =  root_temp_dir  /  "case1"  /  "requirements"  /  "packs" 
39+     case1req_dir .mkdir (parents = True , exist_ok = True )
40+ 
41+     # Case 2: pack with multiple examples 
42+     case2ex_dir  =  root_temp_dir  /  "case2"  /  "docs"  /  "examples" 
43+     case2a  =  (
44+         case2ex_dir  /  "full_pack"  /  "ex1"  /  "solution"  /  "diffpy-cmi" 
45+     )  # full_pack, ex1 
46+     case2a .mkdir (parents = True , exist_ok = True )
47+     (case2a  /  "script1.py" ).touch ()
48+     case2b  =  (
49+         case2ex_dir  /  "full_pack"  /  "ex2"  /  "random"  /  "path" 
50+     )  # full_pack, ex2 
51+     case2b .mkdir (parents = True , exist_ok = True )
52+     (case2b  /  "script1.py" ).touch ()
53+     (case2b  /  "script2.py" ).touch ()
54+     case2req_dir  =  root_temp_dir  /  "case2"  /  "requirements"  /  "packs" 
55+     case2req_dir .mkdir (parents = True , exist_ok = True )
56+ 
57+     # Case 3: multiple packs with multiple examples 
58+     case3ex_dir  =  root_temp_dir  /  "case3"  /  "docs"  /  "examples" 
59+     case3a  =  case3ex_dir  /  "packA"  /  "ex1"   # packA, ex1 
60+     case3a .mkdir (parents = True , exist_ok = True )
61+     (case3a  /  "script1.py" ).touch ()
62+     case3b  =  case3ex_dir  /  "packA"  /  "ex2"  /  "solutions"   # packA, ex2 
63+     case3b .mkdir (parents = True , exist_ok = True )
64+     (case3b  /  "script2.py" ).touch ()
65+     case3c  =  (
66+         case3ex_dir  /  "packB"  /  "ex3"  /  "more"  /  "random"  /  "path" 
67+     )  # packB, ex3 
68+     case3c .mkdir (parents = True , exist_ok = True )
69+     (case3c  /  "script3.py" ).touch ()
70+     (case3c  /  "script4.py" ).touch ()
71+     case3req_dir  =  root_temp_dir  /  "case3"  /  "requirements"  /  "packs" 
72+     case3req_dir .mkdir (parents = True , exist_ok = True )
73+ 
74+     # Case 4: no pack found (empty directory) 
75+     case4ex_dir  =  root_temp_dir  /  "case4"  /  "docs"  /  "examples" 
76+     case4  =  case4ex_dir 
77+     case4 .mkdir (parents = True , exist_ok = True )
78+     case4req_dir  =  root_temp_dir  /  "case4"  /  "requirements"  /  "packs" 
79+     case4req_dir .mkdir (parents = True , exist_ok = True )
80+ 
81+     # Case 5: multiple packs with the same example names 
82+     case5ex_dir  =  root_temp_dir  /  "case5"  /  "docs"  /  "examples" 
83+     case5a  =  case5ex_dir  /  "packA"  /  "ex1"  /  "path1"   # packA, ex1 
84+     case5a .mkdir (parents = True , exist_ok = True )
85+     (case5a  /  "script1.py" ).touch ()
86+     case5b  =  case5ex_dir  /  "packB"  /  "ex1"  /  "path2"   # packB, ex1 
87+     case5b .mkdir (parents = True , exist_ok = True )
88+     (case5b  /  "script2.py" ).touch ()
89+     case5req_dir  =  root_temp_dir  /  "case5"  /  "requirements"  /  "packs" 
90+     case5req_dir .mkdir (parents = True , exist_ok = True )
91+ 
92+     yield  root_temp_dir 
93+ 
94+ 
2595@pytest .fixture (scope = "session" , autouse = True ) 
2696def  use_headless_matplotlib ():
2797    """Force matplotlib to use a headless backend during tests.""" 
0 commit comments