package hudson.plugins.testabilityexplorer.publisher; import hudson.FilePath; import hudson.maven.MavenBuild; import hudson.maven.MavenBuildProxy; import hudson.model.AbstractProject; import hudson.model.Result; import org.apache.commons.lang.SystemUtils; import org.apache.commons.io.IOUtils; import static org.mockito.Mockito.*; import org.testng.annotations.Test; import org.testng.annotations.BeforeClass; import org.testng.annotations.AfterClass; import static org.testng.Assert.assertTrue; import static org.testng.Assert.assertFalse; import java.io.*; import hudson.plugins.testabilityexplorer.PluginBaseTest; /** * Tests the AbstractMavenReporterImpl. * * @author reik.schatz */ @Test public class AbstractMavenReporterImplTest extends PluginBaseTest { private static final String REPORT_FILE_NAME = "report.xml"; @BeforeClass public void setUp() throws IOException { File report = getReport(); BufferedWriter out = null; try { out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(report),"UTF8")); out.write(createReportXml()); } finally { IOUtils.closeQuietly(out); } assertTrue(report.exists()); } @AfterClass public void tearDown() { File report = getReport(); if (report.exists()) { report.delete(); } assertFalse(report.exists()); } protected File getReport() { return new File(SystemUtils.getJavaIoTmpDir(), REPORT_FILE_NAME); } public void testUnstableBuilds() throws Throwable { MavenBuild mavenBuild = mock(MavenBuild.class); stub(mavenBuild.isBuilding()).toReturn(true); final File root = getReport().getParentFile(); final FilePath rootPath = new FilePath(root); stub(mavenBuild.getProject()).toReturn(null); MavenPublisher publisher = new MavenPublisher(REPORT_FILE_NAME,"","", "10", "50") { @Override FilePath getModuleRoot(MavenBuild build) { return rootPath; } }; MavenBuildProxy.BuildCallable<Void, IOException> callable = publisher.getBuildCallable(null); callable.call(mavenBuild); verify(mavenBuild).setResult(Result.UNSTABLE); } }