@Test public void testFileStarted() throws Exception { final XMLLogger logger = new XMLLogger(outStream, true); logger.auditStarted(null); final AuditEvent ev = new AuditEvent(this, "Test.java"); logger.fileStarted(ev); logger.fileFinished(ev); logger.auditFinished(null); verifyXml(getPath("ExpectedXMLLogger.xml"), outStream); }
/** * Prints the "file" opening tag with the given filename. * @param fileName The filename to output. */ private void writeFileOpeningTag(String fileName) { writer.println("<file name=\"" + encode(fileName) + "\">"); }
@Test public void testAddIgnored() throws Exception { final XMLLogger logger = new XMLLogger(outStream, true); logger.auditStarted(null); final LocalizedMessage message = new LocalizedMessage(1, 1, "messages.properties", "key", null, SeverityLevel.IGNORE, null, getClass(), null); final AuditEvent ev = new AuditEvent(this, "Test.java", message); logger.addError(ev); logger.auditFinished(null); verifyXml(getPath("ExpectedXMLLoggerEmpty.xml"), outStream); }
@Test public void testFinishLocalSetup() { final XMLLogger logger = new XMLLogger(outStream, true); logger.finishLocalSetup(); logger.auditStarted(null); logger.auditFinished(null); assertNotNull("instance should not be null", logger); }
/** * Returns a new AuditListener for this OutputFormat. * @param out the output stream * @param options the output stream options * @return a new AuditListener for this OutputFormat */ public AuditListener createListener(OutputStream out, AutomaticBean.OutputStreamOptions options) { final AuditListener result; if (this == XML) { result = new XMLLogger(out, options); } else { result = new DefaultLogger(out, options); } return result; }
@Test public void testCloseStream() throws Exception { final XMLLogger logger = new XMLLogger(outStream, AutomaticBean.OutputStreamOptions.CLOSE); logger.auditStarted(null); logger.auditFinished(null); assertEquals("Invalid close count", 1, outStream.getCloseCount()); verifyXml(getPath("ExpectedXMLLoggerEmpty.xml"), outStream); }
@Test public void testEncode() throws IOException { final XMLLogger test = new XMLLogger(outStream, false); assertNotNull("should be able to create XMLLogger without issue", test); final String[][] encodings = { {"<", "<"}, {">", ">"}, {"'", "'"}, {"\"", """}, {"&", "&"}, {"<", "&lt;"}, {"abc;", "abc;"}, {"�", "&#0;"}, {"�", "&#0"}, {"�", "&#X0;"}, {"\u0001", "#x1;"}, {"\u0080", "#x80;"}, }; for (String[] encoding : encodings) { final String encoded = XMLLogger.encode(encoding[0]); assertEquals("\"" + encoding[0] + "\"", encoding[1], encoded); } outStream.close(); }
@Test public void testIsReference() throws IOException { final XMLLogger test = new XMLLogger(outStream, false); assertNotNull("should be able to create XMLLogger without issue", test); final String[] references = { for (String reference : references) { assertTrue("reference: " + reference, XMLLogger.isReference(reference)); for (String noReference : noReferences) { assertFalse("no reference: " + noReference, XMLLogger.isReference(noReference));
/** * Creates XML logger. * @param task the task to possibly log to * @return an XMLLogger instance * @throws IOException if an error occurs */ private AuditListener createXmlLogger(Task task) throws IOException { final AuditListener xmlLogger; if (toFile == null || !useFile) { xmlLogger = new XMLLogger(new LogOutputStream(task, Project.MSG_INFO), AutomaticBean.OutputStreamOptions.CLOSE); } else { xmlLogger = new XMLLogger(Files.newOutputStream(toFile.toPath()), AutomaticBean.OutputStreamOptions.CLOSE); } return xmlLogger; }
@Test public void testNoCloseStream() throws Exception { final XMLLogger logger = new XMLLogger(outStream, AutomaticBean.OutputStreamOptions.NONE); logger.auditStarted(null); logger.auditFinished(null); assertEquals("Invalid close count", 0, outStream.getCloseCount()); outStream.close(); verifyXml(getPath("ExpectedXMLLoggerEmpty.xml"), outStream); }
@Test public void testFileFinished() throws Exception { final XMLLogger logger = new XMLLogger(outStream, true); logger.auditStarted(null); final AuditEvent ev = new AuditEvent(this, "Test.java"); logger.fileFinished(ev); logger.auditFinished(null); verifyXml(getPath("ExpectedXMLLogger.xml"), outStream); }
@Test public void testNullOutputStreamOptions() { try { final XMLLogger logger = new XMLLogger(outStream, null); // assert required to calm down eclipse's 'The allocated object is never used' violation assertNotNull("Null instance", logger); fail("Exception was expected"); } catch (IllegalArgumentException exception) { assertEquals("Invalid error message", "Parameter outputStreamOptions can not be null", exception.getMessage()); } }
@Test public void testAddErrorModuleId() throws Exception { final XMLLogger logger = new XMLLogger(outStream, true); logger.auditStarted(null); final LocalizedMessage message = new LocalizedMessage(1, 1, "messages.properties", "key", null, SeverityLevel.ERROR, "module", getClass(), null); final AuditEvent ev = new AuditEvent(this, "Test.java", message); logger.addError(ev); logger.auditFinished(null); verifyXml(getPath("ExpectedXMLLoggerErrorModuleId.xml"), outStream, message.getMessage()); }
/** * Writes the exception event to the print writer. * @param throwable The */ private void writeException(Throwable throwable) { writer.println("<exception>"); writer.println("<![CDATA["); final StringWriter stringWriter = new StringWriter(); final PrintWriter printer = new PrintWriter(stringWriter); throwable.printStackTrace(printer); writer.println(encode(stringWriter.toString())); writer.println("]]>"); writer.println("</exception>"); }
@Test public void testAddError() throws Exception { final XMLLogger logger = new XMLLogger(outStream, true); logger.auditStarted(null); final LocalizedMessage message = new LocalizedMessage(1, 1, "messages.properties", "key", null, SeverityLevel.ERROR, null, getClass(), null); final AuditEvent ev = new AuditEvent(this, "Test.java", message); logger.fileStarted(ev); logger.addError(ev); logger.fileFinished(ev); logger.auditFinished(null); verifyXml(getPath("ExpectedXMLLoggerError.xml"), outStream, message.getMessage()); }
checker.setBasedir(getPath("")); final ByteArrayOutputStream out = new ByteArrayOutputStream(); final XMLLogger logger = new XMLLogger(out, AutomaticBean.OutputStreamOptions.NONE); checker.addListener(logger);
@Test public void testAddErrorWithNullFileName() throws Exception { final XMLLogger logger = new XMLLogger(outStream, true); logger.auditStarted(null); final LocalizedMessage message = new LocalizedMessage(1, 1, "messages.properties", "key", null, SeverityLevel.ERROR, null, getClass(), null); final AuditEvent ev = new AuditEvent(this, null, message); logger.addError(ev); logger.auditFinished(null); verifyXml(getPath("ExpectedXMLLoggerErrorNullFileName.xml"), outStream, message.getMessage()); }
/** * Outputs the given event to the writer. * @param event An event to print. */ private void writeFileError(AuditEvent event) { writer.print("<error" + " line=\"" + event.getLine() + "\""); if (event.getColumn() > 0) { writer.print(" column=\"" + event.getColumn() + "\""); } writer.print(" severity=\"" + event.getSeverityLevel().getName() + "\""); writer.print(" message=\"" + encode(event.getMessage()) + "\""); writer.print(" source=\""); if (event.getModuleId() == null) { writer.print(encode(event.getSourceName())); } else { writer.print(encode(event.getModuleId())); } writer.println("\"/>"); }
@Test public void testAddErrorOnZeroColumns() throws Exception { final XMLLogger logger = new XMLLogger(outStream, true); logger.auditStarted(null); final LocalizedMessage message = new LocalizedMessage(1, 0, "messages.properties", "key", null, SeverityLevel.ERROR, null, getClass(), null); final AuditEvent ev = new AuditEvent(this, "Test.java", message); logger.fileStarted(ev); logger.addError(ev); logger.fileFinished(ev); logger.auditFinished(null); verifyXml(getPath("ExpectedXMLLoggerErrorZeroColumn.xml"), outStream, message.getMessage()); }
@Test public void testXmlLoggerClosesItStreams() throws Exception { final Checker checker = new Checker(); try (CloseAndFlushTestByteArrayOutputStream testInfoOutputStream = new CloseAndFlushTestByteArrayOutputStream()) { checker.setModuleClassLoader(Thread.currentThread().getContextClassLoader()); checker.addListener(new XMLLogger(testInfoOutputStream, true)); final File tmpFile = temporaryFolder.newFile("file.java"); final String[] expected = CommonUtil.EMPTY_STRING_ARRAY; verify(checker, tmpFile.getPath(), tmpFile.getPath(), expected); assertEquals("Close count was not expected", 1, testInfoOutputStream.getCloseCount()); assertEquals("Flush count was not expected", 0, testInfoOutputStream.getFlushCount()); } }