@@ -432,10 +432,36 @@ mod tests {
432432
433433 use super :: * ;
434434
435+ pub struct Defer < F : FnOnce ( ) > ( Option < F > ) ;
436+
437+ impl < F : FnOnce ( ) > Defer < F > {
438+ pub fn new ( f : F ) -> Self {
439+ Defer ( Some ( f) )
440+ }
441+ }
442+
443+ impl < F : FnOnce ( ) > Drop for Defer < F > {
444+ fn drop ( & mut self ) {
445+ if let Some ( f) = self . 0 . take ( ) {
446+ f ( ) ;
447+ }
448+ }
449+ }
450+
451+ pub fn defer < F : FnOnce ( ) > ( f : F ) -> Defer < F > {
452+ Defer :: new ( f)
453+ }
454+
435455 #[ test]
436456 fn test_get_settings_same_file ( ) {
437457 // Create a test JSON file
438- let value = "test_get_settings_same_file.json" ;
458+ let value = "/tmp/test_get_settings_same_file.json" ;
459+ let _cleanup = defer ( || {
460+ let filename = PathBuf :: from ( value) . canonicalize ( ) . unwrap_or ( value. into ( ) ) ;
461+ if std:: fs:: remove_file ( & filename) . is_err ( ) {
462+ debug ! ( "Failed to delete the file: {}" , filename. display( ) ) ;
463+ }
464+ } ) ;
439465 let config = Versioning :: new ( Rc :: new ( RefCell :: new (
440466 FullSettingsFile :: builder ( )
441467 . storage (
@@ -481,8 +507,24 @@ mod tests {
481507 #[ test]
482508 fn test_get_settings_different_file ( ) {
483509 // Create a test JSON file
484- let external_file = "test_get_settings_different_file_external.json" ;
485- let test_file = "test_get_settings_different_file.json" ;
510+ let external_file = "/tmp/test_get_settings_different_file_external.json" ;
511+ let test_file = "/tmp/test_get_settings_different_file.json" ;
512+ let _cleanup = defer ( || {
513+ let filename = PathBuf :: from ( test_file)
514+ . canonicalize ( )
515+ . unwrap_or ( test_file. into ( ) ) ;
516+ if std:: fs:: remove_file ( & test_file) . is_err ( ) {
517+ debug ! ( "Failed to delete the file: {}" , filename. display( ) ) ;
518+ }
519+ } ) ;
520+ let _cleanup2 = defer ( || {
521+ let filename = PathBuf :: from ( external_file)
522+ . canonicalize ( )
523+ . unwrap_or ( external_file. into ( ) ) ;
524+ if std:: fs:: remove_file ( & external_file) . is_err ( ) {
525+ debug ! ( "Failed to delete the file: {}" , filename. display( ) ) ;
526+ }
527+ } ) ;
486528 let settings_config = Versioning :: new ( Rc :: new ( RefCell :: new (
487529 FullSettingsFile :: builder ( )
488530 . storage (
@@ -533,7 +575,15 @@ mod tests {
533575
534576 #[ test]
535577 fn test_save_settings_same_file ( ) {
536- let test_file = "test_save_settings_same_file.json" ;
578+ let test_file = "/tmp/test_save_settings_same_file.json" ;
579+ let _cleanup = defer ( || {
580+ let filename = PathBuf :: from ( test_file)
581+ . canonicalize ( )
582+ . unwrap_or ( test_file. into ( ) ) ;
583+ if std:: fs:: remove_file ( & filename) . is_err ( ) {
584+ debug ! ( "Failed to delete the file: {}" , filename. display( ) ) ;
585+ }
586+ } ) ;
537587 // Create a test JSON file
538588 let config = Rc :: new ( RefCell :: new (
539589 FullSettingsFile :: builder ( )
@@ -579,8 +629,24 @@ mod tests {
579629
580630 #[ test]
581631 fn test_save_settings_different_file ( ) {
582- let external_file = "test_save_settings_different_file_external.json" ;
583- let test_file = "test_save_settings_different_file.json" ;
632+ let external_file = "/tmp/test_save_settings_different_file_external.json" ;
633+ let test_file = "/tmp/test_save_settings_different_file.json" ;
634+ let _cleanup = defer ( || {
635+ let filename = PathBuf :: from ( test_file)
636+ . canonicalize ( )
637+ . unwrap_or ( test_file. into ( ) ) ;
638+ if std:: fs:: remove_file ( & filename) . is_err ( ) {
639+ debug ! ( "Failed to delete the file: {}" , filename. display( ) ) ;
640+ }
641+ } ) ;
642+ let _cleanup2 = defer ( || {
643+ let filename = PathBuf :: from ( external_file)
644+ . canonicalize ( )
645+ . unwrap_or ( external_file. into ( ) ) ;
646+ if std:: fs:: remove_file ( & filename) . is_err ( ) {
647+ debug ! ( "Failed to delete the file: {}" , filename. display( ) ) ;
648+ }
649+ } ) ;
584650 let sconfig = SConfig :: builder ( )
585651 . role (
586652 SRole :: builder ( "test_role" )
@@ -640,8 +706,24 @@ mod tests {
640706
641707 #[ test]
642708 fn test_save_cbor_format ( ) {
643- let external_file = "test_save_cbor_format.bin" ;
644- let test_file = "test_save_cbor_format.json" ;
709+ let external_file = "/tmp/test_save_cbor_format.bin" ;
710+ let test_file = "/tmp/test_save_cbor_format.json" ;
711+ let _cleanup = defer ( || {
712+ let filename = PathBuf :: from ( test_file)
713+ . canonicalize ( )
714+ . unwrap_or ( test_file. into ( ) ) ;
715+ if std:: fs:: remove_file ( & filename) . is_err ( ) {
716+ debug ! ( "Failed to delete the file: {}" , filename. display( ) ) ;
717+ }
718+ } ) ;
719+ let _cleanup2 = defer ( || {
720+ let filename = PathBuf :: from ( external_file)
721+ . canonicalize ( )
722+ . unwrap_or ( external_file. into ( ) ) ;
723+ if std:: fs:: remove_file ( & filename) . is_err ( ) {
724+ debug ! ( "Failed to delete the file: {}" , filename. display( ) ) ;
725+ }
726+ } ) ;
645727 let sconfig = SConfig :: builder ( )
646728 . role (
647729 SRole :: builder ( "test_role" )
0 commit comments