/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.it;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import net.sourceforge.pmd.PMD;
/**
* Collects the result of a command execution in order to verify it.
*
* @author Andreas Dangel
*/
public class ExecutionResult {
private final int exitCode;
private final String output;
ExecutionResult(int theExitCode, String theOutput) {
this.exitCode = theExitCode;
this.output = theOutput;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("ExecutionResult:")
.append(PMD.EOL)
.append(" exit code: ").append(exitCode).append(PMD.EOL)
.append(" output:").append(PMD.EOL).append(output).append(PMD.EOL);
return sb.toString();
}
/**
* Asserts that the command exited with the expected exit code and that the given expected
* output is contained in the actual command output.
*
* @param expectedExitCode the exit code, e.g. 0 if no rule violations are expected, or 4 if violations are found
* @param expectedOutput the output to search for
*/
public void assertExecutionResult(int expectedExitCode, String expectedOutput) {
assertEquals("Command exited with wrong code", expectedExitCode, exitCode);
assertNotNull("No output found", output);
if (!output.contains(expectedOutput)) {
fail("Expected output '" + expectedOutput + "' not present.\nComplete output:\n\n" + output);
}
}
}