package com.captaindebug.errortrack.file; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.File; import java.util.List; import java.util.Map; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.util.ReflectionTestUtils; import com.captaindebug.errortrack.report.Results; import com.captaindebug.errortrack.report.Results.ErrorResult; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({ "classpath:error-track-context.xml" }) public class FileLocatorITest { Logger logger = LoggerFactory.getLogger(FileLocatorITest.class); private String logFileDir; @Autowired private FileLocator instance; @Autowired private Results report; Map<String, List<Results.ErrorResult>> results; @SuppressWarnings("unchecked") @Before public void setUp() throws Exception { logFileDir = System.getProperty("user.dir") + "/src/test/resources/"; logger.info("Using directory: " + logFileDir); report.clear(); results = (Map<String, List<ErrorResult>>) ReflectionTestUtils.getField(report, "results"); } @Test public void testErrorFreeLog() { String testFile = logFileDir + "error-free.log"; testFileAvailable(testFile); ReflectionTestUtils.setField(instance, "scanIn", testFile); instance.findFile(); assertEquals(1, results.size()); List<Results.ErrorResult> errorList = results.get(testFile); assertNotNull(errorList); assertEquals(0, errorList.size()); } private void testFileAvailable(String testFile) { File file = new File(testFile); assertTrue(file.exists()); file.setLastModified(System.currentTimeMillis()); } @Test public void testContainsErrorsLog() { String testFile = logFileDir + "contains-errors.log"; testFileAvailable(testFile); ReflectionTestUtils.setField(instance, "scanIn", testFile); instance.findFile(); assertEquals(1, results.size()); List<Results.ErrorResult> errorList = results.get(testFile); assertNotNull(errorList); assertEquals(1, errorList.size()); Results.ErrorResult errorResult = errorList.get(0); assertEquals(4, errorResult.getLineNumber()); } @Test public void testExclude() { String testFile = logFileDir + "exclude.log"; testFileAvailable(testFile); ReflectionTestUtils.setField(instance, "scanIn", testFile); instance.findFile(); assertEquals(1, results.size()); List<Results.ErrorResult> errorList = results.get(testFile); assertNotNull(errorList); assertEquals(0, errorList.size()); } }