Skip to content

Commit 7eed237

Browse files
author
Sidney Douw
committed
setup and refactor tests
1 parent f1d7c1c commit 7eed237

File tree

4 files changed

+224
-213
lines changed

4 files changed

+224
-213
lines changed

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

+2-212
Original file line numberDiff line numberDiff line change
@@ -1,212 +1,2 @@
1-
mod init {
2-
use std::path::{Path, PathBuf};
3-
4-
use bstr::ByteSlice;
5-
use git_index::{entry, Version};
6-
use git_testtools::hex_to_id;
7-
8-
fn verify(index: git_index::File) -> git_index::File {
9-
index.verify_integrity().unwrap();
10-
index.verify_entries().unwrap();
11-
index
12-
.verify_extensions(false, git_index::verify::extensions::no_find)
13-
.unwrap();
14-
index
15-
}
16-
17-
fn loose_file(name: &str) -> git_index::File {
18-
let path = git_testtools::fixture_path(Path::new("loose_index").join(name).with_extension("git-index"));
19-
let file = git_index::File::at(path, git_index::decode::Options::default()).unwrap();
20-
verify(file)
21-
}
22-
fn file(name: &str) -> git_index::File {
23-
let file = git_index::File::at(crate::fixture_path(name), git_index::decode::Options::default()).unwrap();
24-
verify(file)
25-
}
26-
fn file_opt(name: &str, opts: git_index::decode::Options) -> git_index::File {
27-
let file = git_index::File::at(crate::fixture_path(name), opts).unwrap();
28-
verify(file)
29-
}
30-
31-
#[test]
32-
fn read_v2_with_single_entry_tree_and_eoie_ext() {
33-
let file_disallow_threaded_loading = file_opt(
34-
"v2",
35-
git_index::decode::Options {
36-
min_extension_block_in_bytes_for_threading: 100000,
37-
..Default::default()
38-
},
39-
);
40-
for file in [file("v2"), file_disallow_threaded_loading] {
41-
assert_eq!(file.version(), Version::V2);
42-
43-
assert_eq!(file.entries().len(), 1);
44-
45-
let entry = &file.entries()[0];
46-
assert_eq!(entry.id, hex_to_id("e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"));
47-
assert!(entry.flags.is_empty());
48-
assert_eq!(entry.mode, entry::Mode::FILE);
49-
assert_eq!(entry.path(&file.state), "a");
50-
51-
let tree = file.tree().unwrap();
52-
assert_eq!(tree.num_entries, 1);
53-
assert_eq!(tree.id, hex_to_id("496d6428b9cf92981dc9495211e6e1120fb6f2ba"));
54-
assert!(tree.name.is_empty());
55-
assert!(tree.children.is_empty());
56-
}
57-
}
58-
#[test]
59-
fn read_v2_empty() {
60-
let file = file("V2_empty");
61-
assert_eq!(file.version(), Version::V2);
62-
assert_eq!(file.entries().len(), 0);
63-
let tree = file.tree().unwrap();
64-
assert_eq!(tree.num_entries, 0);
65-
assert!(tree.name.is_empty());
66-
assert!(tree.children.is_empty());
67-
assert_eq!(tree.id, hex_to_id("4b825dc642cb6eb9a060e54bf8d69288fbee4904"));
68-
}
69-
70-
#[test]
71-
fn read_v2_with_multiple_entries_without_eoie_ext() {
72-
let file = file("v2_more_files");
73-
assert_eq!(file.version(), Version::V2);
74-
75-
assert_eq!(file.entries().len(), 6);
76-
for (idx, path) in ["a", "b", "c", "d/a", "d/b", "d/c"].iter().enumerate() {
77-
let e = &file.entries()[idx];
78-
assert_eq!(e.path(&file), path);
79-
assert!(e.flags.is_empty());
80-
assert_eq!(e.mode, entry::Mode::FILE);
81-
assert_eq!(e.id, hex_to_id("e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"))
82-
}
83-
84-
let tree = file.tree().unwrap();
85-
assert_eq!(tree.id, hex_to_id("c9b29c3168d8e677450cc650238b23d9390801fb"));
86-
assert_eq!(tree.num_entries, 6);
87-
assert!(tree.name.is_empty());
88-
assert_eq!(tree.children.len(), 1);
89-
90-
let tree = &tree.children[0];
91-
assert_eq!(tree.id, hex_to_id("765b32c65d38f04c4f287abda055818ec0f26912"));
92-
assert_eq!(tree.num_entries, 3);
93-
assert_eq!(tree.name.as_bstr(), "d");
94-
}
95-
96-
fn find_shared_index_for(index: impl AsRef<Path>) -> PathBuf {
97-
let mut matches = std::fs::read_dir(index.as_ref().parent().unwrap())
98-
.unwrap()
99-
.map(Result::unwrap)
100-
.filter(|e: &std::fs::DirEntry| e.file_name().into_string().unwrap().starts_with("sharedindex."));
101-
let res = matches.next().unwrap();
102-
assert!(matches.next().is_none(), "found more than one shared indices");
103-
res.path()
104-
}
105-
106-
#[test]
107-
fn read_split_index_without_any_extension() {
108-
let file = git_index::File::at(
109-
find_shared_index_for(crate::fixture_path("v2_split_index")),
110-
git_index::decode::Options::default(),
111-
)
112-
.unwrap();
113-
assert_eq!(file.version(), Version::V2);
114-
}
115-
116-
#[test]
117-
fn read_v2_split_index() {
118-
let file = file("v2_split_index");
119-
assert_eq!(file.version(), Version::V2);
120-
121-
assert!(file.link().is_some());
122-
}
123-
124-
#[test]
125-
fn read_v3_extended_flags() {
126-
let file = loose_file("extended-flags");
127-
assert_eq!(file.version(), Version::V3);
128-
}
129-
130-
#[test]
131-
fn read_v2_very_long_path() {
132-
let file = loose_file("very-long-path");
133-
assert_eq!(file.version(), Version::V2);
134-
135-
assert_eq!(file.state.entries().len(), 9);
136-
assert_eq!(
137-
file.state.entries()[0].path(&file.state),
138-
std::iter::repeat('a')
139-
.take(4096)
140-
.chain(std::iter::once('q'))
141-
.collect::<String>()
142-
);
143-
}
144-
145-
#[test]
146-
fn read_reuc_extension() {
147-
let file = loose_file("REUC");
148-
assert_eq!(file.version(), Version::V2);
149-
150-
assert!(file.resolve_undo().is_some());
151-
}
152-
153-
#[test]
154-
fn read_untr_extension() {
155-
let file = loose_file("UNTR");
156-
assert_eq!(file.version(), Version::V2);
157-
158-
assert!(file.untracked().is_some());
159-
}
160-
161-
#[test]
162-
fn read_untr_extension_with_oids() {
163-
let file = loose_file("UNTR-with-oids");
164-
assert_eq!(file.version(), Version::V2);
165-
166-
assert!(file.untracked().is_some());
167-
}
168-
169-
#[test]
170-
fn read_fsmn_v1() {
171-
let file = loose_file("FSMN");
172-
assert_eq!(file.version(), Version::V2);
173-
174-
assert!(file.fs_monitor().is_some());
175-
}
176-
177-
#[test]
178-
fn read_file_with_conflicts() {
179-
let file = loose_file("conflicting-file");
180-
assert_eq!(file.version(), Version::V2);
181-
assert_eq!(file.entries().len(), 3);
182-
}
183-
184-
#[test]
185-
fn read_v4_with_delta_paths_and_ieot_ext() {
186-
let file = file("v4_more_files_IEOT");
187-
assert_eq!(file.version(), Version::V4);
188-
189-
assert_eq!(file.entries().len(), 10);
190-
for (idx, path) in [
191-
"a",
192-
"b",
193-
"c",
194-
"d/a",
195-
"d/b",
196-
"d/c",
197-
"d/last/123",
198-
"d/last/34",
199-
"d/last/6",
200-
"x",
201-
]
202-
.iter()
203-
.enumerate()
204-
{
205-
let e = &file.entries()[idx];
206-
assert_eq!(e.path(&file), path);
207-
assert!(e.flags.is_empty());
208-
assert_eq!(e.mode, entry::Mode::FILE);
209-
assert_eq!(e.id, hex_to_id("e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"))
210-
}
211-
}
212-
}
1+
mod read;
2+
mod write;

0 commit comments

Comments
 (0)