Open app editor for interactive rebase todo

This commit is contained in:
Joe Tretter
2026-05-18 19:01:12 -05:00
parent d4e2c8714c
commit ce58f46b48
6 changed files with 148 additions and 5 deletions

View File

@@ -382,6 +382,35 @@ class GitSandboxEngineTest {
}
}
@Test
fun nativeInteractiveRebaseUsesAppSequenceEditorContent() {
val git = testGitBinary()
assumeTrue(git.exists() && git.canExecute())
val root = Files.createTempDirectory("githug-interactive-rebase-editor").toFile()
try {
val runtime = GitRepositoryRuntime(root, git)
val level = reorderLevel()
val repo = runtime.prepareLevel(level)
val invocation = parseGitEditorInvocation("git rebase -i HEAD~3")
?: error("Expected interactive rebase editor invocation")
val todo = runtime.gitEditorInitialContent(level, repo, invocation)
val reorderedTodo = todo.lines().toMutableList().also { lines ->
val secondPick = lines.indexOfFirst { it.contains("Third commit") }
val thirdPick = lines.indexOfFirst { it.contains("Second commit") }
val thirdLine = lines[thirdPick]
lines[thirdPick] = lines[secondPick]
lines[secondPick] = thirdLine
}.joinToString("\n")
val (updatedRepo, output) = runtime.executeGitEditorCommand(level, repo, invocation, reorderedTodo)
assertFalse(output.any { it.contains("Terminal is dumb", ignoreCase = true) })
assertTrue(level.validator(updatedRepo, invocation.command))
} finally {
root.deleteRecursively()
}
}
private fun testGitBinary(): File {
System.getenv("GITHUG_TEST_GIT_BINARY")
?.takeIf { it.isNotBlank() }