@Test public void testSetupChildListener() throws Exception { final Checker checker = new Checker(); final PackageObjectFactory factory = new PackageObjectFactory( new HashSet<>(), Thread.currentThread().getContextClassLoader()); checker.setModuleFactory(factory); final Configuration config = new DefaultConfiguration( DebugAuditAdapter.class.getCanonicalName()); checker.setupChild(config); final List<AuditListener> listeners = Whitebox.getInternalState(checker, "listeners"); assertTrue("Invalid child listener class", listeners.get(listeners.size() - 1) instanceof DebugAuditAdapter); }
@Test public void testAddBeforeExecutionFileFilterAsChild() throws Exception { final Checker checker = new Checker(); final TestBeforeExecutionFileFilter fileFilter = new TestBeforeExecutionFileFilter(); final PackageObjectFactory factory = new PackageObjectFactory( new HashSet<>(), Thread.currentThread().getContextClassLoader()) { @Override public Object createModule(String name) throws CheckstyleException { Object filter = fileFilter; if (!name.equals(TestBeforeExecutionFileFilter.class.getName())) { filter = super.createModule(name); } return filter; } }; checker.setModuleFactory(factory); checker.setupChild(createModuleConfig(TestBeforeExecutionFileFilter.class)); checker.process(Collections.singletonList(new File("dummy.java"))); assertTrue("Checker.acceptFileStarted() doesn't call listener", fileFilter.wasCalled()); }
@Test public void testAddAuditListenerAsChild() throws Exception { final Checker checker = new Checker(); final DebugAuditAdapter auditAdapter = new DebugAuditAdapter(); final PackageObjectFactory factory = new PackageObjectFactory( new HashSet<>(), Thread.currentThread().getContextClassLoader()) { @Override public Object createModule(String name) throws CheckstyleException { Object adapter = auditAdapter; if (!name.equals(DebugAuditAdapter.class.getName())) { adapter = super.createModule(name); } return adapter; } }; checker.setModuleFactory(factory); checker.setupChild(createModuleConfig(DebugAuditAdapter.class)); // Let's try fire some events checker.process(Collections.singletonList(new File("dummy.java"))); assertTrue("Checker.fireAuditStarted() doesn't call listener", auditAdapter.wasCalled()); }
@Test public void testSetupChildExceptions() { final Checker checker = new Checker(); final PackageObjectFactory factory = new PackageObjectFactory( new HashSet<>(), Thread.currentThread().getContextClassLoader()); checker.setModuleFactory(factory); final Configuration config = new DefaultConfiguration("java.lang.String"); try { checker.setupChild(config); fail("Exception is expected"); } catch (CheckstyleException ex) { assertEquals("Error message is not expected", "java.lang.String is not allowed as a child in Checker", ex.getMessage()); } }
@Test public void testWithCacheWithNoViolation() throws Exception { final Checker checker = new Checker(); final PackageObjectFactory factory = new PackageObjectFactory( new HashSet<>(), Thread.currentThread().getContextClassLoader()); checker.setModuleFactory(factory); checker.configure(createModuleConfig(TranslationCheck.class)); final File cacheFile = temporaryFolder.newFile(); checker.setCacheFile(cacheFile.getPath()); checker.setupChild(createModuleConfig(TranslationCheck.class)); final File tmpFile = temporaryFolder.newFile("file.java"); final List<File> files = new ArrayList<>(1); files.add(tmpFile); checker.process(files); // invoke destroy to persist cache checker.destroy(); final Properties cache = new Properties(); cache.load(Files.newBufferedReader(cacheFile.toPath())); // There should 2 objects in cache: processed file (file.java) and checker configuration. final int expectedNumberOfObjectsInCache = 2; assertEquals("Cache has unexpected size", expectedNumberOfObjectsInCache, cache.size()); final String expectedConfigHash = "B8535A811CA90BE8B7A14D40BCA62B4FC2447B46"; assertEquals("Cache has unexpected hash", expectedConfigHash, cache.getProperty(PropertyCacheFile.CONFIG_HASH_KEY)); assertNotNull("Cache file has null path", cache.getProperty(tmpFile.getPath())); }
@Test public void testFileSetCheckInitWhenAddedAsChild() throws Exception { final Checker checker = new Checker(); final DummyFileSet fileSet = new DummyFileSet(); final PackageObjectFactory factory = new PackageObjectFactory( new HashSet<>(), Thread.currentThread().getContextClassLoader()) { @Override public Object createModule(String name) throws CheckstyleException { Object check = fileSet; if (!name.equals(DummyFileSet.class.getName())) { check = super.createModule(name); } return check; } }; checker.setModuleFactory(factory); checker.finishLocalSetup(); checker.setupChild(createModuleConfig(DummyFileSet.class)); assertTrue("FileSetCheck.init() wasn't called", fileSet.isInitCalled()); }