@@ -71,6 +71,7 @@ use tempfile::TempDir;
7171mod  binary; 
7272mod  delete_pending; 
7373mod  inline; 
74+ mod  unreferenced; 
7475mod  workspace; 
7576
7677/// Wraps a formatting function to be used as a `Stdio` 
@@ -617,92 +618,6 @@ fn foo_always_missing() {
617618    // Check for the name clash error message 
618619    assert ! ( error_output. contains( "Insta snapshot name clash detected between 'foo_always_missing' and 'test_foo_always_missing' in 'snapshot_name_clash_test'. Rename one function." ) ) ; 
619620} 
620- 
621- #[ test]  
622- fn  test_unreferenced_delete ( )  { 
623-     let  test_project = TestFiles :: new ( ) 
624-         . add_cargo_toml ( "test_unreferenced_delete" ) 
625-         . add_file ( 
626-             "src/lib.rs" , 
627-             r#" 
628- #[test] 
629- fn test_snapshot() { 
630-     insta::assert_snapshot!("Hello, world!"); 
631- } 
632- "# 
633-             . to_string ( ) , 
634-         ) 
635-         . create_project ( ) ; 
636- 
637-     // Run tests to create snapshots 
638-     let  output = test_project
639-         . insta_cmd ( ) 
640-         . args ( [ "test" ,  "--accept" ] ) 
641-         . output ( ) 
642-         . unwrap ( ) ; 
643- 
644-     assert ! ( & output. status. success( ) ) ; 
645- 
646-     // Manually add an unreferenced snapshot 
647-     let  unreferenced_snapshot_path = test_project
648-         . workspace_dir 
649-         . join ( "src/snapshots/test_unreferenced_delete__unused_snapshot.snap" ) ; 
650-     std:: fs:: create_dir_all ( unreferenced_snapshot_path. parent ( ) . unwrap ( ) ) . unwrap ( ) ; 
651-     std:: fs:: write ( 
652-         & unreferenced_snapshot_path, 
653-         r#"--- 
654- source: src/lib.rs 
655- expression: "Unused snapshot" 
656- --- 
657- Unused snapshot 
658- "# , 
659-     ) 
660-     . unwrap ( ) ; 
661- 
662-     assert_snapshot ! ( test_project. file_tree_diff( ) ,  @r" 
663-     --- Original file tree 
664-     +++ Updated file tree 
665-     @@ -1,4 +1,8 @@ 
666-       
667-     +  Cargo.lock 
668-        Cargo.toml 
669-        src 
670-          src/lib.rs 
671-     +    src/snapshots 
672-     +      src/snapshots/test_unreferenced_delete__snapshot.snap 
673-     +      src/snapshots/test_unreferenced_delete__unused_snapshot.snap 
674-     " ) ; 
675- 
676-     // Run cargo insta test with --unreferenced=delete 
677-     let  output = test_project
678-         . insta_cmd ( ) 
679-         . args ( [ 
680-             "test" , 
681-             "--unreferenced=delete" , 
682-             "--accept" , 
683-             "--" , 
684-             "--nocapture" , 
685-         ] ) 
686-         . output ( ) 
687-         . unwrap ( ) ; 
688- 
689-     assert ! ( & output. status. success( ) ) ; 
690- 
691-     // We should now see the unreferenced snapshot deleted 
692-     assert_snapshot ! ( test_project. file_tree_diff( ) ,  @r" 
693-     --- Original file tree 
694-     +++ Updated file tree 
695-     @@ -1,4 +1,7 @@ 
696-       
697-     +  Cargo.lock 
698-        Cargo.toml 
699-        src 
700-          src/lib.rs 
701-     +    src/snapshots 
702-     +      src/snapshots/test_unreferenced_delete__snapshot.snap 
703-     " ) ; 
704- } 
705- 
706621#[ test]  
707622fn  test_hidden_snapshots ( )  { 
708623    let  test_project = TestFiles :: new ( ) 
@@ -889,137 +804,3 @@ src/
889804        stderr
890805    ) ; 
891806} 
892- 
893- #[ test]  
894- fn  test_unreferenced_config_reject ( )  { 
895-     // This test verifies that the `test.unreferenced: reject` setting in insta.yaml 
896-     // is respected when no command-line argument is provided. 
897-     // 
898-     // Specifically, it tests the fix for issue #757, which ensures that: 
899-     // 1. Config file settings are properly applied when not overridden by command-line flags 
900-     // 2. Error handling for unreferenced snapshots properly updates the success flag 
901-     let  test_project = TestFiles :: new ( ) 
902-         . add_cargo_toml ( "test_unreferenced_config_reject" ) 
903-         . add_file ( 
904-             "src/lib.rs" , 
905-             r#" 
906- #[test] 
907- fn test_snapshot() { 
908-     insta::assert_snapshot!("Hello, world!"); 
909- } 
910- "# 
911-             . to_string ( ) , 
912-         ) 
913-         . create_project ( ) ; 
914- 
915-     // Run tests to create snapshots first (without the config file) 
916-     let  output = test_project
917-         . insta_cmd ( ) 
918-         . args ( [ "test" ,  "--accept" ] ) 
919-         . output ( ) 
920-         . unwrap ( ) ; 
921- 
922-     assert ! ( output. status. success( ) ) ; 
923- 
924-     // Now add the config file after snapshot is created 
925-     test_project. update_file ( 
926-         "insta.yaml" , 
927-         r#" 
928- test: 
929-   unreferenced: reject 
930- "# 
931-         . to_string ( ) , 
932-     ) ; 
933- 
934-     // Manually add an unreferenced snapshot 
935-     let  unreferenced_snapshot_path = test_project
936-         . workspace_dir 
937-         . join ( "src/snapshots/test_unreferenced_config_reject__unused_snapshot.snap" ) ; 
938-     std:: fs:: create_dir_all ( unreferenced_snapshot_path. parent ( ) . unwrap ( ) ) . unwrap ( ) ; 
939-     std:: fs:: write ( 
940-         & unreferenced_snapshot_path, 
941-         r#"--- 
942- source: src/lib.rs 
943- expression: "Unused snapshot" 
944- --- 
945- Unused snapshot 
946- "# , 
947-     ) 
948-     . unwrap ( ) ; 
949- 
950-     // Verify files exist 
951-     let  snapshot_path = test_project
952-         . workspace_dir 
953-         . join ( "src/snapshots/test_unreferenced_config_reject__snapshot.snap" ) ; 
954-     let  unreferenced_path = test_project
955-         . workspace_dir 
956-         . join ( "src/snapshots/test_unreferenced_config_reject__unused_snapshot.snap" ) ; 
957- 
958-     assert ! ( snapshot_path. exists( ) ,  "Normal snapshot file should exist" ) ; 
959-     assert ! ( 
960-         unreferenced_path. exists( ) , 
961-         "Unreferenced snapshot file should exist" 
962-     ) ; 
963- 
964-     // First verify explicitly passing --unreferenced=reject does fail correctly 
965-     let  output = test_project
966-         . insta_cmd ( ) 
967-         . args ( [ "test" ,  "--unreferenced=reject" ,  "--" ,  "--nocapture" ] ) 
968-         . stderr ( Stdio :: piped ( ) ) 
969-         . output ( ) 
970-         . unwrap ( ) ; 
971- 
972-     // The test should fail with explicit flag 
973-     assert ! ( 
974-         !output. status. success( ) , 
975-         "Command should fail with explicit --unreferenced=reject flag" 
976-     ) ; 
977- 
978-     let  stderr = String :: from_utf8_lossy ( & output. stderr ) ; 
979-     assert ! ( 
980-         stderr. contains( "encountered unreferenced snapshots" ) , 
981-         "Expected error message about unreferenced snapshots, got: {}" , 
982-         stderr
983-     ) ; 
984- 
985-     // Now run without flags - this should also fail due to the config file setting 
986-     let  output = test_project
987-         . insta_cmd ( ) 
988-         . args ( [ "test" ,  "--" ,  "--nocapture" ] ) 
989-         . stderr ( Stdio :: piped ( ) ) 
990-         . output ( ) 
991-         . unwrap ( ) ; 
992- 
993-     // The command should fail because of the config file setting 
994-     assert ! ( 
995-         !output. status. success( ) , 
996-         "Command should fail when config file has test.unreferenced: reject" 
997-     ) ; 
998- 
999-     // Verify the error message mentions unreferenced snapshots 
1000-     let  stderr = String :: from_utf8_lossy ( & output. stderr ) ; 
1001-     assert ! ( 
1002-         stderr. contains( "encountered unreferenced snapshots" ) , 
1003-         "Expected error message about unreferenced snapshots, got: {}" , 
1004-         stderr
1005-     ) ; 
1006- 
1007-     // Run with --unreferenced=delete to clean up 
1008-     let  output = test_project
1009-         . insta_cmd ( ) 
1010-         . args ( [ "test" ,  "--unreferenced=delete" ,  "--" ,  "--nocapture" ] ) 
1011-         . output ( ) 
1012-         . unwrap ( ) ; 
1013- 
1014-     assert ! ( output. status. success( ) ) ; 
1015- 
1016-     // Verify the unreferenced snapshot was deleted 
1017-     assert ! ( 
1018-         snapshot_path. exists( ) , 
1019-         "Normal snapshot file should still exist" 
1020-     ) ; 
1021-     assert ! ( 
1022-         !unreferenced_path. exists( ) , 
1023-         "Unreferenced snapshot file should have been deleted" 
1024-     ) ; 
1025- } 
0 commit comments