Skip to content

Commit 26dab29

Browse files
kiranbayramfthomas
authored andcommitted
Reproduce the issue in test
1 parent fb03b08 commit 26dab29

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

modules/core/src/test/scala/org/scalasteward/core/git/GitAlgTest.scala

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,23 @@ class GitAlgTest extends AnyFunSuite with Matchers {
124124
} yield (c1, m1, c2, m2)
125125
p.unsafeRunSync() shouldBe ((true, false, false, true))
126126
}
127+
128+
test("mergeTheirs2") {
129+
val repo = Repo("merge", "theirs2")
130+
val p = for {
131+
repoDir <- workspaceAlg.repoDir(repo)
132+
_ <- GitAlgTest.createGitRepoWithConflictFileRemovedOnMaster[IO](repoDir)
133+
master = Branch("master")
134+
branch = Branch("conflicts-yes")
135+
c1 <- ioGitAlg.hasConflicts(repo, branch, master)
136+
m1 <- ioGitAlg.isMerged(repo, master, branch)
137+
_ <- ioGitAlg.checkoutBranch(repo, branch)
138+
_ <- ioGitAlg.mergeTheirs(repo, master)
139+
c2 <- ioGitAlg.hasConflicts(repo, branch, master)
140+
m2 <- ioGitAlg.isMerged(repo, master, branch)
141+
} yield (c1, m1, c2, m2)
142+
p.unsafeRunSync() shouldBe ((true, false, false, true))
143+
}
127144
}
128145

129146
object GitAlgTest {
@@ -154,9 +171,43 @@ object GitAlgTest {
154171
_ <- processAlg.exec(Nel.of("git", "add", "file2"), repoDir)
155172
_ <- processAlg.exec(Nel.of("git", "commit", "-m", "Modify file2 on conflicts-yes"), repoDir)
156173
_ <- processAlg.exec(Nel.of("git", "checkout", "master"), repoDir)
174+
// work on conflicts-yes (file removed on base branch)
175+
_ <- processAlg.exec(Nel.of("git", "checkout", "-b", "conflicts-yes-file-removed"), repoDir)
176+
_ <- fileAlg.writeFile(repoDir / "file2", "file2, line1\nfile2, line2 on conflicts-yes")
177+
_ <- processAlg.exec(Nel.of("git", "add", "file2"), repoDir)
178+
_ <- processAlg.exec(Nel.of("git", "commit", "-m", "Modify file2 on conflicts-yes"), repoDir)
179+
_ <- processAlg.exec(Nel.of("git", "checkout", "master"), repoDir)
157180
// work on master
158181
_ <- fileAlg.writeFile(repoDir / "file2", "file2, line1\nfile2, line2 on master")
159182
_ <- processAlg.exec(Nel.of("git", "add", "file2"), repoDir)
160183
_ <- processAlg.exec(Nel.of("git", "commit", "-m", "Modify file2 on master"), repoDir)
161184
} yield ()
185+
186+
def createGitRepoWithConflictFileRemovedOnMaster[F[_]](repoDir: File)(
187+
implicit
188+
fileAlg: FileAlg[F],
189+
processAlg: ProcessAlg[F],
190+
F: Monad[F]
191+
): F[Unit] =
192+
for {
193+
_ <- fileAlg.deleteForce(repoDir)
194+
_ <- fileAlg.ensureExists(repoDir)
195+
_ <- processAlg.exec(Nel.of("git", "init", "."), repoDir)
196+
// work on master
197+
_ <- fileAlg.writeFile(repoDir / "file1", "file1, line1")
198+
_ <- fileAlg.writeFile(repoDir / "file2", "file2, line1")
199+
_ <- processAlg.exec(Nel.of("git", "add", "file1"), repoDir)
200+
_ <- processAlg.exec(Nel.of("git", "add", "file2"), repoDir)
201+
_ <- processAlg.exec(Nel.of("git", "commit", "-m", "Initial commit"), repoDir)
202+
// work on conflicts-yes
203+
_ <- processAlg.exec(Nel.of("git", "checkout", "-b", "conflicts-yes"), repoDir)
204+
_ <- fileAlg.writeFile(repoDir / "file2", "file2, line1\nfile2, line2 on conflicts-yes")
205+
_ <- processAlg.exec(Nel.of("git", "add", "file2"), repoDir)
206+
_ <- processAlg.exec(Nel.of("git", "commit", "-m", "Modify file2 on conflicts-yes"), repoDir)
207+
_ <- processAlg.exec(Nel.of("git", "checkout", "master"), repoDir)
208+
// work on master
209+
_ <- processAlg.exec(Nel.of("git", "rm", "file2"), repoDir)
210+
_ <- processAlg.exec(Nel.of("git", "add", "-A"), repoDir)
211+
_ <- processAlg.exec(Nel.of("git", "commit", "-m", "Remove file2 on master"), repoDir)
212+
} yield ()
162213
}

0 commit comments

Comments
 (0)