diff --git a/pom.xml b/pom.xml
index 32c81f4..c9bf321 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,6 @@
1.8
1.8
-
2.15
1.1.6.Final
@@ -90,18 +89,6 @@
argparse4j
${version.net.sourceforge.argparse4j}
-
- org.testng
- testng
- ${version.testng}
- test
-
-
- org.mockito
- mockito-core
- ${version.mockito}
- test
-
org.jboss.logging
jboss-logging
@@ -119,6 +106,12 @@
jboss-logmanager
${version.org.jboss.logmanager}
+
+ junit
+ junit
+ 4.12
+ test
+
@@ -174,6 +167,7 @@
wildfly-build-config
${org.wildfly.wildfly.build.config.version}
+
@@ -187,7 +181,7 @@
-
+
jboss-public-repository-group
@@ -204,4 +198,4 @@
-
+
\ No newline at end of file
diff --git a/src/test/java/CryoAccess.java b/src/test/java/CryoAccess.java
new file mode 100644
index 0000000..862b253
--- /dev/null
+++ b/src/test/java/CryoAccess.java
@@ -0,0 +1,188 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright (c) 2020, Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import org.jboss.set.aphrodite.Aphrodite;
+import org.jboss.set.aphrodite.config.AphroditeConfig;
+import org.jboss.set.aphrodite.config.IssueTrackerConfig;
+import org.jboss.set.aphrodite.config.RepositoryConfig;
+import org.jboss.set.aphrodite.config.StreamConfig;
+import org.jboss.set.aphrodite.config.StreamType;
+import org.jboss.set.aphrodite.repository.services.common.RepositoryType;
+import org.jboss.set.aphrodite.repository.services.github.GithubPullRequestHomeService;
+import org.jboss.set.aphrodite.spi.AphroditeException;
+import org.jboss.set.cryo.Cryo;
+import org.jboss.set.cryo.process.BisectablePullRequest;
+import org.jboss.set.cryo.process.ExecuteProcess;
+
+public class CryoAccess extends Cryo {
+ private static final String testDirLocation = System.getProperty("user.dir") + "/cryo-tests/";
+ protected static final String[] COMMAND_GIT_CHECKOUT_MASTER = new String[] { "git", "checkout", "master" };
+ protected static final String[] COMMAND_GIT_DELETE_FUTURE = new String[] { "git", "branch", "-D", "masterfuture" };
+ protected static final String[] COMMAND_GIT_LOG = new String[] { "git", "log" };
+ protected static Aphrodite aphro;
+
+ CryoAccess() {
+ super(new File(testDirLocation), true, false, false, new HashSet(),
+ CryoAccess.createIncludeList(new String[] { "1" }), "future", "", new String[] {});
+ }
+
+ CryoAccess(String[] includeList) {
+ super(new File(testDirLocation), true, false, false, new HashSet(),
+ CryoAccess.createIncludeList(includeList), "future", "", new String[] {});
+ }
+
+ private static List createIncludeList(String[] includeList) {
+ List include;
+ include = new ArrayList<>();
+ for (String pr : includeList)
+ include.add(pr);
+ return include;
+ }
+
+ public boolean createOperationCenter() {
+ return super.createOperationCenter();
+ }
+
+ public boolean determineRepositoryURL() {
+ return super.determineRepositoryURL();
+ }
+
+ public boolean determineCurrentBranch() {
+ return super.determineCurrentBranch();
+ }
+
+ public boolean fetchPRList(String repoUrl) throws MalformedURLException {
+ determineCurrentBranch();
+ super.repositoryURL = new URL(repoUrl);
+ return super.fetchPRList();
+ }
+
+ public URL getRepositoryURL() {
+ return super.repositoryURL;
+ }
+
+ public void initializeAphrodite() throws MalformedURLException {
+
+ RepositoryConfig githubService = new RepositoryConfig("https://github.com/", "fazer1929",
+ "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",
+ RepositoryType.GITHUB);
+ List repositoryConfigs = new ArrayList<>();
+ repositoryConfigs.add(githubService);
+
+ List issueTrackerConfigs = new ArrayList<>();
+
+ StreamConfig streamService = new StreamConfig(
+ new URL("https://raw.githubusercontent.com/jboss-set/jboss-streams/master/streams.json"), StreamType.JSON);
+ List streamConfigs = new ArrayList<>();
+ streamConfigs.add(streamService);
+
+ try {
+ AphroditeConfig aphroditeConfig = new AphroditeConfig(issueTrackerConfigs, repositoryConfigs, streamConfigs);
+ this.aphrodite = Aphrodite.instance(aphroditeConfig);
+ GithubPullRequestHomeService GithubPullRequestHomeService = new GithubPullRequestHomeService(aphrodite);
+ super.aphrodite = this.aphrodite;
+ } catch (AphroditeException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void setUpCryo(String repoURL) throws MalformedURLException {
+ ProcessBuilder processBuilder = new ProcessBuilder(
+ new String[] { "git", "clone", repoURL });
+ ExecuteProcess executeProcess = new ExecuteProcess(processBuilder);
+ executeProcess.getProcessResult();
+
+ this.createOperationCenter();
+ if (CryoAccess.aphro == null) {
+ this.initializeAphrodite();
+ CryoAccess.aphro = super.aphrodite;
+ } else {
+ this.aphrodite = CryoAccess.aphro;
+ super.aphrodite = CryoAccess.aphro;
+ }
+ }
+
+ private void cleanupFutureBranch() {
+ ProcessBuilder processBuilder = new ProcessBuilder(
+ COMMAND_GIT_CHECKOUT_MASTER);
+ processBuilder.directory(new File(testDirLocation));
+ ExecuteProcess executeProcess = new ExecuteProcess(processBuilder);
+ executeProcess.getProcessResult();
+ processBuilder = new ProcessBuilder(
+ COMMAND_GIT_DELETE_FUTURE);
+ processBuilder.directory(new File(testDirLocation));
+ executeProcess = new ExecuteProcess(processBuilder);
+ executeProcess.getProcessResult();
+ }
+
+ public boolean setUpFutureBranch() {
+ if (super.setUpFutureBranch()) {
+ cleanupFutureBranch();
+ return true;
+ }
+ return false;
+ }
+
+ private boolean checkShaExists() {
+ // Getting latest commit ids of every eligible PR
+ List shas = new ArrayList<>();
+ for (BisectablePullRequest bpr : coldStorage) {
+ shas.add(bpr.getPullRequest().getCommits().get(0).getSha());
+ }
+ boolean includesAll = true;
+
+ // Getting the logs of directory cryo created
+
+ ProcessBuilder processBuilder = new ProcessBuilder(
+ COMMAND_GIT_LOG);
+ processBuilder.directory(new File(testDirLocation));
+ ExecuteProcess executeProcess = new ExecuteProcess(processBuilder);
+ String logs = executeProcess.getProcessResult().getOutput();
+
+ // Checking id all the commits exist
+ for (String sha : shas) {
+ includesAll = logs.contains(sha);
+ if (!includesAll)
+ break;
+ }
+ return includesAll;
+ }
+
+ public boolean mergePRs() {
+ try {
+ cleanupFutureBranch();
+ super.createStorage();
+ if (checkShaExists())
+ return true;
+ return false;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/TestCryo.java b/src/test/java/TestCryo.java
new file mode 100644
index 0000000..0337eb7
--- /dev/null
+++ b/src/test/java/TestCryo.java
@@ -0,0 +1,101 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright (c) 2020, Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+import static junit.framework.TestCase.assertEquals;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.jboss.set.cryo.process.ExecuteProcess;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class TestCryo {
+ private static CryoAccess cryo;
+ private static String repoURL;
+ protected static final String[] COMMAND_REMOVE_TEST_DIR = new String[]{"rm", "-rf", "cryo-tests"};
+
+ public TestCryo() throws MalformedURLException {
+ repoURL = "https://github.com/jboss-set/cryo-tests";
+ cryo = new CryoAccess();
+ System.setProperty("aphrodite.config", "/home/abagrawa/Desktop/aphrodite.properties.json");
+ cryo.setUpCryo(repoURL);
+
+ }
+
+ @BeforeClass
+ public static void setup() throws MalformedURLException {
+ System.out.println("Lol");
+ }
+
+ @Test
+ public void test1DetermineRepositoryURL() throws MalformedURLException {
+ assertEquals(cryo.determineRepositoryURL(), true);
+ assertEquals(cryo.getRepositoryURL(), new URL(repoURL));
+ }
+
+ @Test
+ public void test2DetermineCurrentBranch() {
+ assertEquals(cryo.determineCurrentBranch(), true);
+ }
+
+ @Test
+ public void test3FetchPRList() throws MalformedURLException {
+ assertEquals(cryo.fetchPRList(repoURL), true);
+ }
+
+ @Test
+ public void test4SetupFutureBranch() throws Exception {
+ cryo.fetchPRList(repoURL);
+ assertEquals(cryo.setUpFutureBranch(), true);
+ }
+
+ @Test
+ public void test5MergeSinglePR() throws MalformedURLException {
+ assertEquals(cryo.mergePRs(), true);
+ }
+
+ @Test
+ public void test6MergemultiplePRs() throws MalformedURLException {
+ cryo = new CryoAccess(new String[]{"2", "3"});
+ cryo.setUpCryo(repoURL);
+ assertEquals(cryo.mergePRs(), true);
+ }
+
+ @Test
+ public void test7MergePRWithDependency() throws MalformedURLException {
+ cryo = new CryoAccess(new String[]{"10", "11", "12"});
+ cryo.setUpCryo(repoURL);
+ assertEquals(cryo.mergePRs(), true);
+ }
+
+ @AfterClass
+ public static void removeDir() {
+ ProcessBuilder processBuilder = new ProcessBuilder(COMMAND_REMOVE_TEST_DIR);
+ ExecuteProcess executeProcess = new ExecuteProcess(processBuilder);
+ executeProcess.getProcessResult();
+ }
+}
\ No newline at end of file