jenkins.plugins.coverity.CoverityTool.CovAnalyzeCommandTest.java Source code

Java tutorial

Introduction

Here is the source code for jenkins.plugins.coverity.CoverityTool.CovAnalyzeCommandTest.java

Source

/*******************************************************************************
 * Copyright (c) 2017 Synopsys, Inc
 * 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
 *
 * Contributors:
 *    Synopsys, Inc - initial implementation and documentation
 *******************************************************************************/
package jenkins.plugins.coverity.CoverityTool;

import jenkins.plugins.coverity.*;
import jenkins.plugins.coverity.Utils.CoverityPublisherBuilder;
import jenkins.plugins.coverity.Utils.InvocationAssistanceBuilder;
import jenkins.plugins.coverity.Utils.TaOptionBlockBuilder;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.fail;
import static org.junit.Assert.assertEquals;

public class CovAnalyzeCommandTest extends CommandTestBase {

    @Test
    public void addMisraConfigurationTest() throws IOException, InterruptedException {
        InvocationAssistance invocationAssistance = new InvocationAssistanceBuilder()
                .withMisraConfigFile("misraConfigFile").build();
        CoverityPublisher publisher = new CoverityPublisherBuilder().withInvocationAssistance(invocationAssistance)
                .build();

        Command covAnalyzeCommand = new CovAnalyzeCommand(build, launcher, listener, publisher, StringUtils.EMPTY,
                envVars);
        setExpectedArguments(
                new String[] { "cov-analyze", "--dir", "TestDir", "--misra-config", "misraConfigFile" });
        covAnalyzeCommand.runCommand();
        consoleLogger
                .verifyLastMessage("[Coverity] cov-analyze command line arguments: " + actualArguments.toString());
    }

    @Test
    public void addMisraConfigurationTest_WithEmptyMisraConfigFilePath() throws IOException, InterruptedException {
        InvocationAssistance invocationAssistance = new InvocationAssistanceBuilder().withMisraConfigFile("")
                .build();
        CoverityPublisher publisher = new CoverityPublisherBuilder().withInvocationAssistance(invocationAssistance)
                .build();

        Command covAnalyzeCommand = new CovAnalyzeCommand(build, launcher, listener, publisher, StringUtils.EMPTY,
                envVars);
        try {
            covAnalyzeCommand.runCommand();
            fail("RuntimeException should have been thrown");
        } catch (RuntimeException e) {
            assertEquals("Misra configuration file is required to run Misra analysis.", e.getMessage());
        }
    }

    @Test
    public void additionalArgumentsTest() throws IOException, InterruptedException {
        InvocationAssistance invocationAssistance = new InvocationAssistanceBuilder()
                .withAnalyzeArguments("additionalArgs").build();
        CoverityPublisher publisher = new CoverityPublisherBuilder().withInvocationAssistance(invocationAssistance)
                .build();

        Command covAnalyzeCommand = new CovAnalyzeCommand(build, launcher, listener, publisher, StringUtils.EMPTY,
                envVars);
        setExpectedArguments(new String[] { "cov-analyze", "--dir", "TestDir", "additionalArgs" });
        covAnalyzeCommand.runCommand();
        consoleLogger
                .verifyLastMessage("[Coverity] cov-analyze command line arguments: " + actualArguments.toString());
    }

    @Test
    public void additionalArgumentsTest_WithParseException() throws IOException, InterruptedException {
        InvocationAssistance invocationAssistance = new InvocationAssistanceBuilder().withAnalyzeArguments("\'")
                .build();
        CoverityPublisher publisher = new CoverityPublisherBuilder().withInvocationAssistance(invocationAssistance)
                .build();

        Command covAnalyzeCommand = new CovAnalyzeCommand(build, launcher, listener, publisher, StringUtils.EMPTY,
                envVars);
        try {
            covAnalyzeCommand.runCommand();
            fail("RuntimeException should have been thrown");
        } catch (RuntimeException e) {
            assertEquals("ParseException occurred during tokenizing the cov analyze additional arguments.",
                    e.getMessage());
        }
    }

    @Test
    public void addTestAdvisorConfigurationTest_WithMultipleStripPaths() throws IOException, InterruptedException {
        List<TaStripPath> taStripPathList = new ArrayList<TaStripPath>();
        TaStripPath path1 = new TaStripPath("StripPath1");
        TaStripPath path2 = new TaStripPath("StripPath2");
        taStripPathList.add(path1);
        taStripPathList.add(path2);

        TaOptionBlock taOptionBlock = new TaOptionBlockBuilder().withPolicyFile("taPolicyFile")
                .withStripPath(taStripPathList).build();
        CoverityPublisher publisher = new CoverityPublisherBuilder().withTaOptionBlock(taOptionBlock).build();

        Command covAnalyzeCommand = new CovAnalyzeCommand(build, launcher, listener, publisher, StringUtils.EMPTY,
                envVars);
        setExpectedArguments(
                new String[] { "cov-analyze", "--dir", "TestDir", "--test-advisor", "--test-advisor-policy",
                        "taPolicyFile", "--strip-path", "StripPath1", "--strip-path", "StripPath2" });
        covAnalyzeCommand.runCommand();
        consoleLogger
                .verifyLastMessage("[Coverity] cov-analyze command line arguments: " + actualArguments.toString());
    }

    @Test
    public void addTestAdvisorConfigurationTest_WithEmptyTaPolicyFilePath()
            throws IOException, InterruptedException {
        TaOptionBlock taOptionBlock = new TaOptionBlockBuilder().build();
        CoverityPublisher publisher = new CoverityPublisherBuilder().withTaOptionBlock(taOptionBlock).build();

        Command covAnalyzeCommand = new CovAnalyzeCommand(build, launcher, listener, publisher, StringUtils.EMPTY,
                envVars);
        try {
            covAnalyzeCommand.runCommand();
            fail("RuntimeException should have been thrown");
        } catch (RuntimeException e) {
            assertEquals("Test Advisor Policy File is required to run the Test Advisor.", e.getMessage());
        }
    }

    @Test
    public void doesNotExecute_WithoutInvocationAssistance() throws IOException, InterruptedException {
        CoverityPublisher publisher = new CoverityPublisherBuilder().build();
        Command covAnalyzeCommand = new CovAnalyzeCommand(build, launcher, listener, publisher, StringUtils.EMPTY,
                envVars);
        covAnalyzeCommand.runCommand();
        verifyNumberOfExecutedCommands(0);
    }
}