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");
             }
         };
     }

Reply via email to