@@ -1073,6 +1073,29 @@ let c, r, res
10731073    @test  res ===  false 
10741074end 
10751075
1076+ #  A pair of utility function for the REPL completions test to test PATH_cache
1077+ #  dependent completions, which ordinarily happen asynchronously.
1078+ #  Only to be used from the test suite
1079+ function  test_only_arm_cache_refresh ()
1080+     @assert  REPL. REPLCompletions. PATH_cache_condition ===  nothing 
1081+     @lock  REPL. REPLCompletions. PATH_cache_lock begin 
1082+         #  force the next cache update to happen immediately
1083+         REPL. REPLCompletions. next_cache_update =  0 
1084+         #  Arm a condition we can wait on
1085+         REPL. REPLCompletions. PATH_cache_condition =  Threads. Condition (REPL. REPLCompletions. PATH_cache_lock)
1086+     end 
1087+     return  REPL. REPLCompletions. PATH_cache_condition
1088+ end 
1089+ 
1090+ function  test_only_wait_cache_path_done ()
1091+     @lock  REPL. REPLCompletions. PATH_cache_lock begin 
1092+         while  REPL. REPLCompletions. next_cache_update ==  0. 
1093+             wait (REPL. REPLCompletions. PATH_cache_condition)
1094+         end 
1095+         REPL. REPLCompletions. PATH_cache_condition =  nothing 
1096+     end 
1097+ end 
1098+ 
10761099if  Sys. isunix ()
10771100let  s, c, r
10781101    # Assume that we can rely on the existence and accessibility of /tmp
@@ -1204,12 +1227,9 @@ let s, c, r
12041227                #  Files reachable by PATH are cached async when PATH is seen to have been changed by `complete_path`
12051228                #  so changes are unlikely to appear in the first complete. For testing purposes we can wait for
12061229                #  caching to finish
1207-                 @lock  REPL. REPLCompletions. PATH_cache_lock begin 
1208-                     #  force the next cache update to happen immediately
1209-                     REPL. REPLCompletions. next_cache_update =  0 
1210-                 end 
1230+                 test_only_arm_cache_refresh ()
12111231                c,r =  test_scomplete (s)
1212-                 timedwait (() -> REPL . REPLCompletions . next_cache_update  !=   0 ,  5 )  #  wait for caching to complete 
1232+                 test_only_wait_cache_path_done () 
12131233                c,r =  test_scomplete (s)
12141234                @test  " tmp-executable" in  c
12151235                @test  r ==  1 : 9 
@@ -1238,12 +1258,9 @@ let s, c, r
12381258
12391259            withenv (" PATH" =>  string (tempdir (), " :" do 
12401260                s =  string (" repl-completio" 
1241-                 @lock  REPL. REPLCompletions. PATH_cache_lock begin 
1242-                     #  force the next cache update to happen immediately
1243-                     REPL. REPLCompletions. next_cache_update =  0 
1244-                 end 
1261+                 test_only_arm_cache_refresh ()
12451262                c,r =  test_scomplete (s)
1246-                 timedwait (() -> REPL . REPLCompletions . next_cache_update  !=   0 ,  5 )  #  wait for caching to complete 
1263+                 test_only_wait_cache_path_done () 
12471264                c,r =  test_scomplete (s)
12481265                @test  [" repl-completion" ==  c
12491266                @test  s[r] ==  " repl-completio" 
0 commit comments