diff options
author | antoine.vinot <antoine.vinot@sonarsource.com> | 2025-02-06 16:08:09 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2025-02-19 20:03:12 +0000 |
commit | 04b0453797b06c53fc9092c2961e5f24c10ebc28 (patch) | |
tree | a7cb9f018ec5a7209ed4a451d1f59e428ba30166 /sonar-scanner-engine/src/test/java | |
parent | 01f820ffb2911d754d1b45ce3dcfdf997db53ce0 (diff) | |
download | sonarqube-04b0453797b06c53fc9092c2961e5f24c10ebc28.tar.gz sonarqube-04b0453797b06c53fc9092c2961e5f24c10ebc28.zip |
SONAR-24317 Move ProcessWrapperFactory to sonar-core
Diffstat (limited to 'sonar-scanner-engine/src/test/java')
5 files changed, 5 insertions, 89 deletions
diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandIT.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandIT.java index 9f4e0b11e7b..775fe3d05b2 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandIT.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandIT.java @@ -47,6 +47,7 @@ import org.sonar.api.batch.scm.BlameLine; import org.sonar.api.notifications.AnalysisWarnings; import org.sonar.api.scan.filesystem.PathResolver; import org.sonar.api.utils.System2; +import org.sonar.core.util.ProcessWrapperFactory; import org.sonar.scm.git.strategy.DefaultBlameStrategy.BlameAlgorithmEnum; import static org.assertj.core.api.Assertions.assertThat; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandTest.java index 87c456dbf69..a1a4cae8b4d 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandTest.java @@ -54,6 +54,7 @@ import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.DateUtils; import org.sonar.api.utils.MessageException; import org.sonar.api.utils.System2; +import org.sonar.core.util.ProcessWrapperFactory; import org.sonar.scm.git.strategy.BlameStrategy; import org.sonar.scm.git.strategy.DefaultBlameStrategy.BlameAlgorithmEnum; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/GitScmProviderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/GitScmProviderTest.java index b7c99187971..058c274013d 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/GitScmProviderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/GitScmProviderTest.java @@ -61,6 +61,7 @@ import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.MessageException; import org.sonar.api.utils.System2; import org.sonar.core.documentation.DocumentationLinkGenerator; +import org.sonar.core.util.ProcessWrapperFactory; import org.sonar.scm.git.strategy.DefaultBlameStrategy; import static java.lang.String.format; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/NativeGitBlameCommandTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/NativeGitBlameCommandTest.java index ba33e8d420a..68b7e1b7bd2 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/NativeGitBlameCommandTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/NativeGitBlameCommandTest.java @@ -40,7 +40,8 @@ import org.sonar.api.batch.scm.BlameLine; import org.sonar.api.testfixtures.log.LogTesterJUnit5; import org.sonar.api.utils.DateUtils; import org.sonar.api.utils.System2; -import org.sonar.scm.git.ProcessWrapperFactory.ProcessWrapper; +import org.sonar.core.util.ProcessWrapperFactory; +import org.sonar.core.util.ProcessWrapperFactory.ProcessWrapper; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/ProcessWrapperFactoryTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/ProcessWrapperFactoryTest.java deleted file mode 100644 index 5be38fd898c..00000000000 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/ProcessWrapperFactoryTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2025 SonarSource SA - * mailto:info AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.scm.git; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardOpenOption; -import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.SystemUtils; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; -import org.junit.jupiter.api.io.TempDir; -import org.slf4j.event.Level; -import org.sonar.api.testfixtures.log.LogTesterJUnit5; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatCode; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -class ProcessWrapperFactoryTest { - - @RegisterExtension - private final LogTesterJUnit5 logTester = new LogTesterJUnit5(); - private final ProcessWrapperFactory underTest = new ProcessWrapperFactory(); - - @Test - void should_log_error_output_in_debug_mode(@TempDir Path root) { - logTester.setLevel(Level.DEBUG); - var processWrapper = underTest.create(root, v -> { - }, Map.of("LANG", "en_US"), "git", "blame"); - assertThatThrownBy(processWrapper::execute) - .isInstanceOf(IllegalStateException.class); - - assertThat(logTester.logs(Level.DEBUG).get(0)).startsWith("[stderr] fatal:"); - } - - // SONAR-24376 - @Test - void should_not_freeze_when_destroying_in_the_middle_of_big_stdout_stdin(@TempDir Path temp) throws IOException { - var bigFile = temp.resolve("stdout.txt"); - for (int i = 0; i < 1024; i++) { - Files.writeString(bigFile, StringUtils.repeat("a", 1024), StandardCharsets.UTF_8, StandardOpenOption.APPEND, StandardOpenOption.CREATE); - Files.writeString(bigFile, "\n", StandardCharsets.UTF_8, StandardOpenOption.APPEND); - } - - var stdoutHandler = new DestroyProcessAfter10Lines(); - - var processWrapper = underTest.create(temp, stdoutHandler::process, Map.of(), SystemUtils.IS_OS_WINDOWS ? "cmd.exe" : "cat", SystemUtils.IS_OS_WINDOWS ? "/c type stdout.txt" : "stdout.txt"); - stdoutHandler.wrapper = processWrapper; - - assertThatCode(processWrapper::execute).doesNotThrowAnyException(); - // A few lines might be processed before the process is destroyed - assertThat(stdoutHandler.lineCounter.get()).isGreaterThanOrEqualTo(10); - } - - private static class DestroyProcessAfter10Lines { - private ProcessWrapperFactory.ProcessWrapper wrapper; - private final AtomicInteger lineCounter = new AtomicInteger(); - - void process(String line) { - if (lineCounter.incrementAndGet() == 10) { - wrapper.destroy(); - } - } - } - -} |