org.z2env.gitcr.test.TestGitTools.java Source code

Java tutorial

Introduction

Here is the source code for org.z2env.gitcr.test.TestGitTools.java

Source

/*
 * z2env.org - (c) ZFabrik Software KG
 * 
 * Licensed under Apache 2.
 * 
 * www.z2-environment.net
 */
package org.z2env.gitcr.test;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.z2env.impl.helper.GitTools.isOriginReachable;
import static org.z2env.impl.helper.GitTools.isValidRepository;

import java.io.File;
import java.net.URL;

import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.transport.URIish;
import org.junit.Test;
import org.z2env.impl.helper.GitTools.ValidationResult;
import org.z2env.util.fs.FileUtils;

public class TestGitTools {

    @Test
    public void testReachable() throws Exception {

        assertTrue(isOriginReachable(new URIish("file:/")));
        assertTrue(isOriginReachable(new URIish("http://www.z2-environment.net/")));
        assertFalse(isOriginReachable(new URIish("http://www.z2-environment.nett/")));

    }

    @Test
    public void validIsValidRepository() throws Exception {
        assertValid(isValidRepository(new URIish("http://git.z2-environment.net/z2-core")));
        assertValid(isValidRepository(new URIish(findGitRepoDir())));
        assertValid(isValidRepository(new URIish("ssh://zfabrik@z2-environment.net/~/git/z2-core")));
        assertValid(isValidRepository(new URIish("ssh://zfabrik@z2-environment.net/~/git-svn/z2-base.base")));
    }

    @Test
    public void invalidIsValidRepository() throws Exception {
        assertInvalid(isValidRepository(new URIish("http://git.z2-environment.net/z2-does-not-exist")));
        assertInvalid(isValidRepository(new URIish("ssh://zfabrik@z2-environment.net/~/git/does-not-exists")));
        assertInvalid(isValidRepository(new URIish("ssh://zfabrik@z2-environment.nett/~/git/does-not-exists")));
        assertInvalid(isValidRepository(new URIish("file:/does/not/exist")));
        assertInvalid(isValidRepository(new URIish("/does/not/exist")));
    }

    @Test
    public void cannotTellIsValidRepository() throws Exception {
        assertEquals(ValidationResult.cannotTell,
                isValidRepository(new URIish("git://git.z2-environment.net/z2-does-not-exist")));
    }

    @Test
    public void testEmptyBareRepo() throws Exception {
        File tmpFile = null;
        try {
            tmpFile = File.createTempFile("TestGitTools_", ".tmp");
            tmpFile.delete();
            Git.init().setBare(true).setDirectory(tmpFile).call();
            assertValid(isValidRepository(new URIish(tmpFile.getCanonicalPath())));
        } finally {
            if (tmpFile != null) {
                FileUtils.delete(tmpFile);
            }
        }
    }

    @Test
    public void testSshClone() throws Exception {
        File tmpFile = null;
        try {
            tmpFile = File.createTempFile("TestGitTools_", ".tmp");
            tmpFile.delete();
            Git.cloneRepository().setURI("ssh://zfabrik@z2-environment.net/~/git/z2-core").setDirectory(tmpFile)
                    .call();
            assertValid(isValidRepository(new URIish(tmpFile.getCanonicalPath())));
        } finally {
            if (tmpFile != null) {
                FileUtils.delete(tmpFile);
            }
        }
    }

    private void assertValid(ValidationResult result) {
        assertEquals(ValidationResult.valid, result);
    }

    private void assertInvalid(ValidationResult result) {
        assertEquals(ValidationResult.invalid, result);
    }

    private String findGitRepoDir() throws Exception {
        File f = new File(".").getCanonicalFile();
        while (f != null && !new File(f, ".git").exists()) {
            f = f.getParentFile();
        }

        URL result = (f != null) ? new File(f, ".git").toURI().toURL() : null;
        return result.toString();
    }
}