@@ -17,8 +17,8 @@ fn roundtrips() -> crate::Result {
17
17
( Loose ( "extended-flags" ) , all_ext_but_eoie ( ) ) ,
18
18
( Loose ( "conflicting-file" ) , all_ext_but_eoie ( ) ) ,
19
19
( Loose ( "very-long-path" ) , all_ext_but_eoie ( ) ) ,
20
- ( Generated ( "v2" ) , write :: Options :: default ( ) ) ,
21
- ( Generated ( "V2_empty" ) , write :: Options :: default ( ) ) ,
20
+ ( Generated ( "v2" ) , Options :: default ( ) ) ,
21
+ ( Generated ( "V2_empty" ) , Options :: default ( ) ) ,
22
22
( Generated ( "v2_more_files" ) , all_ext_but_eoie ( ) ) ,
23
23
] ;
24
24
@@ -47,100 +47,59 @@ fn roundtrips() -> crate::Result {
47
47
}
48
48
49
49
#[ test]
50
- fn extended_flags_automatically_upgrade_the_version_to_avoid_data_loss ( ) -> crate :: Result {
51
- let mut expected = git_index:: File :: at ( fixture_index_path ( "V2" ) , Default :: default ( ) ) ?;
52
- assert_eq ! ( expected. version( ) , Version :: V2 ) ;
53
- expected. entries_mut ( ) [ 0 ] . flags . insert ( entry:: Flags :: EXTENDED ) ;
54
-
55
- let mut buf = Vec :: new ( ) ;
56
- let actual_version = expected. write_to ( & mut buf, Default :: default ( ) ) ?;
57
- assert_eq ! ( actual_version, Version :: V3 , "extended flags need V3" ) ;
58
-
59
- Ok ( ( ) )
60
- }
61
-
62
- #[ test]
63
- fn v2_index_no_extensions ( ) {
64
- let input = [
65
- "V2_empty" ,
66
- "v2" ,
67
- "v2_more_files" ,
68
- "v2_split_index" ,
69
- "v4_more_files_IEOT" ,
70
- ] ;
71
-
72
- for fixture in input {
73
- let path = fixture_index_path ( fixture) ;
74
- let expected = git_index:: File :: at ( & path, decode:: Options :: default ( ) ) . unwrap ( ) ;
75
-
76
- let mut out = Vec :: < u8 > :: new ( ) ;
77
- let options = write:: Options {
50
+ fn state_comparisons_with_various_extension_configurations ( ) {
51
+ fn options_with ( extensions : write:: Extensions ) -> Options {
52
+ Options {
78
53
hash_kind : git_hash:: Kind :: Sha1 ,
79
- extensions : write:: Extensions :: None ,
80
- } ;
81
-
82
- let actual_version = expected. write_to ( & mut out, options) . unwrap ( ) ;
83
-
84
- let ( actual, _) = State :: from_bytes ( & out, FileTime :: now ( ) , decode:: Options :: default ( ) ) . unwrap ( ) ;
85
- compare_states ( & actual, actual_version, & expected, options, fixture) ;
54
+ extensions,
55
+ }
86
56
}
87
- }
88
57
89
- #[ test]
90
- fn v2_index_tree_extensions ( ) {
91
- let input = [
58
+ for fixture in [
92
59
"V2_empty" ,
93
60
"v2" ,
94
61
"v2_more_files" ,
95
62
"v2_split_index" ,
96
63
"v4_more_files_IEOT" ,
97
- ] ;
98
-
99
- for fixture in input {
100
- let path = fixture_index_path ( fixture) ;
101
- let expected = git_index:: File :: at ( & path, decode:: Options :: default ( ) ) . unwrap ( ) ;
102
-
103
- let mut out = Vec :: < u8 > :: new ( ) ;
104
- let options = all_ext_but_eoie ( ) ;
64
+ ] {
65
+ for options in [
66
+ options_with ( write:: Extensions :: None ) ,
67
+ options_with ( write:: Extensions :: All ) ,
68
+ options_with ( write:: Extensions :: Given {
69
+ tree_cache : true ,
70
+ end_of_index_entry : true ,
71
+ } ) ,
72
+ options_with ( write:: Extensions :: Given {
73
+ tree_cache : false ,
74
+ end_of_index_entry : true ,
75
+ } ) ,
76
+ ] {
77
+ let path = fixture_index_path ( fixture) ;
78
+ let expected = git_index:: File :: at ( & path, Default :: default ( ) ) . unwrap ( ) ;
105
79
106
- let actual_version = expected. write_to ( & mut out, options) . unwrap ( ) ;
80
+ let mut out = Vec :: < u8 > :: new ( ) ;
81
+ let actual_version = expected. write_to ( & mut out, options) . unwrap ( ) ;
107
82
108
- let ( actual, _) = State :: from_bytes ( & out, FileTime :: now ( ) , decode:: Options :: default ( ) ) . unwrap ( ) ;
109
- compare_states ( & actual, actual_version, & expected, options, fixture) ;
83
+ let ( actual, _) = State :: from_bytes ( & out, FileTime :: now ( ) , decode:: Options :: default ( ) ) . unwrap ( ) ;
84
+ compare_states ( & actual, actual_version, & expected, options, fixture) ;
85
+ }
110
86
}
111
87
}
112
88
113
89
#[ test]
114
- fn v2_index_eoie_extensions ( ) {
115
- let input = [
116
- "V2_empty" ,
117
- "v2" ,
118
- "v2_more_files" ,
119
- "v2_split_index" ,
120
- "v4_more_files_IEOT" ,
121
- ] ;
122
-
123
- for fixture in input {
124
- let path = fixture_index_path ( fixture) ;
125
- let expected = git_index:: File :: at ( & path, decode:: Options :: default ( ) ) . unwrap ( ) ;
126
-
127
- let mut out = Vec :: < u8 > :: new ( ) ;
128
- let options = write:: Options {
129
- hash_kind : git_hash:: Kind :: Sha1 ,
130
- extensions : write:: Extensions :: Given {
131
- tree_cache : false ,
132
- end_of_index_entry : true ,
133
- } ,
134
- } ;
90
+ fn extended_flags_automatically_upgrade_the_version_to_avoid_data_loss ( ) -> crate :: Result {
91
+ let mut expected = git_index:: File :: at ( fixture_index_path ( "V2" ) , Default :: default ( ) ) ?;
92
+ assert_eq ! ( expected. version( ) , Version :: V2 ) ;
93
+ expected. entries_mut ( ) [ 0 ] . flags . insert ( entry:: Flags :: EXTENDED ) ;
135
94
136
- let version = expected. write_to ( & mut out, options) . unwrap ( ) ;
95
+ let mut buf = Vec :: new ( ) ;
96
+ let actual_version = expected. write_to ( & mut buf, Default :: default ( ) ) ?;
97
+ assert_eq ! ( actual_version, Version :: V3 , "extended flags need V3" ) ;
137
98
138
- let ( generated, _) = State :: from_bytes ( & out, FileTime :: now ( ) , decode:: Options :: default ( ) ) . unwrap ( ) ;
139
- compare_states ( & generated, version, & expected, options, fixture) ;
140
- }
99
+ Ok ( ( ) )
141
100
}
142
101
143
- fn compare_states ( actual : & State , actual_version : Version , expected : & State , options : write :: Options , fixture : & str ) {
102
+ fn compare_states ( actual : & State , actual_version : Version , expected : & State , options : Options , fixture : & str ) {
144
103
actual. verify_entries ( ) . expect ( "valid" ) ;
145
104
actual. verify_extensions ( false , no_find) . expect ( "valid" ) ;
146
105
@@ -189,11 +148,11 @@ fn compare_raw_bytes(generated: &[u8], expected: &[u8], fixture: &str) {
189
148
}
190
149
191
150
fn all_ext_but_eoie ( ) -> Options {
192
- write :: Options {
151
+ Options {
193
152
extensions : write:: Extensions :: Given {
194
153
end_of_index_entry : false ,
195
154
tree_cache : true ,
196
155
} ,
197
- ..write :: Options :: default ( )
156
+ ..Options :: default ( )
198
157
}
199
158
}
0 commit comments