Skip to content

Commit 933ad9e

Browse files
committed
combine more tests into one to reduce duplication
1 parent 6d810a1 commit 933ad9e

File tree

1 file changed

+39
-80
lines changed

1 file changed

+39
-80
lines changed

git-index/tests/index/file/write.rs

Lines changed: 39 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ fn roundtrips() -> crate::Result {
1717
(Loose("extended-flags"), all_ext_but_eoie()),
1818
(Loose("conflicting-file"), all_ext_but_eoie()),
1919
(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()),
2222
(Generated("v2_more_files"), all_ext_but_eoie()),
2323
];
2424

@@ -47,100 +47,59 @@ fn roundtrips() -> crate::Result {
4747
}
4848

4949
#[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 {
7853
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+
}
8656
}
87-
}
8857

89-
#[test]
90-
fn v2_index_tree_extensions() {
91-
let input = [
58+
for fixture in [
9259
"V2_empty",
9360
"v2",
9461
"v2_more_files",
9562
"v2_split_index",
9663
"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();
10579

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();
10782

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+
}
11086
}
11187
}
11288

11389
#[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);
13594

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");
13798

138-
let (generated, _) = State::from_bytes(&out, FileTime::now(), decode::Options::default()).unwrap();
139-
compare_states(&generated, version, &expected, options, fixture);
140-
}
99+
Ok(())
141100
}
142101

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) {
144103
actual.verify_entries().expect("valid");
145104
actual.verify_extensions(false, no_find).expect("valid");
146105

@@ -189,11 +148,11 @@ fn compare_raw_bytes(generated: &[u8], expected: &[u8], fixture: &str) {
189148
}
190149

191150
fn all_ext_but_eoie() -> Options {
192-
write::Options {
151+
Options {
193152
extensions: write::Extensions::Given {
194153
end_of_index_entry: false,
195154
tree_cache: true,
196155
},
197-
..write::Options::default()
156+
..Options::default()
198157
}
199158
}

0 commit comments

Comments
 (0)