diff options
Diffstat (limited to 'src/test')
11 files changed, 46 insertions, 44 deletions
diff --git a/src/test/java/org/sonar/api/utils/MessageException.java b/src/test/java/org/sonar/api/utils/MessageException.java index e388c9d..b4fcc5f 100644 --- a/src/test/java/org/sonar/api/utils/MessageException.java +++ b/src/test/java/org/sonar/api/utils/MessageException.java @@ -1,6 +1,6 @@ /* * SonarScanner CLI - * Copyright (C) 2011-2024 SonarSource SA + * Copyright (C) 2011-2025 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or diff --git a/src/test/java/org/sonarsource/scanner/cli/CliTest.java b/src/test/java/org/sonarsource/scanner/cli/CliTest.java index 5cb05d8..dcf84d7 100644 --- a/src/test/java/org/sonarsource/scanner/cli/CliTest.java +++ b/src/test/java/org/sonarsource/scanner/cli/CliTest.java @@ -1,6 +1,6 @@ /* * SonarScanner CLI - * Copyright (C) 2011-2024 SonarSource SA + * Copyright (C) 2011-2025 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or diff --git a/src/test/java/org/sonarsource/scanner/cli/ConfTest.java b/src/test/java/org/sonarsource/scanner/cli/ConfTest.java index 82bd955..0c737b5 100644 --- a/src/test/java/org/sonarsource/scanner/cli/ConfTest.java +++ b/src/test/java/org/sonarsource/scanner/cli/ConfTest.java @@ -1,6 +1,6 @@ /* * SonarScanner CLI - * Copyright (C) 2011-2024 SonarSource SA + * Copyright (C) 2011-2025 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or @@ -289,4 +289,13 @@ class ConfTest { assertThat(properties).containsEntry("sonar.prop", "expected"); } + @Test + void should_handle_non_latin_characters() throws Exception { + Path home = Paths.get(getClass().getResource("ConfTest/shouldHandleNonLatinChars/project").toURI()); + args.setProperty("project.home", home.toAbsolutePath().toString()); + + Properties properties = conf.properties(); + assertThat(properties).containsEntry("project.nonlatin", "Non Latin ÇŞĞIİÖÜ"); + } + } diff --git a/src/test/java/org/sonarsource/scanner/cli/MainTest.java b/src/test/java/org/sonarsource/scanner/cli/MainTest.java index 48b2ed3..7186558 100644 --- a/src/test/java/org/sonarsource/scanner/cli/MainTest.java +++ b/src/test/java/org/sonarsource/scanner/cli/MainTest.java @@ -1,6 +1,6 @@ /* * SonarScanner CLI - * Copyright (C) 2011-2024 SonarSource SA + * Copyright (C) 2011-2025 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or @@ -30,6 +30,7 @@ import org.mockito.Mockito; import org.slf4j.LoggerFactory; import org.slf4j.event.Level; import org.sonar.api.utils.MessageException; +import org.sonarsource.scanner.lib.ScannerEngineBootstrapResult; import org.sonarsource.scanner.lib.ScannerEngineBootstrapper; import org.sonarsource.scanner.lib.ScannerEngineFacade; import org.sonarsource.scanner.lib.ScannerProperties; @@ -56,11 +57,14 @@ class MainTest { private final ScannerEngineBootstrapperFactory scannerEngineBootstrapperFactory = mock(); private final ScannerEngineBootstrapper bootstrapper = mock(); private final ScannerEngineFacade engine = mock(); + private final ScannerEngineBootstrapResult result = mock(); @BeforeEach void setUp() { when(scannerEngineBootstrapperFactory.create(any(Properties.class), any(String.class))).thenReturn(bootstrapper); - when(bootstrapper.bootstrap()).thenReturn(engine); + when(result.isSuccessful()).thenReturn(true); + when(result.getEngineFacade()).thenReturn(engine); + when(bootstrapper.bootstrap()).thenReturn(result); when(engine.analyze(any())).thenReturn(true); when(conf.properties()).thenReturn(properties); } @@ -79,7 +83,7 @@ class MainTest { } @Test - void should_exit_with_error_on_error_during_analysis() { + void should_exit_with_error_on_exception_during_analysis() { Exception e = new NullPointerException("NPE"); e = new IllegalStateException("Error", e); doThrow(e).when(engine).analyze(any()); @@ -94,9 +98,7 @@ class MainTest { @Test void should_exit_with_error_on_error_during_bootstrap() { - Exception e = new NullPointerException("NPE"); - e = new IllegalStateException("Error", e); - doThrow(e).when(bootstrapper).bootstrap(); + when(result.isSuccessful()).thenReturn(false); when(cli.getInvokedFrom()).thenReturn(""); when(cli.isDebugEnabled()).thenReturn(true); @@ -106,7 +108,21 @@ class MainTest { verify(bootstrapper).bootstrap(); verify(engine, never()).analyze(any()); verify(exit).exit(Exit.INTERNAL_ERROR); - assertThat(logTester.logs(Level.ERROR)).contains("Error during SonarScanner CLI execution"); + assertThat(logTester.logs(Level.INFO)).contains("EXECUTION FAILURE"); + } + + @Test + void should_exit_with_error_on_error_during_analysis() { + when(engine.analyze(any())).thenReturn(false); + when(cli.getInvokedFrom()).thenReturn(""); + when(cli.isDebugEnabled()).thenReturn(true); + + Main main = new Main(exit, cli, conf, scannerEngineBootstrapperFactory); + main.analyze(); + + verify(bootstrapper).bootstrap(); + verify(exit).exit(Exit.SCANNER_ENGINE_ERROR); + assertThat(logTester.logs(Level.INFO)).contains("EXECUTION FAILURE"); } @Test @@ -227,32 +243,6 @@ class MainTest { } @Test - void shouldLogServerVersion() { - when(engine.isSonarCloud()).thenReturn(false); - when(engine.getServerVersion()).thenReturn("5.5"); - Properties p = new Properties(); - when(cli.isDisplayVersionOnly()).thenReturn(true); - when(cli.getInvokedFrom()).thenReturn(""); - when(conf.properties()).thenReturn(p); - - Main main = new Main(exit, cli, conf, scannerEngineBootstrapperFactory); - main.analyze(); - assertThat(logTester.logs(Level.INFO)).contains("Communicating with SonarQube Server 5.5"); - } - - @Test - void should_log_SonarCloud_server() { - when(engine.isSonarCloud()).thenReturn(true); - Properties p = new Properties(); - when(conf.properties()).thenReturn(p); - when(cli.getInvokedFrom()).thenReturn(""); - - Main main = new Main(exit, cli, conf, scannerEngineBootstrapperFactory); - main.analyze(); - assertThat(logTester.logs(Level.INFO)).contains("Communicating with SonarCloud"); - } - - @Test void should_configure_logging() { Properties analysisProps = testLogging("sonar.verbose", "true"); assertThat(analysisProps.getProperty("sonar.verbose")).isEqualTo("true"); diff --git a/src/test/java/org/sonarsource/scanner/cli/PropertyResolverTest.java b/src/test/java/org/sonarsource/scanner/cli/PropertyResolverTest.java index a22f9f6..f5c2792 100644 --- a/src/test/java/org/sonarsource/scanner/cli/PropertyResolverTest.java +++ b/src/test/java/org/sonarsource/scanner/cli/PropertyResolverTest.java @@ -1,6 +1,6 @@ /* * SonarScanner CLI - * Copyright (C) 2011-2024 SonarSource SA + * Copyright (C) 2011-2025 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or diff --git a/src/test/java/org/sonarsource/scanner/cli/ScannerEngineBootstrapperFactoryTest.java b/src/test/java/org/sonarsource/scanner/cli/ScannerEngineBootstrapperFactoryTest.java index c25ddb1..f1842ae 100644 --- a/src/test/java/org/sonarsource/scanner/cli/ScannerEngineBootstrapperFactoryTest.java +++ b/src/test/java/org/sonarsource/scanner/cli/ScannerEngineBootstrapperFactoryTest.java @@ -1,6 +1,6 @@ /* * SonarScanner CLI - * Copyright (C) 2011-2024 SonarSource SA + * Copyright (C) 2011-2025 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or diff --git a/src/test/java/org/sonarsource/scanner/cli/StatsTest.java b/src/test/java/org/sonarsource/scanner/cli/StatsTest.java index 174acbc..fa888a6 100644 --- a/src/test/java/org/sonarsource/scanner/cli/StatsTest.java +++ b/src/test/java/org/sonarsource/scanner/cli/StatsTest.java @@ -1,6 +1,6 @@ /* * SonarScanner CLI - * Copyright (C) 2011-2024 SonarSource SA + * Copyright (C) 2011-2025 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or diff --git a/src/test/java/org/sonarsource/scanner/cli/SystemInfoTest.java b/src/test/java/org/sonarsource/scanner/cli/SystemInfoTest.java index b372d9c..da00b00 100644 --- a/src/test/java/org/sonarsource/scanner/cli/SystemInfoTest.java +++ b/src/test/java/org/sonarsource/scanner/cli/SystemInfoTest.java @@ -1,6 +1,6 @@ /* * SonarScanner CLI - * Copyright (C) 2011-2024 SonarSource SA + * Copyright (C) 2011-2025 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or diff --git a/src/test/java/testutils/ConcurrentListAppender.java b/src/test/java/testutils/ConcurrentListAppender.java index b31e34e..f8b9ed0 100644 --- a/src/test/java/testutils/ConcurrentListAppender.java +++ b/src/test/java/testutils/ConcurrentListAppender.java @@ -1,6 +1,6 @@ /* * SonarScanner CLI - * Copyright (C) 2011-2024 SonarSource SA + * Copyright (C) 2011-2025 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or diff --git a/src/test/java/testutils/LogTester.java b/src/test/java/testutils/LogTester.java index 1708479..8a9d0f0 100644 --- a/src/test/java/testutils/LogTester.java +++ b/src/test/java/testutils/LogTester.java @@ -1,6 +1,6 @@ /* * SonarScanner CLI - * Copyright (C) 2011-2024 SonarSource SA + * Copyright (C) 2011-2025 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or @@ -28,6 +28,8 @@ import org.junit.jupiter.api.extension.ExtensionContext; import org.slf4j.LoggerFactory; import org.slf4j.event.Level; +import static java.util.stream.Collectors.*; + public class LogTester implements BeforeEachCallback, AfterEachCallback { private final ConcurrentListAppender<ILoggingEvent> listAppender = new ConcurrentListAppender<>(); @@ -55,7 +57,7 @@ public class LogTester implements BeforeEachCallback, AfterEachCallback { public List<String> logs() { return listAppender.list.stream().map(e -> (LoggingEvent) e) .map(LoggingEvent::getFormattedMessage) - .toList(); + .collect(toList()); } /** @@ -66,7 +68,7 @@ public class LogTester implements BeforeEachCallback, AfterEachCallback { return listAppender.list.stream().map(e -> (LoggingEvent) e) .filter(e -> e.getLevel().equals(ch.qos.logback.classic.Level.fromLocationAwareLoggerInteger(level.toInt()))) .map(LoggingEvent::getFormattedMessage) - .toList(); + .collect(toList()); } public LogTester clear() { diff --git a/src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldHandleNonLatinChars/project/sonar-project.properties b/src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldHandleNonLatinChars/project/sonar-project.properties new file mode 100644 index 0000000..24ced59 --- /dev/null +++ b/src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldHandleNonLatinChars/project/sonar-project.properties @@ -0,0 +1 @@ +project.nonlatin=Non Latin ÇŞĞIİÖÜ |