@@ -25,25 +25,59 @@ mod remove_section {
2525 }
2626
2727 #[ test]
28- fn removal_is_complete_and_sections_can_be_readded ( ) {
28+ fn removal_is_complete_and_sections_can_be_read ( ) {
2929 let mut file = gix_config:: File :: try_from ( "[core] \n a = b\n b=c\n \n [core \" name\" ]\n d = 1\n e = 2" ) . unwrap ( ) ;
3030 assert_eq ! ( file. sections( ) . count( ) , 2 ) ;
3131
3232 let removed = file. remove_section ( "core" , None ) . expect ( "removed correct section" ) ;
3333 assert_eq ! ( removed. header( ) . name( ) , "core" ) ;
3434 assert_eq ! ( removed. header( ) . subsection_name( ) , None ) ;
3535 assert_eq ! ( file. sections( ) . count( ) , 1 ) ;
36+ assert_eq ! ( file. remove_section( "core" , None ) , None , "it's OK to try again" ) ;
3637
3738 let removed = file. remove_section ( "core" , Some ( "name" . into ( ) ) ) . expect ( "found" ) ;
3839 assert_eq ! ( removed. header( ) . name( ) , "core" ) ;
3940 assert_eq ! ( removed. header( ) . subsection_name( ) . expect( "present" ) , "name" ) ;
4041 assert_eq ! ( file. sections( ) . count( ) , 0 ) ;
42+ assert_eq ! ( file. remove_section( "core" , Some ( "name" . into( ) ) ) , None ) ;
4143
4244 file. section_mut_or_create_new ( "core" , None ) . expect ( "creation succeeds" ) ;
4345 file. section_mut_or_create_new ( "core" , Some ( "name" . into ( ) ) )
4446 . expect ( "creation succeeds" ) ;
4547 }
4648}
49+ mod remove_section_filter {
50+ #[ test]
51+ fn removal_of_section_is_complete ( ) {
52+ let mut file = gix_config:: File :: try_from ( "[core] \n a = b\n b=c\n \n [core \" name\" ]\n d = 1\n e = 2" ) . unwrap ( ) ;
53+ assert_eq ! ( file. sections( ) . count( ) , 2 ) ;
54+
55+ let removed = file
56+ . remove_section_filter ( "core" , None , |_| true )
57+ . expect ( "removed correct section" ) ;
58+ assert_eq ! ( removed. header( ) . name( ) , "core" ) ;
59+ assert_eq ! ( removed. header( ) . subsection_name( ) , None ) ;
60+ assert_eq ! ( file. sections( ) . count( ) , 1 ) ;
61+ let removed = file
62+ . remove_section_filter ( "core" , Some ( "name" . into ( ) ) , |_| true )
63+ . expect ( "found" ) ;
64+ assert_eq ! ( removed. header( ) . name( ) , "core" ) ;
65+ assert_eq ! ( removed. header( ) . subsection_name( ) . expect( "present" ) , "name" ) ;
66+ assert_eq ! ( file. sections( ) . count( ) , 0 ) ;
67+
68+ assert_eq ! (
69+ file. remove_section_filter( "core" , None , |_| true ) ,
70+ None ,
71+ "it's OK to try again"
72+ ) ;
73+ assert_eq ! ( file. remove_section_filter( "core" , Some ( "name" . into( ) ) , |_| true ) , None ) ;
74+
75+ file. section_mut_or_create_new ( "core" , None ) . expect ( "creation succeeds" ) ;
76+ file. section_mut_or_create_new ( "core" , Some ( "name" . into ( ) ) )
77+ . expect ( "creation succeeds" ) ;
78+ }
79+ }
80+
4781mod rename_section {
4882 use std:: borrow:: Cow ;
4983
0 commit comments