This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit c458ee049b9ccfab45d299e9de5e142e229c4e5d Author: Claus Ibsen <[email protected]> AuthorDate: Thu Jan 9 07:41:28 2025 +0100 CAMEL-21601: camel-git - Fix flaky tests --- .../{ => git}/CustomConfigSystemReader.java | 2 +- .../component/{ => git}/RepositoryFactory.java | 3 +- .../git/consumer/AbstractGitConsumer.java | 2 +- .../component/git/consumer/GitCommitConsumer.java | 15 +- .../camel/component/git/producer/GitProducer.java | 2 +- .../apache/camel/component/git/GitTestSupport.java | 60 +++--- .../component/git/consumer/GitConsumerTest.java | 51 ++--- .../component/git/producer/GitProducerTest.java | 214 +++++++++++---------- .../git/producer/GitRemoteProducerTest.java | 15 +- 9 files changed, 193 insertions(+), 171 deletions(-) diff --git a/components/camel-git/src/main/java/org/apache/camel/component/CustomConfigSystemReader.java b/components/camel-git/src/main/java/org/apache/camel/component/git/CustomConfigSystemReader.java similarity index 98% rename from components/camel-git/src/main/java/org/apache/camel/component/CustomConfigSystemReader.java rename to components/camel-git/src/main/java/org/apache/camel/component/git/CustomConfigSystemReader.java index df3d882528f..4b7e7916a7f 100644 --- a/components/camel-git/src/main/java/org/apache/camel/component/CustomConfigSystemReader.java +++ b/components/camel-git/src/main/java/org/apache/camel/component/git/CustomConfigSystemReader.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.component; +package org.apache.camel.component.git; import java.io.File; diff --git a/components/camel-git/src/main/java/org/apache/camel/component/RepositoryFactory.java b/components/camel-git/src/main/java/org/apache/camel/component/git/RepositoryFactory.java similarity index 98% rename from components/camel-git/src/main/java/org/apache/camel/component/RepositoryFactory.java rename to components/camel-git/src/main/java/org/apache/camel/component/git/RepositoryFactory.java index 83c94adfb7f..467a65df46d 100644 --- a/components/camel-git/src/main/java/org/apache/camel/component/RepositoryFactory.java +++ b/components/camel-git/src/main/java/org/apache/camel/component/git/RepositoryFactory.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.component; +package org.apache.camel.component.git; import java.io.File; import java.io.FileOutputStream; @@ -28,7 +28,6 @@ import java.util.Arrays; import java.util.List; import org.apache.camel.RuntimeCamelException; -import org.apache.camel.component.git.GitEndpoint; import org.apache.camel.support.ResourceHelper; import org.apache.camel.util.IOHelper; import org.apache.camel.util.ObjectHelper; diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/AbstractGitConsumer.java b/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/AbstractGitConsumer.java index 932943cc334..abd08078cc7 100644 --- a/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/AbstractGitConsumer.java +++ b/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/AbstractGitConsumer.java @@ -21,8 +21,8 @@ import java.util.Queue; import org.apache.camel.Exchange; import org.apache.camel.ExchangePropertyKey; import org.apache.camel.Processor; -import org.apache.camel.component.RepositoryFactory; import org.apache.camel.component.git.GitEndpoint; +import org.apache.camel.component.git.RepositoryFactory; import org.apache.camel.support.ScheduledBatchPollingConsumer; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.lib.Repository; diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/GitCommitConsumer.java b/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/GitCommitConsumer.java index d1a4449408e..1b559b9d161 100644 --- a/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/GitCommitConsumer.java +++ b/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/GitCommitConsumer.java @@ -37,14 +37,23 @@ public class GitCommitConsumer extends AbstractGitConsumer { super(endpoint, processor); } + @Override + public GitEndpoint getEndpoint() { + return (GitEndpoint) super.getEndpoint(); + } + @Override protected int poll() throws Exception { Queue<Object> exchanges = new ArrayDeque<>(); + String branch = getEndpoint().getBranchName(); Iterable<RevCommit> commits; - if (ObjectHelper.isNotEmpty(((GitEndpoint) getEndpoint()).getBranchName())) { - commits = getGit().log().add(getGit().getRepository().resolve(((GitEndpoint) getEndpoint()).getBranchName())) - .call(); + ObjectId id = null; + if (ObjectHelper.isNotEmpty(branch)) { + id = getGit().getRepository().resolve(branch); + } + if (id != null) { + commits = getGit().log().add(id).call(); } else { commits = getGit().log().all().call(); } diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java index d6105ba8173..5079684f8ae 100644 --- a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java +++ b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java @@ -24,9 +24,9 @@ import java.util.Properties; import java.util.Set; import org.apache.camel.Exchange; -import org.apache.camel.component.RepositoryFactory; import org.apache.camel.component.git.GitConstants; import org.apache.camel.component.git.GitEndpoint; +import org.apache.camel.component.git.RepositoryFactory; import org.apache.camel.support.DefaultProducer; import org.apache.camel.util.ObjectHelper; import org.eclipse.jgit.api.CherryPickResult; diff --git a/components/camel-git/src/test/java/org/apache/camel/component/git/GitTestSupport.java b/components/camel-git/src/test/java/org/apache/camel/component/git/GitTestSupport.java index 28ea9bc8df7..0b47ca4c68d 100644 --- a/components/camel-git/src/test/java/org/apache/camel/component/git/GitTestSupport.java +++ b/components/camel-git/src/test/java/org/apache/camel/component/git/GitTestSupport.java @@ -17,24 +17,25 @@ package org.apache.camel.component.git; import java.io.File; -import java.io.IOException; +import java.util.UUID; import org.apache.camel.test.junit5.CamelTestSupport; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; -import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.storage.file.FileRepositoryBuilder; import org.eclipse.jgit.util.SystemReader; -import org.junit.jupiter.api.BeforeEach; import static org.apache.camel.test.junit5.TestSupport.deleteDirectory; import static org.junit.jupiter.api.Assertions.assertEquals; public class GitTestSupport extends CamelTestSupport { - public final String gitLocalRepo = "testRepo"; + private final File localRepo = new File("target/test-repo-" + UUID.randomUUID()); + private Repository repository; + + private final File cloneRepo = new File("target/clone-repo-" + UUID.randomUUID()); public final String filenameToAdd = "filetest.txt"; @@ -56,38 +57,39 @@ public class GitTestSupport extends CamelTestSupport { public final String remoteUriTest = "https://github.com/oscerd/json-webserver-example.git"; - @BeforeEach @Override - public void doPostSetup() throws Exception { - File localPath = File.createTempFile(gitLocalRepo, ""); - localPath.delete(); - File path = new File(gitLocalRepo); - path.deleteOnExit(); + public void doPostTearDown() { + deleteDirectory(localRepo); + deleteDirectory(cloneRepo); } - @Override - public void doPostTearDown() { - File path = new File(gitLocalRepo); - deleteDirectory(path); + public File getGitDir() { + return localRepo; } - protected Repository getTestRepository() - throws IOException, IllegalStateException, GitAPIException, ConfigInvalidException { - File gitRepo = new File(gitLocalRepo, ".git"); - SystemReader.getInstance().getUserConfig().clear(); //clears user config in JGit context, that way there are no environmental contamination that may affect the tests - Git.init().setDirectory(new File(gitLocalRepo, "")).setInitialBranch("master").setBare(false).call(); - // now open the resulting repository with a FileRepositoryBuilder - FileRepositoryBuilder builder = new FileRepositoryBuilder(); - Repository repo = builder.setGitDir(gitRepo).readEnvironment() // scan - // environment - // GIT_* - // variables - .findGitDir() // scan up the file system tree - .build(); - return repo; + public File getCloneDir() { + return cloneRepo; + } + + protected Repository getTestRepository() throws Exception { + if (repository == null) { + File gitRepo = new File(localRepo, ".git"); + SystemReader.getInstance().getUserConfig().clear(); //clears user config in JGit context, that way there are no environmental contamination that may affect the tests + Git.init().setDirectory(localRepo).setInitialBranch("master").setBare(false).call(); + // now open the resulting repository with a FileRepositoryBuilder + FileRepositoryBuilder builder = new FileRepositoryBuilder(); + Repository repo = builder.setGitDir(gitRepo).readEnvironment() // scan + // environment + // GIT_* + // variables + .findGitDir() // scan up the file system tree + .build(); + repository = repo; + } + return repository; } - protected Git getGitTestRepository() throws IOException, IllegalStateException, GitAPIException, ConfigInvalidException { + protected Git getGitTestRepository() throws Exception { return new Git(getTestRepository()); } diff --git a/components/camel-git/src/test/java/org/apache/camel/component/git/consumer/GitConsumerTest.java b/components/camel-git/src/test/java/org/apache/camel/component/git/consumer/GitConsumerTest.java index eb0aca37cbe..9d63615fa51 100644 --- a/components/camel-git/src/test/java/org/apache/camel/component/git/consumer/GitConsumerTest.java +++ b/components/camel-git/src/test/java/org/apache/camel/component/git/consumer/GitConsumerTest.java @@ -39,16 +39,17 @@ public class GitConsumerTest extends GitTestSupport { // Init MockEndpoint mockResultCommit = getMockEndpoint("mock:result-commit"); mockResultCommit.expectedMessageCount(2); + Git git = getGitTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); git.commit().setMessage(commitMessage).call(); - File fileToAdd1 = new File(gitLocalRepo, filenameBranchToAdd); + File fileToAdd1 = new File(getGitDir(), filenameBranchToAdd); fileToAdd1.createNewFile(); git.add().addFilepattern(filenameBranchToAdd).call(); status = git.status().call(); @@ -72,15 +73,15 @@ public class GitConsumerTest extends GitTestSupport { MockEndpoint mockResultCommit = getMockEndpoint("mock:result-commit-notexistent"); mockResultCommit.expectedMessageCount(0); Git git = getGitTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); git.commit().setMessage(commitMessage).call(); - File fileToAdd1 = new File(gitLocalRepo, filenameBranchToAdd); + File fileToAdd1 = new File(getGitDir(), filenameBranchToAdd); fileToAdd1.createNewFile(); git.add().addFilepattern(filenameBranchToAdd).call(); status = git.status().call(); @@ -98,10 +99,10 @@ public class GitConsumerTest extends GitTestSupport { MockEndpoint mockResultTag = getMockEndpoint("mock:result-tag"); mockResultTag.expectedMessageCount(1); Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -132,10 +133,10 @@ public class GitConsumerTest extends GitTestSupport { MockEndpoint mockResultBranch = getMockEndpoint("mock:result-branch"); mockResultBranch.expectedMessageCount(2); Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -176,28 +177,32 @@ public class GitConsumerTest extends GitTestSupport { } @Override - protected RouteBuilder createRouteBuilder() { + protected RouteBuilder createRouteBuilder() throws Exception { + // force create git repo before routes + getTestRepository(); + final String dir = getGitDir().getPath(); + return new RouteBuilder() { @Override public void configure() { - from("direct:clone").to("git://" + gitLocalRepo + from("direct:clone").to("git://" + dir + "?remotePath=https://github.com/oscerd/json-webserver-example.git&operation=clone"); - from("direct:init").to("git://" + gitLocalRepo + "?operation=init"); - from("direct:add").to("git://" + gitLocalRepo + "?operation=add"); - from("direct:commit").to("git://" + gitLocalRepo + "?operation=commit"); - from("direct:create-branch").to("git://" + gitLocalRepo + "?operation=createBranch&branchName=" + branchTest); - from("direct:create-tag").to("git://" + gitLocalRepo + "?operation=createTag&tagName=" + tagTest); - from("git://" + gitLocalRepo + "?type=commit&branchName=master").to("mock:result-commit"); - from("git://" + gitLocalRepo + "?type=commit&branchName=notexisting").to("mock:result-commit-notexistent"); - from("git://" + gitLocalRepo + "?type=tag").to("mock:result-tag"); - from("git://" + gitLocalRepo + "?type=branch&gitConfigFile=classpath:git.config") + from("direct:init").to("git://" + dir + "?operation=init"); + from("direct:add").to("git://" + dir + "?operation=add"); + from("direct:commit").to("git://" + dir + "?operation=commit"); + from("direct:create-branch").to("git://" + dir + "?operation=createBranch&branchName=" + branchTest); + from("direct:create-tag").to("git://" + dir + "?operation=createTag&tagName=" + tagTest); + from("git://" + dir + "?type=commit&branchName=master").to("mock:result-commit"); + from("git://" + dir + "?type=commit&branchName=notexisting").to("mock:result-commit-notexistent"); + from("git://" + dir + "?type=tag").to("mock:result-tag"); + from("git://" + dir + "?type=branch&gitConfigFile=classpath:git.config") .id("injectConfigFileFromClasspath") .to("mock:result-branch-configfile"); - from("git://" + gitLocalRepo + from("git://" + dir + "?type=branch&gitConfigFile=https://gist.githubusercontent.com/gilvansfilho/a61f6ab811a5e8e9d46c4fba1235abc1/raw/a1f614c90e29f1cdd83534aa913f5d276beace2c/gitconfig") .id("injectConfigFileFromHttp") .to("mock:result-branch-configfile"); - from("git://" + gitLocalRepo + "?type=branch").id("defaultBranchTest").to("mock:result-branch"); + from("git://" + dir + "?type=branch").id("defaultBranchTest").to("mock:result-branch"); } }; } diff --git a/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitProducerTest.java b/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitProducerTest.java index 2d15892b293..2cb1d2f7029 100644 --- a/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitProducerTest.java +++ b/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitProducerTest.java @@ -55,14 +55,14 @@ public class GitProducerTest extends GitTestSupport { @Test public void cloneTest() { template.sendBody("direct:clone", ""); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getCloneDir(), ".git"); assertEquals(true, gitDir.exists()); } @Test public void initTest() { template.sendBody("direct:init", ""); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); } @@ -70,9 +70,9 @@ public class GitProducerTest extends GitTestSupport { public void checkoutTest() throws Exception { // Init Git git = getGitTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); @@ -98,10 +98,10 @@ public class GitProducerTest extends GitTestSupport { public void checkoutSpecificTagTest() throws Exception { // Init Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -141,14 +141,14 @@ public class GitProducerTest extends GitTestSupport { assertThrows(CamelExecutionException.class, () -> template.sendBody("direct:clone", "")); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getCloneDir(), ".git"); assertEquals(true, gitDir.exists()); } @Test public void pullTest() { template.sendBody("direct:clone", ""); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getCloneDir(), ".git"); assertEquals(true, gitDir.exists()); PullResult pr = template.requestBody("direct:pull", "", PullResult.class); assertTrue(pr.isSuccessful()); @@ -157,13 +157,13 @@ public class GitProducerTest extends GitTestSupport { @Test public void addTest() throws Exception { Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); // Test camel-git add template.sendBodyAndHeader("direct:add", "", GitConstants.GIT_FILE_NAME, filenameToAdd); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -174,9 +174,9 @@ public class GitProducerTest extends GitTestSupport { public void removeTest() throws Exception { // Init Git git = getGitTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); @@ -186,7 +186,7 @@ public class GitProducerTest extends GitTestSupport { template.sendBodyAndHeader("direct:remove", "", GitConstants.GIT_FILE_NAME, filenameToAdd); // Check - gitDir = new File(gitLocalRepo, ".git"); + gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); git.commit().setMessage(commitMessage).call(); validateGitLogs(git, commitMessage); @@ -199,7 +199,7 @@ public class GitProducerTest extends GitTestSupport { public void commitTest() throws Exception { // Init Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); @@ -217,9 +217,9 @@ public class GitProducerTest extends GitTestSupport { public void commitTestEmpty() throws Exception { // Init Git git = getGitTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); @@ -238,9 +238,9 @@ public class GitProducerTest extends GitTestSupport { public void commitTestAllowEmptyFalse() throws Exception { // Init Git git = getGitTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); @@ -260,10 +260,10 @@ public class GitProducerTest extends GitTestSupport { public void addAndStatusAndCommitTest() throws Exception { // Initialize repository using JGit Repository repository = getTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Git git = new Git(repository); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); // Checking camel route Map<String, Object> headers = new HashMap<>(); @@ -278,9 +278,9 @@ public class GitProducerTest extends GitTestSupport { public void commitBranchTest() throws Exception { // Init Git git = getGitTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); @@ -303,7 +303,7 @@ public class GitProducerTest extends GitTestSupport { @Test public void commitAllTest() throws Exception { Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); @@ -321,9 +321,9 @@ public class GitProducerTest extends GitTestSupport { public void commitAllDifferentBranchTest() throws Exception { // Init Git git = getGitTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); @@ -331,7 +331,7 @@ public class GitProducerTest extends GitTestSupport { git.commit().setMessage(commitMessage).call(); validateGitLogs(git, commitMessage); git.checkout().setCreateBranch(true).setName(branchTest).setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM).call(); - File fileToAdd1 = new File(gitLocalRepo, filenameBranchToAdd); + File fileToAdd1 = new File(getGitDir(), filenameBranchToAdd); fileToAdd1.createNewFile(); // Test camel-git add and commit (different branches) @@ -358,9 +358,9 @@ public class GitProducerTest extends GitTestSupport { public void removeFileBranchTest() throws Exception { // Init Git git = getGitTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); @@ -368,7 +368,7 @@ public class GitProducerTest extends GitTestSupport { git.commit().setMessage(commitMessage).call(); validateGitLogs(git, commitMessage); git.checkout().setCreateBranch(true).setName(branchTest).setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM).call(); - File fileToAdd1 = new File(gitLocalRepo, filenameBranchToAdd); + File fileToAdd1 = new File(getGitDir(), filenameBranchToAdd); fileToAdd1.createNewFile(); git.add().addFilepattern(filenameBranchToAdd).call(); git.commit().setMessage(commitMessageAll).call(); @@ -393,9 +393,9 @@ public class GitProducerTest extends GitTestSupport { public void createBranchTest() throws Exception { // Init Git git = getGitTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); @@ -421,10 +421,10 @@ public class GitProducerTest extends GitTestSupport { public void deleteBranchTest() throws Exception { // Init Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -457,10 +457,10 @@ public class GitProducerTest extends GitTestSupport { public void statusTest() throws Exception { // Init Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); // Test camel-git status @@ -477,10 +477,10 @@ public class GitProducerTest extends GitTestSupport { public void statusBranchTest() throws Exception { // Init Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -494,7 +494,7 @@ public class GitProducerTest extends GitTestSupport { } } assertEquals(true, branchCreated); - File fileToAddDifferent = new File(gitLocalRepo, filenameBranchToAdd); + File fileToAddDifferent = new File(getGitDir(), filenameBranchToAdd); fileToAddDifferent.createNewFile(); git.add().addFilepattern(filenameBranchToAdd).call(); @@ -513,10 +513,10 @@ public class GitProducerTest extends GitTestSupport { public void logTest() throws Exception { // Init Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -539,10 +539,10 @@ public class GitProducerTest extends GitTestSupport { public void logBranchTest() throws Exception { // Init Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -556,7 +556,7 @@ public class GitProducerTest extends GitTestSupport { } } assertEquals(true, branchCreated); - File fileToAddDifferent = new File(gitLocalRepo, filenameBranchToAdd); + File fileToAddDifferent = new File(getGitDir(), filenameBranchToAdd); fileToAddDifferent.createNewFile(); git.add().addFilepattern(filenameBranchToAdd).call(); git.commit().setMessage(commitMessageAll).call(); @@ -578,10 +578,10 @@ public class GitProducerTest extends GitTestSupport { public void createTagTest() throws Exception { // Init Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -606,10 +606,10 @@ public class GitProducerTest extends GitTestSupport { public void deleteTagTest() throws Exception { // Init Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -643,10 +643,10 @@ public class GitProducerTest extends GitTestSupport { public void showBranchesTest() throws Exception { // Init Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -671,10 +671,10 @@ public class GitProducerTest extends GitTestSupport { public void cherryPickTest() throws Exception { // Init Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -689,7 +689,7 @@ public class GitProducerTest extends GitTestSupport { } assertTrue(branchExists); String fileToAdd1Name = "filetest1test.txt"; - File fileToAdd1 = new File(gitLocalRepo, fileToAdd1Name); + File fileToAdd1 = new File(getGitDir(), fileToAdd1Name); fileToAdd1.createNewFile(); git.add().addFilepattern(fileToAdd1Name).call(); status = git.status().call(); @@ -711,10 +711,10 @@ public class GitProducerTest extends GitTestSupport { public void cherryPickBranchToMasterTest() throws Exception { // Init Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -729,7 +729,7 @@ public class GitProducerTest extends GitTestSupport { } assertTrue(branchExists); String fileToAdd1Name = "filetest1test.txt"; - File fileToAdd1 = new File(gitLocalRepo, fileToAdd1Name); + File fileToAdd1 = new File(getGitDir(), fileToAdd1Name); fileToAdd1.createNewFile(); git.add().addFilepattern(fileToAdd1Name).call(); status = git.status().call(); @@ -751,7 +751,7 @@ public class GitProducerTest extends GitTestSupport { @Test public void remoteAddTest() throws Exception { Repository repository = getTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Git git = new Git(repository); List<RemoteConfig> remoteConfigList = git.remoteList().call(); @@ -769,7 +769,7 @@ public class GitProducerTest extends GitTestSupport { @Test public void remoteListTest() throws Exception { Repository repository = getTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Git git = new Git(repository); RemoteAddCommand remoteAddCommand = git.remoteAdd(); @@ -789,14 +789,14 @@ public class GitProducerTest extends GitTestSupport { @Test public void cleanTest() throws Exception { Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); // Test camel-git add Set<String> cleaned = template.requestBodyAndHeader("direct:clean", "", GitConstants.GIT_FILE_NAME, filenameToAdd, Set.class); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); assertTrue(cleaned.contains(filenameToAdd)); git.close(); @@ -805,9 +805,9 @@ public class GitProducerTest extends GitTestSupport { @Test public void gcTest() throws Exception { Git git = getGitTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); @@ -832,9 +832,9 @@ public class GitProducerTest extends GitTestSupport { public void mergeTest() throws Exception { // Init Git git = getGitTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); @@ -862,10 +862,10 @@ public class GitProducerTest extends GitTestSupport { public void showTagsTest() throws Exception { // Init Git git = getGitTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = git.status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); @@ -890,9 +890,9 @@ public class GitProducerTest extends GitTestSupport { public void mergeTargetBranchTest() throws Exception { // Init Git git = getGitTestRepository(); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameToAdd).call(); Status status = git.status().call(); @@ -903,7 +903,7 @@ public class GitProducerTest extends GitTestSupport { template.sendBody("direct:checkout", ""); //checkout test branch //add file to test branch and commit - fileToAdd = new File(gitLocalRepo, filenameBranchToAdd); + fileToAdd = new File(getGitDir(), filenameBranchToAdd); fileToAdd.createNewFile(); git.add().addFilepattern(filenameBranchToAdd).call(); status = git.status().call(); @@ -918,57 +918,61 @@ public class GitProducerTest extends GitTestSupport { } @Override - protected RouteBuilder createRouteBuilder() { + protected RouteBuilder createRouteBuilder() throws Exception { + // force create git repo before routes + getTestRepository(); + final String dir = getGitDir().getPath(); + final String cloneDir = getCloneDir().getPath(); return new RouteBuilder() { @Override public void configure() { - from("direct:clone").to("git://" + gitLocalRepo + from("direct:clone").to("git://" + cloneDir + "?remotePath=https://github.com/oscerd/json-webserver-example.git&operation=clone"); - from("direct:init").to("git://" + gitLocalRepo + "?operation=init"); - from("direct:add").to("git://" + gitLocalRepo + "?operation=add"); - from("direct:checkout").to("git://" + gitLocalRepo + "?operation=checkout&branchName=" + branchTest); + from("direct:init").to("git://" + dir + "?operation=init"); + from("direct:add").to("git://" + dir + "?operation=add"); + from("direct:checkout").to("git://" + dir + "?operation=checkout&branchName=" + branchTest); from("direct:checkout-specific-tag") - .to("git://" + gitLocalRepo + "?operation=checkout&branchName=" + branchTest + "&tagName=" + tagTest); - from("direct:remove").to("git://" + gitLocalRepo + "?operation=remove"); - from("direct:add-on-branch").to("git://" + gitLocalRepo + "?operation=add&branchName=" + branchTest); - from("direct:remove-on-branch").to("git://" + gitLocalRepo + "?operation=add&branchName=" + branchTest); - from("direct:commit").to("git://" + gitLocalRepo + "?operation=commit"); - from("direct:commit-not-allow-empty").to("git://" + gitLocalRepo + "?operation=commit&allowEmpty=false"); - from("direct:commit-branch").to("git://" + gitLocalRepo + "?operation=commit&branchName=" + branchTest); - from("direct:commit-all").to("git://" + gitLocalRepo + "?operation=commit"); - from("direct:commit-all-branch").to("git://" + gitLocalRepo + "?operation=commit&branchName=" + branchTest); - from("direct:add-status-commit").to("git://" + gitLocalRepo + "?operation=add") - .to("git://" + gitLocalRepo + "?operation=status") + .to("git://" + dir + "?operation=checkout&branchName=" + branchTest + "&tagName=" + tagTest); + from("direct:remove").to("git://" + dir + "?operation=remove"); + from("direct:add-on-branch").to("git://" + dir + "?operation=add&branchName=" + branchTest); + from("direct:remove-on-branch").to("git://" + dir + "?operation=add&branchName=" + branchTest); + from("direct:commit").to("git://" + dir + "?operation=commit"); + from("direct:commit-not-allow-empty").to("git://" + dir + "?operation=commit&allowEmpty=false"); + from("direct:commit-branch").to("git://" + dir + "?operation=commit&branchName=" + branchTest); + from("direct:commit-all").to("git://" + dir + "?operation=commit"); + from("direct:commit-all-branch").to("git://" + dir + "?operation=commit&branchName=" + branchTest); + from("direct:add-status-commit").to("git://" + dir + "?operation=add") + .to("git://" + dir + "?operation=status") .choice() .when(simple("${body.hasUncommittedChanges()}")).log("Commiting changes...") - .to("git://" + gitLocalRepo + "?operation=commit") + .to("git://" + dir + "?operation=commit") .otherwise() .log("Nothing to commit") .end(); - from("direct:create-branch").to("git://" + gitLocalRepo + "?operation=createBranch&branchName=" + branchTest); - from("direct:delete-branch").to("git://" + gitLocalRepo + "?operation=deleteBranch&branchName=" + branchTest); - from("direct:status").to("git://" + gitLocalRepo + "?operation=status"); - from("direct:status-branch").to("git://" + gitLocalRepo + "?operation=status&branchName=" + branchTest); - from("direct:log").to("git://" + gitLocalRepo + "?operation=log"); - from("direct:log-branch").to("git://" + gitLocalRepo + "?operation=log&branchName=" + branchTest); - from("direct:create-tag").to("git://" + gitLocalRepo + "?operation=createTag&tagName=" + tagTest); - from("direct:delete-tag").to("git://" + gitLocalRepo + "?operation=deleteTag&tagName=" + tagTest); - from("direct:show-branches").to("git://" + gitLocalRepo + "?operation=showBranches"); - from("direct:cherrypick").to("git://" + gitLocalRepo + "?operation=cherryPick&branchName=" + branchTest); + from("direct:create-branch").to("git://" + dir + "?operation=createBranch&branchName=" + branchTest); + from("direct:delete-branch").to("git://" + dir + "?operation=deleteBranch&branchName=" + branchTest); + from("direct:status").to("git://" + dir + "?operation=status"); + from("direct:status-branch").to("git://" + dir + "?operation=status&branchName=" + branchTest); + from("direct:log").to("git://" + dir + "?operation=log"); + from("direct:log-branch").to("git://" + dir + "?operation=log&branchName=" + branchTest); + from("direct:create-tag").to("git://" + dir + "?operation=createTag&tagName=" + tagTest); + from("direct:delete-tag").to("git://" + dir + "?operation=deleteTag&tagName=" + tagTest); + from("direct:show-branches").to("git://" + dir + "?operation=showBranches"); + from("direct:cherrypick").to("git://" + dir + "?operation=cherryPick&branchName=" + branchTest); from("direct:cherrypick-master") - .to("git://" + gitLocalRepo + "?operation=cherryPick&branchName=refs/heads/master"); - from("direct:pull").to("git://" + gitLocalRepo + "?remoteName=origin&operation=pull"); - from("direct:clean").to("git://" + gitLocalRepo + "?operation=clean"); - from("direct:gc").to("git://" + gitLocalRepo + "?operation=gc"); + .to("git://" + dir + "?operation=cherryPick&branchName=refs/heads/master"); + from("direct:pull").to("git://" + cloneDir + "?remoteName=origin&operation=pull"); + from("direct:clean").to("git://" + dir + "?operation=clean"); + from("direct:gc").to("git://" + dir + "?operation=gc"); from("direct:remoteAdd") - .to("git://" + gitLocalRepo + .to("git://" + dir + "?operation=remoteAdd&remotePath=https://github.com/oscerd/json-webserver-example.git&remoteName=origin"); - from("direct:remoteList").to("git://" + gitLocalRepo + "?operation=remoteList"); - from("direct:merge").to("git://" + gitLocalRepo + "?operation=merge&branchName=" + branchTest); - from("direct:show-tags").to("git://" + gitLocalRepo + "?operation=showTags"); + from("direct:remoteList").to("git://" + dir + "?operation=remoteList"); + from("direct:merge").to("git://" + dir + "?operation=merge&branchName=" + branchTest); + from("direct:show-tags").to("git://" + dir + "?operation=showTags"); from("direct:create-targetBranch") - .to("git://" + gitLocalRepo + "?operation=createBranch&branchName=" + targetBranchTest); - from("direct:merge-targetBranch").to("git://" + gitLocalRepo + "?operation=merge&targetBranchName=" + .to("git://" + getGitDir() + "?operation=createBranch&branchName=" + targetBranchTest); + from("direct:merge-targetBranch").to("git://" + dir + "?operation=merge&targetBranchName=" + targetBranchTest + "&branchName=" + branchTest); } }; diff --git a/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitRemoteProducerTest.java b/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitRemoteProducerTest.java index f170d2545ef..c77d13362fc 100644 --- a/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitRemoteProducerTest.java +++ b/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitRemoteProducerTest.java @@ -40,7 +40,7 @@ public class GitRemoteProducerTest extends GitTestSupport { Repository repository = getTestRepository(); - File fileToAdd = new File(gitLocalRepo, filenameToAdd); + File fileToAdd = new File(getGitDir(), filenameToAdd); fileToAdd.createNewFile(); template.send("direct:add", new Processor() { @@ -49,7 +49,7 @@ public class GitRemoteProducerTest extends GitTestSupport { exchange.getIn().setHeader(GitConstants.GIT_FILE_NAME, filenameToAdd); } }); - File gitDir = new File(gitLocalRepo, ".git"); + File gitDir = new File(getGitDir(), ".git"); assertEquals(true, gitDir.exists()); Status status = new Git(repository).status().call(); @@ -68,14 +68,17 @@ public class GitRemoteProducerTest extends GitTestSupport { } @Override - protected RouteBuilder createRouteBuilder() { + protected RouteBuilder createRouteBuilder() throws Exception { + // force create git repo before routes + getTestRepository(); + final String dir = getGitDir().getPath(); return new RouteBuilder() { @Override public void configure() { - from("direct:add").to("git://" + gitLocalRepo + "?operation=add"); - from("direct:commit").to("git://" + gitLocalRepo + "?operation=commit"); + from("direct:add").to("git://" + dir + "?operation=add"); + from("direct:commit").to("git://" + dir + "?operation=commit"); from("direct:push") - .to("git://" + gitLocalRepo + "?operation=push&remotePath=remoteURL&username=xxx&password=xxx"); + .to("git://" + dir + "?operation=push&remotePath=remoteURL&username=xxx&password=xxx"); } }; }
