Skip to content

Commit fd21e83

Browse files
committed
Test
1 parent 9ff3cf5 commit fd21e83

11 files changed

Lines changed: 618 additions & 66 deletions

File tree

crates/but-rebase/tests/rebase/graph_rebase/conflictable_restriction.rs

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use but_rebase::{
66
commit::DateMode,
77
graph_rebase::{Editor, LookupStep, Step, mutate::InsertSide},
88
};
9-
use but_testsupport::{cat_commit, visualize_commit_graph_all};
9+
use but_testsupport::{cat_commit, graph_tree, visualize_commit_graph_all};
1010

1111
use crate::utils::{fixture_writable, standard_options};
1212

@@ -32,7 +32,17 @@ fn by_default_conflicts_are_allowed() -> Result<()> {
3232
editor.replace(b_sel, Step::None)?;
3333

3434
let outcome = editor.rebase()?;
35-
outcome.materialize()?;
35+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
36+
insta::assert_snapshot!(overlayed, @"
37+
38+
└── 👉►:0[0]:main[🌳]
39+
├── ·3411540 (⌂|1) ►c
40+
└── ·5e0ba46 (⌂|1) ►a, ►b
41+
└── ►:1[1]:base
42+
└── ·6155f21 (⌂|1)
43+
");
44+
let outcome = outcome.materialize()?;
45+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
3646

3747
// We expect to see conflicted headers
3848
insta::assert_snapshot!(cat_commit(&repo, "c")?, @"
@@ -126,7 +136,21 @@ fn if_a_commit_has_been_configured_not_to_conflict_and_doesnt_end_up_conflicted_
126136
editor.replace(c_sel, Step::Pick(c_pick))?;
127137

128138
let outcome = editor.rebase()?;
129-
outcome.materialize()?;
139+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
140+
insta::assert_snapshot!(overlayed, @"
141+
142+
└── 👉►:0[0]:main[🌳]
143+
└── ·00c31ec (⌂|1) ►c
144+
└── ►:1[1]:b
145+
├── ·7762cf9 (⌂|1)
146+
└── ·3b3bd41 (⌂|1)
147+
└── ►:2[2]:a
148+
└── ·5e0ba46 (⌂|1)
149+
└── ►:3[3]:base
150+
└── ·6155f21 (⌂|1)
151+
");
152+
let outcome = outcome.materialize()?;
153+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
130154

131155
// The rebase is successful because `c` remained unconflicted
132156
insta::assert_snapshot!(visualize_commit_graph_all(&repo)?, @"

crates/but-rebase/tests/rebase/graph_rebase/disconnect.rs

Lines changed: 162 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use std::collections::HashSet;
44
use anyhow::{Context, Result};
55
use but_graph::Graph;
66
use but_rebase::graph_rebase::{Editor, Step, mutate};
7-
use but_testsupport::{git_status, visualize_commit_graph_all};
7+
use but_testsupport::{git_status, graph_tree, visualize_commit_graph_all};
88
use gix::prelude::ObjectIdExt;
99

1010
use crate::utils::{fixture_writable, standard_options};
@@ -44,7 +44,16 @@ fn disconnect_and_remove_middle_commit_in_linear_history() -> Result<()> {
4444
editor.replace(b_selector, Step::None)?;
4545

4646
let outcome = editor.rebase()?;
47-
outcome.materialize()?;
47+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
48+
insta::assert_snapshot!(overlayed, @"
49+
50+
└── 👉►:0[0]:main[🌳]
51+
├── ·4de0144 (⌂|1)
52+
├── ·d591dfe (⌂|1)
53+
└── ·35b8235 (⌂|1)
54+
");
55+
let outcome = outcome.materialize()?;
56+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
4857

4958
insta::assert_snapshot!(visualize_commit_graph_all(&repo)?, @r"
5059
* 4de0144 (HEAD -> main) c
@@ -96,7 +105,15 @@ fn disconnect_and_remove_two_middle_commits_in_linear_history() -> Result<()> {
96105
editor.replace(a_selector, Step::None)?;
97106

98107
let outcome = editor.rebase()?;
99-
outcome.materialize()?;
108+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
109+
insta::assert_snapshot!(overlayed, @"
110+
111+
└── 👉►:0[0]:main[🌳]
112+
├── ·f55e07c (⌂|1)
113+
└── ·35b8235 (⌂|1)
114+
");
115+
let outcome = outcome.materialize()?;
116+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
100117

101118
insta::assert_snapshot!(visualize_commit_graph_all(&repo)?, @"
102119
* f55e07c (HEAD -> main) c
@@ -145,7 +162,21 @@ fn disconnect_and_remove_commit_in_merge_history_rewires_children() -> Result<()
145162
editor.replace(a_selector, Step::None)?;
146163

147164
let outcome = editor.rebase()?;
148-
outcome.materialize()?;
165+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
166+
insta::assert_snapshot!(overlayed, @"
167+
168+
└── 👉►:0[0]:with-inner-merge[🌳]
169+
└── ·dde6cc8 (⌂|1)
170+
└── ►:1[1]:anon:
171+
└── ·5f962e2 (⌂|1)
172+
├── ►:2[3]:anon:
173+
│ └── ·8f0d338 (⌂|1) ►A, ►main, ►tags/base
174+
└── ►:3[2]:B
175+
└── ·984fd1c (⌂|1)
176+
└── →:2:
177+
");
178+
let outcome = outcome.materialize()?;
179+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
149180

150181
let a_now = repo.rev_parse_single("A")?.detach();
151182
let base = repo.rev_parse_single("base")?.detach();
@@ -206,7 +237,27 @@ fn disconnect_and_remove_merge_with_two_parents_and_two_children() -> Result<()>
206237
editor.replace(merge_selector, Step::None)?;
207238

208239
let outcome = editor.rebase()?;
209-
outcome.materialize()?;
240+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
241+
insta::assert_snapshot!(overlayed, @"
242+
243+
└── 👉►:0[0]:with-two-children[🌳]
244+
└── ·f914957 (⌂|1)
245+
├── ►:1[1]:C1
246+
│ └── ·d8cc9ec (⌂|1)
247+
│ ├── ►:3[2]:anon:
248+
│ │ └── ·bc0e772 (⌂|1) ►M, ►P1
249+
│ │ └── ►:5[3]:main
250+
│ │ └── ·7674a5e (⌂|1) ►tags/base
251+
│ └── ►:4[2]:P2
252+
│ └── ·392a8f8 (⌂|1)
253+
│ └── →:5: (main)
254+
└── ►:2[1]:C2
255+
└── ·72b8072 (⌂|1)
256+
├── →:3:
257+
└── →:4: (P2)
258+
");
259+
let outcome = outcome.materialize()?;
260+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
210261

211262
let p1 = repo.rev_parse_single("P1")?.detach();
212263
let p2 = repo.rev_parse_single("P2")?.detach();
@@ -311,7 +362,27 @@ fn disconnect_and_remove_merge_with_two_parents_and_two_children_from_one_side()
311362
)?;
312363

313364
let outcome = editor.rebase()?;
314-
outcome.materialize()?;
365+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
366+
insta::assert_snapshot!(overlayed, @"
367+
368+
└── 👉►:0[0]:with-two-children[🌳]
369+
└── ·3305e26 (⌂|1)
370+
├── ►:1[1]:C1
371+
│ └── ·f928700 (⌂|1)
372+
│ └── ►:3[2]:P1
373+
│ └── ·bc0e772 (⌂|1)
374+
│ └── ►:5[4]:main
375+
│ └── ·7674a5e (⌂|1) ►tags/base
376+
└── ►:2[1]:C2
377+
└── ·0e87cd3 (⌂|1)
378+
└── ►:4[2]:M
379+
└── ·3089592 (⌂|1)
380+
└── ►:6[3]:P2
381+
└── ·392a8f8 (⌂|1)
382+
└── →:5: (main)
383+
");
384+
let outcome = outcome.materialize()?;
385+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
315386

316387
let p1 = repo.rev_parse_single("P1")?.detach();
317388
let m = repo.rev_parse_single("M")?.detach();
@@ -408,7 +479,25 @@ fn disconnect_remove_merge_with_two_parents_and_two_children_children_only() ->
408479
)?;
409480

410481
let outcome = editor.rebase()?;
411-
outcome.materialize()?;
482+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
483+
insta::assert_snapshot!(overlayed, @"
484+
485+
└── 👉►:0[0]:with-two-children[🌳]
486+
└── ·2eac185 (⌂|1)
487+
├── ►:1[1]:C1
488+
│ └── ·76e6d3c (⌂|1)
489+
│ └── ►:3[2]:M
490+
│ └── ·3089592 (⌂|1)
491+
│ └── ►:4[3]:P2
492+
│ └── ·392a8f8 (⌂|1)
493+
│ └── ►:5[4]:main
494+
│ └── ·7674a5e (⌂|1) ►tags/base
495+
└── ►:2[1]:C2
496+
└── ·0e87cd3 (⌂|1)
497+
└── →:3: (M)
498+
");
499+
let outcome = outcome.materialize()?;
500+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
412501

413502
let p1 = repo.rev_parse_single("P1")?.detach();
414503
let p2 = repo.rev_parse_single("P2")?.detach();
@@ -525,7 +614,28 @@ fn disconnect_fails_when_parents_to_disconnect_is_none() -> Result<()> {
525614
);
526615

527616
let outcome = editor.rebase()?;
528-
outcome.materialize()?;
617+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
618+
insta::assert_snapshot!(overlayed, @"
619+
620+
└── 👉►:0[0]:with-two-children[🌳]
621+
└── ·d1cc4c7 (⌂|1)
622+
├── ►:1[1]:C1
623+
│ └── ·f94f259 (⌂|1)
624+
│ └── ►:3[2]:M
625+
│ └── ·c5d1178 (⌂|1)
626+
│ ├── ►:4[3]:P1
627+
│ │ └── ·bc0e772 (⌂|1)
628+
│ │ └── ►:6[4]:main
629+
│ │ └── ·7674a5e (⌂|1) ►tags/base
630+
│ └── ►:5[3]:P2
631+
│ └── ·392a8f8 (⌂|1)
632+
│ └── →:6: (main)
633+
└── ►:2[1]:C2
634+
└── ·ce6aca9 (⌂|1)
635+
└── →:3: (M)
636+
");
637+
let outcome = outcome.materialize()?;
638+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
529639

530640
let after = visualize_commit_graph_all(&repo)?;
531641
assert_eq!(before, after, "graph should remain unchanged on failure");
@@ -576,7 +686,28 @@ fn disconnect_fails_fast_if_parent_to_disconnect_is_not_direct_parent() -> Resul
576686
);
577687

578688
let outcome = editor.rebase()?;
579-
outcome.materialize()?;
689+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
690+
insta::assert_snapshot!(overlayed, @"
691+
692+
└── 👉►:0[0]:with-two-children[🌳]
693+
└── ·d1cc4c7 (⌂|1)
694+
├── ►:1[1]:C1
695+
│ └── ·f94f259 (⌂|1)
696+
│ └── ►:3[2]:M
697+
│ └── ·c5d1178 (⌂|1)
698+
│ ├── ►:4[3]:P1
699+
│ │ └── ·bc0e772 (⌂|1)
700+
│ │ └── ►:6[4]:main
701+
│ │ └── ·7674a5e (⌂|1) ►tags/base
702+
│ └── ►:5[3]:P2
703+
│ └── ·392a8f8 (⌂|1)
704+
│ └── →:6: (main)
705+
└── ►:2[1]:C2
706+
└── ·ce6aca9 (⌂|1)
707+
└── →:3: (M)
708+
");
709+
let outcome = outcome.materialize()?;
710+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
580711

581712
let after = visualize_commit_graph_all(&repo)?;
582713
assert_eq!(before, after, "graph should remain unchanged on failure");
@@ -627,7 +758,28 @@ fn disconnect_fails_fast_if_child_to_disconnect_is_not_direct_child() -> Result<
627758
);
628759

629760
let outcome = editor.rebase()?;
630-
outcome.materialize()?;
761+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
762+
insta::assert_snapshot!(overlayed, @"
763+
764+
└── 👉►:0[0]:with-two-children[🌳]
765+
└── ·d1cc4c7 (⌂|1)
766+
├── ►:1[1]:C1
767+
│ └── ·f94f259 (⌂|1)
768+
│ └── ►:3[2]:M
769+
│ └── ·c5d1178 (⌂|1)
770+
│ ├── ►:4[3]:P1
771+
│ │ └── ·bc0e772 (⌂|1)
772+
│ │ └── ►:6[4]:main
773+
│ │ └── ·7674a5e (⌂|1) ►tags/base
774+
│ └── ►:5[3]:P2
775+
│ └── ·392a8f8 (⌂|1)
776+
│ └── →:6: (main)
777+
└── ►:2[1]:C2
778+
└── ·ce6aca9 (⌂|1)
779+
└── →:3: (M)
780+
");
781+
let outcome = outcome.materialize()?;
782+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
631783

632784
let after = visualize_commit_graph_all(&repo)?;
633785
assert_eq!(before, after, "graph should remain unchanged on failure");

crates/but-rebase/tests/rebase/graph_rebase/insert.rs

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
use anyhow::{Context, Result};
33
use but_graph::Graph;
44
use but_rebase::graph_rebase::{Editor, Step, mutate::InsertSide};
5-
use but_testsupport::{git_status, visualize_commit_graph_all};
5+
use but_testsupport::{git_status, graph_tree, visualize_commit_graph_all};
66

77
use crate::utils::{fixture_writable, standard_options};
88

@@ -43,7 +43,24 @@ fn insert_below_merge_commit() -> Result<()> {
4343
editor.insert(selector, Step::new_pick(new_commit), InsertSide::Below)?;
4444

4545
let outcome = editor.rebase()?;
46+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
47+
insta::assert_snapshot!(overlayed, @"
48+
49+
└── 👉►:0[0]:with-inner-merge[🌳]
50+
├── ·ceb4158 (⌂|1)
51+
└── ·ea55b6e (⌂|1)
52+
└── ►:1[1]:anon:
53+
└── ·ec48031 (⌂|1)
54+
├── ►:2[2]:A
55+
│ └── ·add59d2 (⌂|1)
56+
│ └── ►:4[3]:main
57+
│ └── ·8f0d338 (⌂|1) ►tags/base
58+
└── ►:3[2]:B
59+
└── ·984fd1c (⌂|1)
60+
└── →:4: (main)
61+
");
4662
let outcome = outcome.materialize()?;
63+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
4764

4865
insta::assert_snapshot!(visualize_commit_graph_all(&repo)?, @r"
4966
* ceb4158 (HEAD -> with-inner-merge) on top of inner merge
@@ -108,7 +125,24 @@ fn insert_below_merge_commit_excluded_mappings() -> Result<()> {
108125
)?;
109126

110127
let outcome = editor.rebase()?;
128+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
129+
insta::assert_snapshot!(overlayed, @"
130+
131+
└── 👉►:0[0]:with-inner-merge[🌳]
132+
├── ·ceb4158 (⌂|1)
133+
└── ·ea55b6e (⌂|1)
134+
└── ►:1[1]:anon:
135+
└── ·ec48031 (⌂|1)
136+
├── ►:2[2]:A
137+
│ └── ·add59d2 (⌂|1)
138+
│ └── ►:4[3]:main
139+
│ └── ·8f0d338 (⌂|1) ►tags/base
140+
└── ►:3[2]:B
141+
└── ·984fd1c (⌂|1)
142+
└── →:4: (main)
143+
");
111144
let outcome = outcome.materialize()?;
145+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
112146

113147
insta::assert_snapshot!(visualize_commit_graph_all(&repo)?, @r"
114148
* ceb4158 (HEAD -> with-inner-merge) on top of inner merge
@@ -168,7 +202,24 @@ fn insert_above_commit_with_two_children() -> Result<()> {
168202
editor.insert(selector, Step::new_pick(new_commit), InsertSide::Above)?;
169203

170204
let outcome = editor.rebase()?;
205+
let overlayed = graph_tree(&outcome.overlayed_graph()?).to_string();
206+
insta::assert_snapshot!(overlayed, @"
207+
208+
└── 👉►:0[0]:with-inner-merge[🌳]
209+
└── ·9d2b9d9 (⌂|1)
210+
└── ►:1[1]:anon:
211+
└── ·8502201 (⌂|1)
212+
├── ►:2[2]:A
213+
│ └── ·0379d6c (⌂|1)
214+
│ └── ►:4[3]:main
215+
│ ├── ·055ead5 (⌂|1) ►tags/base
216+
│ └── ·8f0d338 (⌂|1)
217+
└── ►:3[2]:B
218+
└── ·97c7cc6 (⌂|1)
219+
└── →:4: (main)
220+
");
171221
let outcome = outcome.materialize()?;
222+
assert_eq!(overlayed, graph_tree(&outcome.workspace.graph).to_string());
172223

173224
insta::assert_snapshot!(visualize_commit_graph_all(&repo)?, @r"
174225
* 9d2b9d9 (HEAD -> with-inner-merge) on top of inner merge

0 commit comments

Comments
 (0)