diff --git a/eo-maven-plugin/pom.xml b/eo-maven-plugin/pom.xml index 216a4b0955..f88feef8a6 100644 --- a/eo-maven-plugin/pom.xml +++ b/eo-maven-plugin/pom.xml @@ -43,6 +43,12 @@ SOFTWARE. org.eolang lints 1.0-SNAPSHOT + + + org.slf4j + slf4j-simple + + org.glassfish diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/AssembleMojoTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/AssembleMojoTest.java index 2e4be6a5b0..f74763b471 100644 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/AssembleMojoTest.java +++ b/eo-maven-plugin/src/test/java/org/eolang/maven/AssembleMojoTest.java @@ -29,8 +29,6 @@ import java.io.IOException; import java.nio.file.Path; import java.util.Map; -import org.eolang.maven.log.CaptureLogs; -import org.eolang.maven.log.Logs; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; import org.junit.jupiter.api.Test; @@ -120,23 +118,6 @@ void assemblesNotFailWithFailOnError(@Mktmp final Path temp) throws IOException ); } - @CaptureLogs - @Test - void assemblesSuccessfullyInOfflineMode(final Logs out, - @Mktmp final Path temp) throws IOException { - new FakeMaven(temp) - .withHelloWorld() - .with("offline", true) - .execute(AssembleMojo.class); - MatcherAssert.assertThat( - "While execution AssembleMojo log should have contained message about offline mode, but it didn't", - String.join("\n", out.captured()), - Matchers.containsString( - "No programs were pulled because eo.offline flag is set to TRUE" - ) - ); - } - @Test void configuresChildParameters(@Mktmp final Path temp) throws IOException { final Map res = new FakeMaven(temp) diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/LogFormatTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/LogFormatTest.java deleted file mode 100644 index 44f6e9cbf1..0000000000 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/LogFormatTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2016-2025 Objectionary.com - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package org.eolang.maven; - -import com.jcabi.log.Logger; -import org.eolang.maven.log.CaptureLogs; -import org.eolang.maven.log.Logs; -import org.hamcrest.MatcherAssert; -import org.hamcrest.Matchers; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.parallel.Execution; -import org.junit.jupiter.api.parallel.ExecutionMode; - -/** - * Tests of the log4j logger messages format. - * - *

All log messages are written to System.out. System.out is a shared resource among all other - * threads. For this reason, we run tests in this class in the same thread (disabling parallelism). - * This approach prevents log messages from other threads from interfering. Since all the tests in - * this class are relatively fast, it does not significantly impact overall performance. - * We disable parallelism by using the {@link Execution} annotation with - * {@link ExecutionMode#SAME_THREAD}. DO NOT REMOVE THAT ANNOTATION!

- * - * @since 0.28.11 - */ -@Execution(ExecutionMode.SAME_THREAD) -@SuppressWarnings("JTCOP.RuleAllTestsHaveProductionClass") -final class LogFormatTest { - - /** - * Expected log message format. - */ - private static final String FORMAT = - "^\\d{2}:\\d{2}:\\d{2} \\[INFO] org.eolang.maven.LogFormatTest: Wake up, Neo...\\R"; - - @Test - @CaptureLogs - void printsFormattedMessage(final Logs out) { - final String msg = "Wake up, Neo..."; - Logger.info(this, msg); - final String actual = out.waitForMessage(msg); - MatcherAssert.assertThat( - String.format( - "Actual log output is '%s', but expected pattern is: '%s'", - actual, - LogFormatTest.FORMAT - ), - actual, - Matchers.matchesPattern(LogFormatTest.FORMAT) - ); - } - - @Test - void matchesCorrectly() { - MatcherAssert.assertThat( - CatalogsTest.TO_ADD_MESSAGE, - "16:02:08 [INFO] org.eolang.maven.LogFormatTest: Wake up, Neo...\n", - Matchers.matchesPattern(LogFormatTest.FORMAT) - ); - } -} diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/PullMojoTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/PullMojoTest.java index 0c00b1d444..8a87f54711 100644 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/PullMojoTest.java +++ b/eo-maven-plugin/src/test/java/org/eolang/maven/PullMojoTest.java @@ -44,13 +44,10 @@ import org.eolang.maven.hash.ChRemote; import org.eolang.maven.hash.ChText; import org.eolang.maven.hash.CommitHash; -import org.eolang.maven.log.CaptureLogs; -import org.eolang.maven.log.Logs; import org.eolang.maven.util.HmBase; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; import org.hamcrest.io.FileMatchers; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -183,31 +180,6 @@ void doesNotPullInOfflineMode(@Mktmp final Path tmp) throws IOException { ); } - @Test - @CaptureLogs - void showsWhereNotFoundWasDiscoveredAt(@Mktmp final Path tmp, final Logs out) - throws IOException { - final FakeMaven mvn = new FakeMaven(tmp) - .withProgram( - "+package com.example\n", - "# No comments.", - "[] > main", - " org.eolang.org > @" - ) - .with("objectionary", new OyRemote(new ChRemote("master"))); - Assertions.assertThrows( - Exception.class, - () -> mvn.execute(new FakeMaven.Pull()), - "Pull mojo should fail, but it does not" - ); - Assertions.assertTrue( - out.captured().stream().anyMatch( - line -> line.contains("Failed to pull 'org.eolang.org' earlier discovered at") - ), - "Log should contain info where failed to pull object was discovered at, but it does not" - ); - } - @Test void skipsAlreadyPulled(@Mktmp final Path temp) throws IOException { final FakeMaven maven = new FakeMaven(temp) diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/SafeMojoTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/SafeMojoTest.java deleted file mode 100644 index 2dc643690c..0000000000 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/SafeMojoTest.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2016-2025 Objectionary.com - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package org.eolang.maven; - -import com.yegor256.Mktmp; -import com.yegor256.MktmpResolver; -import java.nio.file.Path; -import org.eolang.maven.log.CaptureLogs; -import org.eolang.maven.log.Logs; -import org.hamcrest.MatcherAssert; -import org.hamcrest.Matchers; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -/** - * Test case for {@link SafeMojo}. - * - * @since 0.1 - */ -@ExtendWith(MktmpResolver.class) -final class SafeMojoTest { - - @Test - @CaptureLogs - void logsStackTrace(final Logs out, @Mktmp final Path temp) { - Assertions.assertDoesNotThrow( - () -> new FakeMaven(temp) - .withProgram("something > is definitely wrong here") - .execute(new FakeMaven.Parse()), - CatalogsTest.TO_ADD_MESSAGE - ); - MatcherAssert.assertThat( - CatalogsTest.TO_ADD_MESSAGE, - String.join("\n", out.captured()), - Matchers.containsString("Failed to parse") - ); - } - -} diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/log/CaptureLogs.java b/eo-maven-plugin/src/test/java/org/eolang/maven/log/CaptureLogs.java deleted file mode 100644 index fb88560d00..0000000000 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/log/CaptureLogs.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2016-2025 Objectionary.com - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package org.eolang.maven.log; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import java.util.Enumeration; -import org.apache.log4j.Appender; -import org.apache.log4j.ConsoleAppender; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; -import org.apache.log4j.spi.LoggingEvent; -import org.junit.jupiter.api.extension.AfterEachCallback; -import org.junit.jupiter.api.extension.BeforeEachCallback; -import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.jupiter.api.extension.ParameterContext; -import org.junit.jupiter.api.extension.ParameterResolver; - -/** - * Captured logs annotation for tests. - * @todo #2896:90min Make '@CaptureLogs' thread-safe. - * 'Logs' should contain only messages related to the test. - * Currently, '@CaptureLogs' appends all messages that - * were logged via 'Logger' to 'Logs', so messages from - * other tests (run in parallel) are also included, which causes - * problems when tests are run in parallel. - */ -@Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) -@ExtendWith(CaptureLogs.CaptureLogsExtension.class) -@SuppressWarnings("JTCOP.RuleAllTestsHaveProductionClass") -public @interface CaptureLogs { - - /** - * JUnit extension to capture log messages. - * - * @since 0.30 - */ - final class CaptureLogsExtension implements - ParameterResolver, BeforeEachCallback, AfterEachCallback { - - /** - * Logs. - */ - private final Logs logs; - - /** - * Appender. - */ - private final CaptureLogsAppender appender; - - /** - * Ctor. - */ - CaptureLogsExtension() { - this(new Logs()); - } - - /** - * Ctor. - * @param logs Where to save logs from the appender. - */ - private CaptureLogsExtension(final Logs logs) { - this(logs, new CaptureLogsAppender(logs)); - } - - /** - * Ctor. - * @param logs Where to save logs from the appender. - * @param appender Appender to use. - */ - private CaptureLogsExtension(final Logs logs, final CaptureLogsAppender appender) { - this.logs = logs; - this.appender = appender; - } - - @Override - public void beforeEach(final ExtensionContext context) { - this.appender.init(); - } - - @Override - public void afterEach(final ExtensionContext context) { - this.appender.destroy(); - } - - @Override - public boolean supportsParameter( - final ParameterContext param, - final ExtensionContext extension - ) { - return param.getParameter().getType() == Logs.class; - } - - @Override - public Object resolveParameter( - final ParameterContext param, - final ExtensionContext extension - ) { - return this.logs; - } - } - - /** - * Log4j logger appender. - * - * @since 0.30 - */ - final class CaptureLogsAppender extends ConsoleAppender { - - /** - * Where to save logs from the appender. - */ - private final Logs logs; - - /** - * Ctor. - * @param logs Where to save logs from the appender. - */ - CaptureLogsAppender(final Logs logs) { - this.logs = logs; - } - - @Override - public void append(final LoggingEvent event) { - this.logs.append(this.getLayout().format(event)); - } - - /** - * Initialize the appender. - * Adds appender to the root logger. - */ - void init() { - final Logger logger = LogManager.getRootLogger(); - final Enumeration appenders = logger.getAllAppenders(); - if (appenders.hasMoreElements()) { - final Object next = appenders.nextElement(); - if (next instanceof ConsoleAppender) { - this.setLayout(((Appender) next).getLayout()); - } - } - logger.addAppender(this); - this.logs.waitForInit(); - } - - /** - * Destroy the appender. - * Removes appender from the root logger. - */ - void destroy() { - LogManager.getRootLogger().removeAppender(this); - } - } -} diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/log/Logs.java b/eo-maven-plugin/src/test/java/org/eolang/maven/log/Logs.java deleted file mode 100644 index d660589705..0000000000 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/log/Logs.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2016-2025 Objectionary.com - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package org.eolang.maven.log; - -import com.jcabi.log.Logger; -import java.util.Collection; -import java.util.Collections; -import java.util.Optional; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -/** - * Captured logs. - * - * @since 0.30 - */ -@SuppressWarnings({"JTCOP.RuleAllTestsHaveProductionClass", "JTCOP.RuleCorrectTestName"}) -public final class Logs { - - /** - * Captured logs. - */ - private final Collection container; - - /** - * Ctor. - */ - Logs() { - this(new ConcurrentLinkedQueue<>()); - } - - /** - * Ctor. - * @param collection Captured logs. - */ - private Logs(final Collection collection) { - this.container = collection; - } - - /** - * Return all captured logs up to this point. - * @return Captured logs. - */ - public Collection captured() { - return Collections.unmodifiableCollection(this.container); - } - - /** - * Since logging is usually asynchronous, we need to wait for the message to appear in the - * output. Moreover, logging system can take extra time to initialize. - * @param message Expected part of the message - * @return Logged message with formatting - */ - public String waitForMessage(final String message) { - return this.waitForMessage( - message, - () -> { - } - ); - } - - /** - * Waits until the logger is initialized. - * If that method is finished it means that loggers are initialized. - */ - void waitForInit() { - final String msg = "ping"; - this.waitForMessage(msg, () -> Logger.info(this, msg)); - } - - /** - * Append log message. - * @param log Log message. - */ - void append(final String log) { - this.container.add(log); - } - - /** - * Wait for message. - * @param message Message to wait for - * @param action Action to perform before checking the message on each check iteration - * @return Logged message - */ - private String waitForMessage(final String message, final Runnable action) { - try { - return Executors.newSingleThreadExecutor().submit( - () -> { - while (true) { - action.run(); - final Optional full = this.container.stream() - .filter(s -> s.contains(message)) - .findFirst(); - if (full.isPresent()) { - return full.get(); - } - } - } - ).get(10, TimeUnit.SECONDS); - } catch (final InterruptedException exception) { - Thread.currentThread().interrupt(); - throw new IllegalStateException( - String.format( - "Waiting thread was interrupted, can't read '%s' msg", - message - ), - exception - ); - } catch (final ExecutionException exception) { - throw new IllegalStateException( - String.format( - "Some problem happened, can't read '%s' msg", - message - ), - exception - ); - } catch (final TimeoutException exception) { - throw new IllegalStateException( - String.format( - "Timeout limit exceed to read msg %s, current set of captured logs: %s", - message, - this.container - ), - exception - ); - } - } -} diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/log/package-info.java b/eo-maven-plugin/src/test/java/org/eolang/maven/log/package-info.java deleted file mode 100644 index ca77c3923e..0000000000 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/log/package-info.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2016-2025 Objectionary.com - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -/** - * The package for log capturing during unit tests. - * Includes JUnit extension and a logger appender. - * - * @since 0.30 - */ -package org.eolang.maven.log; diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/util/HmOptionalTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/util/HmOptionalTest.java index ff5b6753be..b33c609d31 100644 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/util/HmOptionalTest.java +++ b/eo-maven-plugin/src/test/java/org/eolang/maven/util/HmOptionalTest.java @@ -32,8 +32,6 @@ import org.cactoos.text.Randomized; import org.cactoos.text.TextOf; import org.cactoos.text.UncheckedText; -import org.eolang.maven.log.CaptureLogs; -import org.eolang.maven.log.Logs; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; import org.junit.jupiter.api.Assertions; @@ -99,34 +97,6 @@ void savesIfFileExistsAndRewriteTrue(@Mktmp final Path dir) throws IOException { ); } - @Test - @CaptureLogs - void savesIfFileExistsAndRewriteFalse( - @Mktmp final Path dir, - final Logs out) throws IOException { - final String first = new UncheckedText(new Randomized(this.size)).asString(); - final Path file = Paths.get(this.sample); - final HmBase base = new HmBase(dir); - base.save(first, file); - final HmOptional optional = new HmOptional(base, false); - final String second = new UncheckedText(new Randomized(this.size)).asString(); - optional.save(second, file); - final Path absolute = dir.resolve(file); - MatcherAssert.assertThat( - "The first file shouldn't be rewritten.", - new UncheckedText(new TextOf(absolute)).asString(), - Matchers.is(first) - ); - Assertions.assertTrue( - out.captured().stream().anyMatch( - log -> log.contains( - String.format("Rewriting of the %s file was skipped", absolute) - ) - ), - "When user tries to rewrite a file, a log should be shown." - ); - } - @Test void exists(@Mktmp final Path dir) throws IOException { final Path file = Paths.get(this.sample); diff --git a/eo-maven-plugin/src/test/resources/log4j.properties b/eo-maven-plugin/src/test/resources/log4j.properties index 688203f165..c8d557433c 100644 --- a/eo-maven-plugin/src/test/resources/log4j.properties +++ b/eo-maven-plugin/src/test/resources/log4j.properties @@ -26,28 +26,5 @@ log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=com.jcabi.log.MulticolorLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss} [%p] %c: %m%n -log4j.logger.org.eolang=INFO -log4j.logger.org.eolang.maven.log.Logs=INFO -log4j.logger.com.yegor256.Jaxec=WARN -log4j.logger.com.yegor256.farea=WARN -log4j.logger.org.eolang.parser.Syntax=WARN -log4j.logger.org.eolang.maven.PlaceMojo=WARN -log4j.logger.org.eolang.maven.DiscoverMojo=WARN -log4j.logger.org.eolang.maven.RegisterMojo=WARN -log4j.logger.org.eolang.maven.CleanMojo=WARN -log4j.logger.org.eolang.maven.PhiMojo=WARN -log4j.logger.org.eolang.maven.ShakeMojo=WARN -log4j.logger.org.eolang.maven.UnphiMojo=WARN -log4j.logger.org.eolang.maven.LintMojo=INFO -log4j.logger.org.eolang.maven.ParseMojo=WARN -log4j.logger.org.eolang.maven.PrintMojo=WARN -log4j.logger.org.eolang.maven.OyIndexed=ERROR -log4j.logger.com.jcabi.log.VerboseProcess=WARN -log4j.logger.org.eolang.parser.EoSyntax=WARN -log4j.logger.org.eolang.parser.Program=WARN -log4j.logger.org.eolang.maven.SodgMojo=WARN -log4j.logger.org.eolang.maven.SodgMojoTest=WARN -log4j.logger.org.eolang.maven.TargetSpy=WARN -log4j.logger.org.eolang.parser.Scenario=WARN -log4j.logger.org.eolang.maven.Save=WARN -log4j.logger.com.yegor256.xsline.Xsline=WARN +log4j.logger.com.yegor256.farea=OFF +log4j.logger.org.eolang=OFF diff --git a/eo-maven-plugin/src/test/resources/org/eolang/maven/mess.eo b/eo-maven-plugin/src/test/resources/org/eolang/maven/mess.eo index 8cce0e0fc2..83d66c4e5b 100644 --- a/eo-maven-plugin/src/test/resources/org/eolang/maven/mess.eo +++ b/eo-maven-plugin/src/test/resources/org/eolang/maven/mess.eo @@ -27,7 +27,10 @@ +tests +package org.eolang.examples +version 0.0.0 ++unlint atom-is-not-unique +unlint broken-ref ++unlint incorrect-alias ++unlint object-is-not-unique 3.14 > pi