@@ -25,25 +25,59 @@ mod remove_section {
25
25
}
26
26
27
27
#[ test]
28
- fn removal_is_complete_and_sections_can_be_readded ( ) {
28
+ fn removal_is_complete_and_sections_can_be_read ( ) {
29
29
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 ( ) ;
30
30
assert_eq ! ( file. sections( ) . count( ) , 2 ) ;
31
31
32
32
let removed = file. remove_section ( "core" , None ) . expect ( "removed correct section" ) ;
33
33
assert_eq ! ( removed. header( ) . name( ) , "core" ) ;
34
34
assert_eq ! ( removed. header( ) . subsection_name( ) , None ) ;
35
35
assert_eq ! ( file. sections( ) . count( ) , 1 ) ;
36
+ assert_eq ! ( file. remove_section( "core" , None ) , None , "it's OK to try again" ) ;
36
37
37
38
let removed = file. remove_section ( "core" , Some ( "name" . into ( ) ) ) . expect ( "found" ) ;
38
39
assert_eq ! ( removed. header( ) . name( ) , "core" ) ;
39
40
assert_eq ! ( removed. header( ) . subsection_name( ) . expect( "present" ) , "name" ) ;
40
41
assert_eq ! ( file. sections( ) . count( ) , 0 ) ;
42
+ assert_eq ! ( file. remove_section( "core" , Some ( "name" . into( ) ) ) , None ) ;
41
43
42
44
file. section_mut_or_create_new ( "core" , None ) . expect ( "creation succeeds" ) ;
43
45
file. section_mut_or_create_new ( "core" , Some ( "name" . into ( ) ) )
44
46
. expect ( "creation succeeds" ) ;
45
47
}
46
48
}
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
+
47
81
mod rename_section {
48
82
use std:: borrow:: Cow ;
49
83
0 commit comments