org.eclipse.egit.gitflow.op.ReleaseStartOperationTest.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.egit.gitflow.op.ReleaseStartOperationTest.java

Source

/*******************************************************************************
 * Copyright (C) 2015, Max Hohenegger <eclipse@hohenegger.eu>
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *******************************************************************************/
package org.eclipse.egit.gitflow.op;

import static org.junit.Assert.*;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.egit.core.op.TagOperation;
import org.eclipse.egit.gitflow.GitFlowRepository;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.TagBuilder;
import org.eclipse.jgit.revwalk.RevCommit;
import org.junit.Test;

public class ReleaseStartOperationTest extends AbstractGitFlowOperationTest {
    @Test
    public void testReleaseBranchCreated() throws Exception {
        testRepository.createInitialCommit("testReleaseBranchCreated\n\nfirst commit\n");

        Repository repository = testRepository.getRepository();
        new InitOperation(repository).execute(null);
        GitFlowRepository gfRepo = new GitFlowRepository(repository);

        ReleaseStartOperation releaseStartOperation = new ReleaseStartOperation(gfRepo, MY_RELEASE);
        releaseStartOperation.execute(null);

        assertNull(releaseStartOperation.getSchedulingRule());

        assertEquals(gfRepo.getConfig().getFullReleaseBranchName(MY_RELEASE), repository.getFullBranch());
    }

    @Test
    public void testReleaseBranchCreatedFromHeadCommit() throws Exception {
        RevCommit initialCommit = testRepository
                .createInitialCommit("testReleaseBranchCreatedFromHeadCommit\n\nfirst commit\n");

        Repository repository = testRepository.getRepository();
        new InitOperation(repository).execute(null);
        GitFlowRepository gfRepo = new GitFlowRepository(repository);

        ReleaseStartOperation releaseStartOperation = new ReleaseStartOperation(gfRepo, initialCommit.getName(),
                MY_RELEASE);
        releaseStartOperation.execute(null);

        assertNull(releaseStartOperation.getSchedulingRule());

        assertEquals(gfRepo.getConfig().getFullReleaseBranchName(MY_RELEASE), repository.getFullBranch());
    }

    @Test
    public void testReleaseBranchCreatedFromCommit() throws Exception {
        RevCommit initialCommit = testRepository
                .createInitialCommit("testReleaseBranchCreatedFromCommit\n\nfirst commit\n");
        testRepository.createInitialCommit("testReleaseBranchCreatedFromCommit\n\nsecond commit\n");

        Repository repository = testRepository.getRepository();
        new InitOperation(repository).execute(null);
        GitFlowRepository gfRepo = new GitFlowRepository(repository);

        ReleaseStartOperation releaseStartOperation = new ReleaseStartOperation(gfRepo, initialCommit.getName(),
                MY_RELEASE);
        releaseStartOperation.execute(null);

        assertNotNull(releaseStartOperation.getSchedulingRule());

        assertEquals(gfRepo.getConfig().getFullReleaseBranchName(MY_RELEASE), repository.getFullBranch());

        assertEquals(initialCommit, gfRepo.findHead());
    }

    @Test
    public void testReleaseStartWithContent() throws Exception {
        testRepository.createInitialCommit("testReleaseStartWithContent\n\nfirst commit\n");

        Repository repository = testRepository.getRepository();
        new InitOperation(repository).execute(null);
        GitFlowRepository gfRepo = new GitFlowRepository(repository);

        testUtils.addFileToProject(project.getProject(), "folder1/file1.txt", "Hello world");
        testRepository.connect(project.getProject());
        testRepository.trackAllFiles(project.getProject());
        RevCommit developCommit = testRepository.commit("Initial commit");

        new ReleaseStartOperation(gfRepo, MY_RELEASE).execute(null);

        RevCommit releaseHead = gfRepo.findHead(gfRepo.getConfig().getReleaseBranchName(MY_RELEASE));
        assertEquals(developCommit, releaseHead);
    }

    @Test
    public void testReleaseStartFailed() throws Exception {
        testRepository.createInitialCommit("testReleaseStart\n\nfirst commit\n");

        Repository repository = testRepository.getRepository();
        new InitOperation(repository).execute(null);
        GitFlowRepository gfRepo = new GitFlowRepository(repository);

        createTag(gfRepo.findHead(), MY_RELEASE, "irrelevant", repository);

        try {
            new ReleaseStartOperation(gfRepo, MY_RELEASE).execute(null);
            fail();
        } catch (CoreException e) {
            assertEquals(gfRepo.getConfig().getDevelopFull(), repository.getFullBranch());
        }
    }

    protected void createTag(RevCommit head, String name, String message, Repository repository)
            throws CoreException {
        TagBuilder tag = new TagBuilder();
        tag.setTag(name);
        tag.setMessage(message);
        tag.setObjectId(head);
        new TagOperation(repository, tag, false).execute(null);
    }
}