aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/diffmergetool/ExternalToolTestCase.java
diff options
context:
space:
mode:
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.java128
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);
+ }
+ }
+}