/** * Copyright Alex Objelean */ package ro.isdc.wro.maven.plugin; import static org.junit.Assert.fail; import java.io.File; import java.io.FileInputStream; import org.apache.commons.io.FileUtils; import org.apache.maven.plugin.MojoExecutionException; import org.junit.Test; import ro.isdc.wro.extensions.support.lint.ReportXmlFormatter.FormatterType; import ro.isdc.wro.util.WroTestUtils; import ro.isdc.wro.util.WroUtil; /** * Test the {@link JsLintMojo} class. * * @author Alex Objelean */ public class TestJsLintMojo extends AbstractTestLinterMojo { /** * {@inheritDoc} */ @Override protected AbstractLinterMojo newLinterMojo() { return new JsLintMojo() { @Override void onException(final Exception e) { fail("Shouldn't fail. Exception message: " + e.getMessage()); } }; } @Test public void usePredefOptions() throws Exception { getMojo().setOptions("predef=['YUI','window','document','OnlineOpinion','xui']"); // ignore found linter errors getMojo().setFailNever(true); getMojo().setTargetGroups("undef"); getMojo().execute(); } @Test(expected = MojoExecutionException.class) public void testMojoWithPropertiesSet() throws Exception { getMojo().setIgnoreMissingResources(true); getMojo().execute(); } @Test(expected = MojoExecutionException.class) public void testWroXmlWithInvalidResourcesAndIgnoreMissingResourcesTrue() throws Exception { setWroWithInvalidResources(); getMojo().setIgnoreMissingResources(true); getMojo().execute(); } @Test(expected = MojoExecutionException.class) public void testResourceWithUndefVariables() throws Exception { getMojo().setTargetGroups("undef"); getMojo().execute(); } @Test(expected = MojoExecutionException.class) public void testEmptyOptions() throws Exception { getMojo().setOptions(""); getMojo().setTargetGroups("undef"); getMojo().execute(); } @Test public void shouldGenerateReportWithDefaultFormat() throws Exception { generateAndCompareReportFile(null, "jslint-default.xml"); } @Test public void shouldGenerateReportWithCheckstyleFormat() throws Exception { generateAndCompareReportFile(FormatterType.CHECKSTYLE.getFormat(), "jslint-checkstyle.xml"); } @Test(expected = MojoExecutionException.class) public void cannotGenerateReportWithInvalidFormat() throws Exception { final File reportFile = WroUtil.createTempFile(); final JsLintMojo mojo = (JsLintMojo) getMojo(); try { mojo.setReportFile(reportFile); mojo.setReportFormat("INVALID"); mojo.setOptions("undef, browser"); mojo.setTargetGroups(null); mojo.setFailNever(true); mojo.setIgnoreMissingResources(true); mojo.execute(); } finally { FileUtils.deleteQuietly(reportFile); } } public void generateAndCompareReportFile(final String reportFormat, final String expectedFileName) throws Exception { final File reportFile = WroUtil.createTempFile(); final JsLintMojo mojo = (JsLintMojo) getMojo(); try { mojo.setReportFile(reportFile); if (reportFormat != null) { mojo.setReportFormat(reportFormat); } mojo.setOptions("undef, browser"); mojo.setTargetGroups(null); mojo.setFailNever(true); mojo.setIgnoreMissingResources(true); mojo.execute(); } finally { // Assert that file is big enough to prove that it contains serialized errors. WroTestUtils.compare(getClass().getResourceAsStream("report/" + expectedFileName), new FileInputStream(reportFile)); FileUtils.deleteQuietly(reportFile); } } }