@@ -344,23 +344,13 @@ mod tests {
344344 use super :: * ;
345345 use serde_json:: json;
346346 use std:: fs;
347- use std:: sync:: atomic:: { AtomicUsize , Ordering } ;
348- use std:: time:: { SystemTime , UNIX_EPOCH } ;
349-
350- static TMP_COUNTER : AtomicUsize = AtomicUsize :: new ( 0 ) ;
351-
352- fn tempdir ( label : & str ) -> PathBuf {
353- let nanos = SystemTime :: now ( )
354- . duration_since ( UNIX_EPOCH )
355- . unwrap_or_default ( )
356- . as_nanos ( ) ;
357- let count = TMP_COUNTER . fetch_add ( 1 , Ordering :: Relaxed ) ;
358- let dir = std:: env:: temp_dir ( ) . join ( format ! (
359- "hl-wasm-tools-{label}-{}-{nanos}-{count}" ,
360- std:: process:: id( )
361- ) ) ;
362- fs:: create_dir_all ( & dir) . unwrap ( ) ;
363- dir
347+ use tempfile:: TempDir ;
348+
349+ fn tempdir ( label : & str ) -> TempDir {
350+ tempfile:: Builder :: new ( )
351+ . prefix ( & format ! ( "hl-wasm-tools-{label}-" ) )
352+ . tempdir ( )
353+ . unwrap ( )
364354 }
365355
366356 fn default_options ( ) -> WasmToolOptions {
@@ -373,7 +363,7 @@ mod tests {
373363
374364 fn load_tool ( name : & str , wasm : Vec < u8 > , options : WasmToolOptions ) -> WasmTool {
375365 let dir = tempdir ( name) ;
376- let path = dir. join ( format ! ( "{name}.wasm" ) ) ;
366+ let path = dir. path ( ) . join ( format ! ( "{name}.wasm" ) ) ;
377367 fs:: write ( & path, wasm) . unwrap ( ) ;
378368 let specs = vec ! [ format!( "{name}={}" , path. display( ) ) ] ;
379369 let mut tools = WasmTool :: load_all ( & specs, & options) . unwrap ( ) ;
@@ -848,8 +838,8 @@ mod tests {
848838 let rw = tempdir ( "rw" ) ;
849839 let ro = tempdir ( "ro" ) ;
850840 let opts = WasmToolOptions :: from_cli (
851- & [ format ! ( "{}:/rw" , rw. display( ) ) ] ,
852- & [ format ! ( "{}:/ro" , ro. display( ) ) ] ,
841+ & [ format ! ( "{}:/rw" , rw. path ( ) . display( ) ) ] ,
842+ & [ format ! ( "{}:/ro" , ro. path ( ) . display( ) ) ] ,
853843 & [ "A=B" . to_string ( ) , "EMPTY=" . to_string ( ) ] ,
854844 & [ ] ,
855845 123 ,
@@ -864,10 +854,10 @@ mod tests {
864854 vec![ ( "A" . into( ) , "B" . into( ) ) , ( "EMPTY" . into( ) , "" . into( ) ) ]
865855 ) ;
866856 assert_eq ! ( opts. dirs. len( ) , 2 ) ;
867- assert_eq ! ( opts. dirs[ 0 ] . host, fs:: canonicalize( & rw ) . unwrap( ) ) ;
857+ assert_eq ! ( opts. dirs[ 0 ] . host, fs:: canonicalize( rw . path ( ) ) . unwrap( ) ) ;
868858 assert_eq ! ( opts. dirs[ 0 ] . guest, "/rw" ) ;
869859 assert ! ( !opts. dirs[ 0 ] . read_only) ;
870- assert_eq ! ( opts. dirs[ 1 ] . host, fs:: canonicalize( & ro ) . unwrap( ) ) ;
860+ assert_eq ! ( opts. dirs[ 1 ] . host, fs:: canonicalize( ro . path ( ) ) . unwrap( ) ) ;
871861 assert_eq ! ( opts. dirs[ 1 ] . guest, "/ro" ) ;
872862 assert ! ( opts. dirs[ 1 ] . read_only) ;
873863 }
@@ -876,7 +866,8 @@ mod tests {
876866 fn cli_options_default_wasi_guest_path_to_host ( ) {
877867 let dir = tempdir ( "default-guest" ) ;
878868 let opts =
879- WasmToolOptions :: from_cli ( & [ dir. display ( ) . to_string ( ) ] , & [ ] , & [ ] , & [ ] , 1 , 1 ) . unwrap ( ) ;
869+ WasmToolOptions :: from_cli ( & [ dir. path ( ) . display ( ) . to_string ( ) ] , & [ ] , & [ ] , & [ ] , 1 , 1 )
870+ . unwrap ( ) ;
880871 assert_eq ! ( opts. dirs[ 0 ] . guest, "/host" ) ;
881872 }
882873
@@ -912,7 +903,7 @@ mod tests {
912903 assert ! ( WasmToolOptions :: from_cli( & [ ] , & [ ] , & [ "=value" . to_string( ) ] , & [ ] , 1 , 1 ) . is_err( ) ) ;
913904 assert ! ( WasmToolOptions :: from_cli( & [ ] , & [ ] , & [ ] , & [ "" . to_string( ) ] , 1 , 1 ) . is_err( ) ) ;
914905 assert ! ( WasmToolOptions :: from_cli(
915- & [ format!( "{}:relative" , dir. display( ) ) ] ,
906+ & [ format!( "{}:relative" , dir. path ( ) . display( ) ) ] ,
916907 & [ ] ,
917908 & [ ] ,
918909 & [ ] ,
@@ -922,8 +913,8 @@ mod tests {
922913 . is_err( ) ) ;
923914 assert ! ( WasmToolOptions :: from_cli(
924915 & [
925- format!( "{}:/dup" , dir. display( ) ) ,
926- format!( "{}:/dup" , dir. display( ) )
916+ format!( "{}:/dup" , dir. path ( ) . display( ) ) ,
917+ format!( "{}:/dup" , dir. path ( ) . display( ) )
927918 ] ,
928919 & [ ] ,
929920 & [ ] ,
@@ -987,9 +978,9 @@ mod tests {
987978 #[ test]
988979 fn load_all_rejects_duplicate_names_invalid_wasm_and_unknown_imports ( ) {
989980 let dir = tempdir ( "load-errors" ) ;
990- let ok = dir. join ( "ok.wasm" ) ;
991- let bad = dir. join ( "bad.wasm" ) ;
992- let unknown = dir. join ( "unknown.wasm" ) ;
981+ let ok = dir. path ( ) . join ( "ok.wasm" ) ;
982+ let bad = dir. path ( ) . join ( "bad.wasm" ) ;
983+ let unknown = dir. path ( ) . join ( "unknown.wasm" ) ;
993984 fs:: write ( & ok, no_output_module ( ) ) . unwrap ( ) ;
994985 fs:: write ( & bad, b"not wasm" ) . unwrap ( ) ;
995986 fs:: write ( & unknown, unknown_import_module ( ) ) . unwrap ( ) ;
@@ -1037,10 +1028,10 @@ mod tests {
10371028 #[ test]
10381029 fn invoke_can_read_explicit_read_only_preopen ( ) {
10391030 let root = tempdir ( "preopen-read" ) ;
1040- fs:: write ( root. join ( "answer.json" ) , br#"{"result":"file-ok"}"# ) . unwrap ( ) ;
1031+ fs:: write ( root. path ( ) . join ( "answer.json" ) , br#"{"result":"file-ok"}"# ) . unwrap ( ) ;
10411032 let options = WasmToolOptions :: from_cli (
10421033 & [ ] ,
1043- & [ format ! ( "{}:." , root. display( ) ) ] ,
1034+ & [ format ! ( "{}:." , root. path ( ) . display( ) ) ] ,
10441035 & [ ] ,
10451036 & [ ] ,
10461037 1_000_000 ,
0 commit comments