diff options
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/diffmergetool/ExternalToolTestCase.java')
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/diffmergetool/ExternalToolTestCase.java | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/diffmergetool/ExternalToolTestCase.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/diffmergetool/ExternalToolTestCase.java new file mode 100644 index 0000000000..7a6ff46578 --- /dev/null +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/diffmergetool/ExternalToolTestCase.java @@ -0,0 +1,128 @@ +/* + * Copyright (C) 2020-2021, Simeon Andreev <simeon.danailov.andreev@gmail.com> and others. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Distribution License v. 1.0 which is available at + * https://www.eclipse.org/org/documents/edl-v10.php. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +package org.eclipse.jgit.internal.diffmergetool; + +import java.io.File; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.jgit.junit.RepositoryTestCase; +import org.eclipse.jgit.util.FS; +import org.eclipse.jgit.util.FS_POSIX; +import org.junit.After; +import org.junit.Assume; +import org.junit.Before; + +/** + * Base test case for external merge and diff tool tests. + */ +public abstract class ExternalToolTestCase extends RepositoryTestCase { + + protected static final String DEFAULT_CONTENT = "line1"; + + protected File localFile; + + protected File remoteFile; + + protected File mergedFile; + + protected File baseFile; + + protected File commandResult; + + protected FileElement local; + + protected FileElement remote; + + protected FileElement merged; + + protected FileElement base; + + @Before + @Override + public void setUp() throws Exception { + super.setUp(); + + localFile = writeTrashFile("localFile.txt", DEFAULT_CONTENT + "\n"); + localFile.deleteOnExit(); + remoteFile = writeTrashFile("remoteFile.txt", DEFAULT_CONTENT + "\n"); + remoteFile.deleteOnExit(); + mergedFile = writeTrashFile("mergedFile.txt", ""); + mergedFile.deleteOnExit(); + baseFile = writeTrashFile("baseFile.txt", ""); + baseFile.deleteOnExit(); + commandResult = writeTrashFile("commandResult.txt", ""); + commandResult.deleteOnExit(); + + local = new FileElement(localFile.getAbsolutePath(), + FileElement.Type.LOCAL); + remote = new FileElement(remoteFile.getAbsolutePath(), + FileElement.Type.REMOTE); + merged = new FileElement(mergedFile.getAbsolutePath(), + FileElement.Type.MERGED); + base = new FileElement(baseFile.getAbsolutePath(), + FileElement.Type.BASE); + } + + @After + @Override + public void tearDown() throws Exception { + Files.delete(localFile.toPath()); + Files.delete(remoteFile.toPath()); + Files.delete(mergedFile.toPath()); + Files.delete(baseFile.toPath()); + Files.delete(commandResult.toPath()); + + super.tearDown(); + } + + + protected static void assumePosixPlatform() { + Assume.assumeTrue( + "This test can run only in Linux tests", + FS.DETECTED instanceof FS_POSIX); + } + + protected static class PromptHandler implements PromptContinueHandler { + + private final boolean promptResult; + + final List<String> toolPrompts = new ArrayList<>(); + + private PromptHandler(boolean promptResult) { + this.promptResult = promptResult; + } + + static PromptHandler acceptPrompt() { + return new PromptHandler(true); + } + + static PromptHandler cancelPrompt() { + return new PromptHandler(false); + } + + @Override + public boolean prompt(String toolName) { + toolPrompts.add(toolName); + return promptResult; + } + } + + protected static class MissingToolHandler implements InformNoToolHandler { + + final List<String> missingTools = new ArrayList<>(); + + @Override + public void inform(List<String> toolNames) { + missingTools.addAll(toolNames); + } + } +} |