Skip to content

Commit 39a5591

Browse files
claudehenrikje
authored andcommitted
test: update integration tests for merged-branch reset behavior
Update existing tests that expected fully-merged repos to be skipped. They now expect the reset-to-base behavior instead. https://claude.ai/code/session_01JwYwdYdscozHuZVPdrM9pq
1 parent 18b5d72 commit 39a5591

File tree

4 files changed

+20
-14
lines changed

4 files changed

+20
-14
lines changed

src/lib/render/integrate-cells.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@ export function integrateActionCell(desc: IntegrateActionDesc): Cell {
2525
const merged = desc.skipCount ?? 0;
2626
if (n === 0) {
2727
const text =
28-
merged > 0
29-
? `reset to ${desc.baseRef} (all ${merged} commits merged)`
30-
: `reset to ${desc.baseRef} (merged)`;
28+
merged > 0 ? `reset to ${desc.baseRef} (all ${merged} commits merged)` : `reset to ${desc.baseRef} (merged)`;
3129
result = cell(text);
3230
} else {
3331
const commitWord = n === 1 ? "commit" : "commits";

src/lib/sync/classify-integrate.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -201,9 +201,7 @@ export async function assessIntegrateRepo(
201201
};
202202
}
203203
const needsStash =
204-
flags.isDirty && options.autostash && (status.local.staged > 0 || status.local.modified > 0)
205-
? true
206-
: undefined;
204+
flags.isDirty && options.autostash && (status.local.staged > 0 || status.local.modified > 0) ? true : undefined;
207205

208206
if (options.mode === "rebase") {
209207
return {

test/integration/integrate.test.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@ describe("--verbose", () => {
572572
// ── diverged commit matching in plan ─────────────────────────────
573573

574574
describe("diverged commit matching in plan", () => {
575-
test("arb rebase --verbose --dry-run skips cherry-picked commit (detected as squash-merged)", () =>
575+
test("arb rebase --verbose --dry-run plans reset for cherry-picked commit (detected as squash-merged)", () =>
576576
withEnv(async (env) => {
577577
await arb(env, ["create", "my-feature", "repo-a"]);
578578
await write(join(env.projectDir, "my-feature/repo-a/feature.txt"), "feature");
@@ -594,10 +594,11 @@ describe("diverged commit matching in plan", () => {
594594
cwd: join(env.projectDir, "my-feature"),
595595
});
596596
expect(result.exitCode).toBe(0);
597-
expect(result.output).toContain("already squash-merged into main");
597+
expect(result.output).toContain("reset to origin/main");
598+
expect(result.output).toContain("merged");
598599
}));
599600

600-
test("arb rebase skips repo that was squash-merged onto base", () =>
601+
test("arb rebase plans reset for repo that was squash-merged onto base", () =>
601602
withEnv(async (env) => {
602603
await arb(env, ["create", "my-feature", "repo-a"]);
603604
await write(join(env.projectDir, "my-feature/repo-a/first.txt"), "first");
@@ -619,10 +620,11 @@ describe("diverged commit matching in plan", () => {
619620
cwd: join(env.projectDir, "my-feature"),
620621
});
621622
expect(result.exitCode).toBe(0);
622-
expect(result.output).toContain("already squash-merged into main");
623+
expect(result.output).toContain("reset to origin/main");
624+
expect(result.output).toContain("commits merged");
623625
}));
624626

625-
test("arb rebase skips squash-merged repo and rebases others", () =>
627+
test("arb rebase resets squash-merged repo and rebases others", () =>
626628
withEnv(async (env) => {
627629
await arb(env, ["create", "my-feature", "repo-a", "repo-b"]);
628630

@@ -650,12 +652,16 @@ describe("diverged commit matching in plan", () => {
650652
cwd: join(env.projectDir, "my-feature"),
651653
});
652654
expect(result.exitCode).toBe(0);
653-
expect(result.output).toContain("already squash-merged into main");
655+
expect(result.output).toContain("reset to origin/main (merged)");
654656
expect(result.output).toContain("rebased my-feature onto origin/main");
655657

656658
// Verify repo-b actually has the upstream commit after rebase
657659
const logB = await git(join(env.projectDir, "my-feature/repo-b"), ["log", "--oneline"]);
658660
expect(logB).toContain("upstream change");
661+
662+
// Verify repo-a was reset to origin/main (squash commit is in history)
663+
const logA = await git(join(env.projectDir, "my-feature/repo-a"), ["log", "--oneline"]);
664+
expect(logA).toContain("squash: feature");
659665
}));
660666

661667
test("arb rebase --verbose --dry-run shows no match annotations for genuinely different commits", () =>

test/integration/sync.test.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1611,7 +1611,7 @@ describe("--where filtering", () => {
16111611
expect(result.output).not.toContain("already merged");
16121612
}));
16131613

1614-
test("rebase skips when all local commits are already squash-equivalent on base", () =>
1614+
test("rebase resets when all local commits are already squash-equivalent on base", () =>
16151615
withEnv(async (env) => {
16161616
await arb(env, ["create", "rebase-squash-equivalent-test", "repo-a"]);
16171617
const wt = join(env.projectDir, "rebase-squash-equivalent-test/repo-a");
@@ -1638,8 +1638,12 @@ describe("--where filtering", () => {
16381638
cwd: join(env.projectDir, "rebase-squash-equivalent-test"),
16391639
});
16401640
expect(rebaseResult.exitCode).toBe(0);
1641-
expect(rebaseResult.output).toContain("already squash-merged");
1641+
expect(rebaseResult.output).toContain("reset to origin/main (merged)");
16421642
expect(rebaseResult.output).not.toContain("conflict");
1643+
1644+
// Verify the branch was reset — squash-equivalent commit is in history
1645+
const log = await git(wt, ["log", "--oneline"]);
1646+
expect(log).toContain("squash-equivalent on main");
16431647
}));
16441648
});
16451649

0 commit comments

Comments
 (0)