Skip to content

Commit 6aea824

Browse files
committed
Move tests for public APIs into the integration level.
That way one won't accidentally access private APIs, while staying consistent with a standard Rust crate layout. Personally, I really want to keep modules small and the `src/` tree free of any extras.
1 parent 8059428 commit 6aea824

File tree

6 files changed

+197
-203
lines changed

6 files changed

+197
-203
lines changed

crates/gitbutler-hunk-dependency/src/hunk.rs

Lines changed: 0 additions & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -72,154 +72,3 @@ impl HunkRange {
7272
self.start > (start + lines - 1)
7373
}
7474
}
75-
76-
#[cfg(test)]
77-
mod test {
78-
use super::*;
79-
80-
#[test]
81-
fn test_deleted_file_intersects_everything() {
82-
let range = HunkRange {
83-
change_type: gitbutler_diff::ChangeType::Deleted,
84-
stack_id: StackId::generate(),
85-
commit_id: git2::Oid::from_str("a").unwrap(),
86-
start: 0,
87-
lines: 0,
88-
line_shift: 0,
89-
};
90-
91-
assert!(range.intersects(1, 1));
92-
assert!(range.intersects(2, 2));
93-
assert!(range.intersects(1, 1));
94-
assert!(range.intersects(12, 10));
95-
assert!(range.intersects(4, 0));
96-
assert!(range.intersects(0, 0));
97-
}
98-
99-
#[test]
100-
fn test_hunk_at_the_beginning() {
101-
let range = HunkRange {
102-
change_type: gitbutler_diff::ChangeType::Modified,
103-
stack_id: StackId::generate(),
104-
commit_id: git2::Oid::from_str("a").unwrap(),
105-
start: 1,
106-
lines: 10,
107-
line_shift: 0,
108-
};
109-
110-
assert!(range.intersects(1, 1));
111-
assert!(range.intersects(1, 10));
112-
assert!(range.intersects(4, 2));
113-
assert!(range.intersects(10, 20));
114-
assert!(range.intersects(4, 0));
115-
// Adding lines at the beginning of the file.
116-
assert!(!range.intersects(0, 0));
117-
118-
assert!(!range.intersects(11, 20));
119-
assert!(!range.intersects(30, 1));
120-
}
121-
122-
#[test]
123-
fn test_hunk_in_the_middle() {
124-
let range = HunkRange {
125-
change_type: gitbutler_diff::ChangeType::Modified,
126-
stack_id: StackId::generate(),
127-
commit_id: git2::Oid::from_str("a").unwrap(),
128-
start: 10,
129-
lines: 10,
130-
line_shift: 0,
131-
};
132-
133-
assert!(range.intersects(1, 10));
134-
assert!(range.intersects(1, 20));
135-
assert!(range.intersects(1, 30));
136-
assert!(range.intersects(4, 10));
137-
assert!(range.intersects(19, 0));
138-
assert!(range.intersects(10, 0));
139-
assert!(range.intersects(10, 10));
140-
assert!(range.intersects(10, 20));
141-
assert!(range.intersects(11, 20));
142-
assert!(range.intersects(15, 1));
143-
144-
// Adding lines at the beginning of the file.
145-
assert!(!range.intersects(0, 0));
146-
147-
assert!(!range.intersects(20, 0));
148-
assert!(!range.intersects(1, 1));
149-
assert!(!range.intersects(1, 9));
150-
assert!(!range.intersects(20, 1));
151-
assert!(!range.intersects(30, 1));
152-
}
153-
154-
#[test]
155-
fn test_is_covered_by() {
156-
let range = HunkRange {
157-
change_type: gitbutler_diff::ChangeType::Modified,
158-
stack_id: StackId::generate(),
159-
commit_id: git2::Oid::from_str("a").unwrap(),
160-
start: 10,
161-
lines: 10,
162-
line_shift: 0,
163-
};
164-
165-
assert!(range.covered_by(1, 20));
166-
assert!(range.covered_by(1, 30));
167-
assert!(range.covered_by(4, 16));
168-
assert!(range.covered_by(10, 20));
169-
// Adding lines at the beginning of the file.
170-
assert!(!range.covered_by(0, 0));
171-
172-
assert!(!range.covered_by(10, 9));
173-
assert!(!range.covered_by(11, 20));
174-
assert!(!range.covered_by(15, 1));
175-
assert!(!range.covered_by(1, 1));
176-
assert!(!range.covered_by(1, 18));
177-
assert!(!range.covered_by(20, 1));
178-
assert!(!range.covered_by(30, 10));
179-
}
180-
181-
#[test]
182-
fn test_contains() {
183-
let range = HunkRange {
184-
change_type: gitbutler_diff::ChangeType::Modified,
185-
stack_id: StackId::generate(),
186-
commit_id: git2::Oid::from_str("a").unwrap(),
187-
start: 10,
188-
lines: 10,
189-
line_shift: 0,
190-
};
191-
192-
assert!(!range.contains(0, 0));
193-
assert!(!range.contains(1, 20));
194-
assert!(!range.contains(1, 30));
195-
assert!(!range.contains(4, 16));
196-
assert!(!range.contains(10, 20));
197-
assert!(!range.contains(10, 10));
198-
assert!(!range.contains(19, 0));
199-
assert!(range.contains(11, 8));
200-
assert!(range.contains(11, 9));
201-
assert!(range.contains(10, 0));
202-
assert!(range.contains(18, 0));
203-
}
204-
205-
#[test]
206-
fn test_follows() {
207-
let range = HunkRange {
208-
change_type: gitbutler_diff::ChangeType::Modified,
209-
stack_id: StackId::generate(),
210-
commit_id: git2::Oid::from_str("a").unwrap(),
211-
start: 10,
212-
lines: 10,
213-
line_shift: 0,
214-
};
215-
216-
assert!(range.follows(0, 0));
217-
assert!(range.follows(1, 9));
218-
assert!(range.follows(9, 1));
219-
assert!(!range.follows(10, 0));
220-
assert!(!range.follows(11, 0));
221-
assert!(!range.follows(10, 1));
222-
assert!(!range.follows(11, 1));
223-
assert!(!range.follows(20, 1));
224-
}
225-
}

crates/gitbutler-hunk-dependency/src/input.rs

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -90,53 +90,3 @@ fn parse_header(hunk_info: &str) -> (u32, u32) {
9090
};
9191
(start, lines)
9292
}
93-
94-
#[cfg(test)]
95-
mod tests {
96-
use super::*;
97-
98-
#[test]
99-
fn diff_simple() -> anyhow::Result<()> {
100-
let header = parse_diff_from_string(
101-
"@@ -1,6 +1,7 @@
102-
1
103-
2
104-
3
105-
+4
106-
5
107-
6
108-
7
109-
",
110-
gitbutler_diff::ChangeType::Modified,
111-
)?;
112-
assert_eq!(header.old_start, 4);
113-
assert_eq!(header.old_lines, 0);
114-
assert_eq!(header.new_start, 4);
115-
assert_eq!(header.new_lines, 1);
116-
assert_eq!(header.net_lines()?, 1);
117-
Ok(())
118-
}
119-
120-
#[test]
121-
fn diff_complex() -> anyhow::Result<()> {
122-
let header = parse_diff_from_string(
123-
"@@ -5,7 +5,6 @@
124-
5
125-
6
126-
7
127-
-8
128-
-9
129-
+a
130-
10
131-
11
132-
",
133-
gitbutler_diff::ChangeType::Modified,
134-
)?;
135-
assert_eq!(header.old_start, 8);
136-
assert_eq!(header.old_lines, 2);
137-
assert_eq!(header.new_start, 8);
138-
assert_eq!(header.new_lines, 1);
139-
assert_eq!(header.net_lines()?, -1);
140-
Ok(())
141-
}
142-
}

crates/gitbutler-hunk-dependency/src/path.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -787,7 +787,6 @@ fn insert_hunk_ranges(
787787
}
788788

789789
#[cfg(test)]
790-
791790
mod tests {
792791
use super::*;
793792

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
use gitbutler_hunk_dependency::HunkRange;
2+
use gitbutler_stack::StackId;
3+
4+
#[test]
5+
fn test_deleted_file_intersects_everything() {
6+
let range = HunkRange {
7+
change_type: gitbutler_diff::ChangeType::Deleted,
8+
stack_id: StackId::generate(),
9+
commit_id: git2::Oid::from_str("a").unwrap(),
10+
start: 0,
11+
lines: 0,
12+
line_shift: 0,
13+
};
14+
15+
assert!(range.intersects(1, 1));
16+
assert!(range.intersects(2, 2));
17+
assert!(range.intersects(1, 1));
18+
assert!(range.intersects(12, 10));
19+
assert!(range.intersects(4, 0));
20+
assert!(range.intersects(0, 0));
21+
}
22+
23+
#[test]
24+
fn test_hunk_at_the_beginning() {
25+
let range = HunkRange {
26+
change_type: gitbutler_diff::ChangeType::Modified,
27+
stack_id: StackId::generate(),
28+
commit_id: git2::Oid::from_str("a").unwrap(),
29+
start: 1,
30+
lines: 10,
31+
line_shift: 0,
32+
};
33+
34+
assert!(range.intersects(1, 1));
35+
assert!(range.intersects(1, 10));
36+
assert!(range.intersects(4, 2));
37+
assert!(range.intersects(10, 20));
38+
assert!(range.intersects(4, 0));
39+
// Adding lines at the beginning of the file.
40+
assert!(!range.intersects(0, 0));
41+
42+
assert!(!range.intersects(11, 20));
43+
assert!(!range.intersects(30, 1));
44+
}
45+
46+
#[test]
47+
fn test_hunk_in_the_middle() {
48+
let range = HunkRange {
49+
change_type: gitbutler_diff::ChangeType::Modified,
50+
stack_id: StackId::generate(),
51+
commit_id: git2::Oid::from_str("a").unwrap(),
52+
start: 10,
53+
lines: 10,
54+
line_shift: 0,
55+
};
56+
57+
assert!(range.intersects(1, 10));
58+
assert!(range.intersects(1, 20));
59+
assert!(range.intersects(1, 30));
60+
assert!(range.intersects(4, 10));
61+
assert!(range.intersects(19, 0));
62+
assert!(range.intersects(10, 0));
63+
assert!(range.intersects(10, 10));
64+
assert!(range.intersects(10, 20));
65+
assert!(range.intersects(11, 20));
66+
assert!(range.intersects(15, 1));
67+
68+
// Adding lines at the beginning of the file.
69+
assert!(!range.intersects(0, 0));
70+
71+
assert!(!range.intersects(20, 0));
72+
assert!(!range.intersects(1, 1));
73+
assert!(!range.intersects(1, 9));
74+
assert!(!range.intersects(20, 1));
75+
assert!(!range.intersects(30, 1));
76+
}
77+
78+
#[test]
79+
fn test_is_covered_by() {
80+
let range = HunkRange {
81+
change_type: gitbutler_diff::ChangeType::Modified,
82+
stack_id: StackId::generate(),
83+
commit_id: git2::Oid::from_str("a").unwrap(),
84+
start: 10,
85+
lines: 10,
86+
line_shift: 0,
87+
};
88+
89+
assert!(range.covered_by(1, 20));
90+
assert!(range.covered_by(1, 30));
91+
assert!(range.covered_by(4, 16));
92+
assert!(range.covered_by(10, 20));
93+
// Adding lines at the beginning of the file.
94+
assert!(!range.covered_by(0, 0));
95+
96+
assert!(!range.covered_by(10, 9));
97+
assert!(!range.covered_by(11, 20));
98+
assert!(!range.covered_by(15, 1));
99+
assert!(!range.covered_by(1, 1));
100+
assert!(!range.covered_by(1, 18));
101+
assert!(!range.covered_by(20, 1));
102+
assert!(!range.covered_by(30, 10));
103+
}
104+
105+
#[test]
106+
fn test_contains() {
107+
let range = HunkRange {
108+
change_type: gitbutler_diff::ChangeType::Modified,
109+
stack_id: StackId::generate(),
110+
commit_id: git2::Oid::from_str("a").unwrap(),
111+
start: 10,
112+
lines: 10,
113+
line_shift: 0,
114+
};
115+
116+
assert!(!range.contains(0, 0));
117+
assert!(!range.contains(1, 20));
118+
assert!(!range.contains(1, 30));
119+
assert!(!range.contains(4, 16));
120+
assert!(!range.contains(10, 20));
121+
assert!(!range.contains(10, 10));
122+
assert!(!range.contains(19, 0));
123+
assert!(range.contains(11, 8));
124+
assert!(range.contains(11, 9));
125+
assert!(range.contains(10, 0));
126+
assert!(range.contains(18, 0));
127+
}
128+
129+
#[test]
130+
fn test_follows() {
131+
let range = HunkRange {
132+
change_type: gitbutler_diff::ChangeType::Modified,
133+
stack_id: StackId::generate(),
134+
commit_id: git2::Oid::from_str("a").unwrap(),
135+
start: 10,
136+
lines: 10,
137+
line_shift: 0,
138+
};
139+
140+
assert!(range.follows(0, 0));
141+
assert!(range.follows(1, 9));
142+
assert!(range.follows(9, 1));
143+
assert!(!range.follows(10, 0));
144+
assert!(!range.follows(11, 0));
145+
assert!(!range.follows(10, 1));
146+
assert!(!range.follows(11, 1));
147+
assert!(!range.follows(20, 1));
148+
}

0 commit comments

Comments
 (0)