Skip to content

Commit 417d4b2

Browse files
committed
Do not throw an exception when exit code != 0
1 parent 3b35b51 commit 417d4b2

7 files changed

Lines changed: 19 additions & 17 deletions

File tree

lib/src/main/java/org/sonarsource/scanner/lib/InProcessScannerEngineFacade.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,9 @@ class InProcessScannerEngineFacade extends ScannerEngineFacade {
3535
}
3636

3737
@Override
38-
void doAnalyze(Map<String, String> allProps) {
38+
boolean doAnalyze(Map<String, String> allProps) {
3939
launcherAndCl.getLauncher().execute(allProps, new Slf4jLogOutputAdapter());
40+
return true;
4041
}
4142

4243
@Override

lib/src/main/java/org/sonarsource/scanner/lib/NewScannerEngineFacade.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ class NewScannerEngineFacade extends ScannerEngineFacade {
3333
}
3434

3535
@Override
36-
void doAnalyze(Map<String, String> allProps) {
37-
launcher.execute(allProps);
36+
boolean doAnalyze(Map<String, String> allProps) {
37+
return launcher.execute(allProps);
3838
}
3939

4040
@Override

lib/src/main/java/org/sonarsource/scanner/lib/ScannerEngineFacade.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ public boolean isSonarCloud() {
5252
return isSonarCloud;
5353
}
5454

55-
public void analyze(Map<String, String> analysisProps) {
55+
public boolean analyze(Map<String, String> analysisProps) {
5656
Map<String, String> allProps = new HashMap<>();
5757
allProps.putAll(bootstrapProperties);
5858
allProps.putAll(analysisProps);
5959
initAnalysisProperties(allProps);
6060
addStatsProperties(allProps);
61-
doAnalyze(allProps);
61+
return doAnalyze(allProps);
6262
}
6363

6464
private void addStatsProperties(Map<String, String> allProps) {
@@ -68,7 +68,7 @@ private void addStatsProperties(Map<String, String> allProps) {
6868
allProps.put("sonar.scanner.wasEngineCacheHit", String.valueOf(wasEngineCacheHit));
6969
}
7070

71-
abstract void doAnalyze(Map<String, String> allProps);
71+
abstract boolean doAnalyze(Map<String, String> allProps);
7272

7373
private static void initAnalysisProperties(Map<String, String> p) {
7474
new Dirs().init(p);

lib/src/main/java/org/sonarsource/scanner/lib/SimulationScannerEngineFacade.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,11 @@ class SimulationScannerEngineFacade extends ScannerEngineFacade {
4343
}
4444

4545
@Override
46-
void doAnalyze(Map<String, String> allProps) {
46+
boolean doAnalyze(Map<String, String> allProps) {
4747
String filePath = allProps.get(InternalProperties.SCANNER_DUMP_TO_FILE);
4848
writeProperties(filePath, allProps);
4949
LOG.info("Simulation mode. Configuration written to {}", new File(filePath).getAbsolutePath());
50+
return true;
5051
}
5152

5253
private static void writeProperties(String filePath, Map<String, String> p) {

lib/src/main/java/org/sonarsource/scanner/lib/internal/JavaRunner.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public JreCacheHit getJreCacheHit() {
5050
return jreCacheHit;
5151
}
5252

53-
public void execute(List<String> args, @Nullable String input) {
53+
public boolean execute(List<String> args, @Nullable String input) {
5454
try {
5555
List<String> command = new ArrayList<>(args);
5656
command.add(0, javaExecutable.toString());
@@ -69,8 +69,10 @@ public void execute(List<String> args, @Nullable String input) {
6969
stdoutConsummer.join();
7070
stdErrConsummer.join();
7171
if (exitCode != 0) {
72-
throw new IllegalStateException("Error returned by the Java command execution: " + process.exitValue());
72+
LOG.debug("Java command exited with code {}", process.exitValue());
73+
return false;
7374
}
75+
return true;
7476
} catch (IOException | InterruptedException e) {
7577
Thread.currentThread().interrupt();
7678
throw new IllegalStateException("Failed to run the Java command", e);

lib/src/main/java/org/sonarsource/scanner/lib/internal/ScannerEngineLauncher.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,8 @@ public ScannerEngineLauncher(JavaRunner javaRunner, CachedFile scannerEngineJar)
4545
this.scannerEngineJar = scannerEngineJar;
4646
}
4747

48-
public void execute(Map<String, String> properties) {
49-
LOG.info("Starting scanner-engine");
50-
javaRunner.execute(buildArgs(properties), buildJsonProperties(properties));
48+
public boolean execute(Map<String, String> properties) {
49+
return javaRunner.execute(buildArgs(properties), buildJsonProperties(properties));
5150
}
5251

5352
private List<String> buildArgs(Map<String, String> properties) {

lib/src/test/java/org/sonarsource/scanner/lib/internal/JavaRunnerTest.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ void execute_shouldLogProcessOutput() {
4141
runner.execute(List.of("--version"), "test");
4242
assertThat(logTester.logs(Level.INFO)).isNotEmpty().allMatch(s -> s.startsWith("[stdout] "));
4343

44-
runner.execute(List.of("-version"), null);
44+
assertThat(runner.execute(List.of("-version"), null)).isTrue();
45+
4546
assertThat(logTester.logs(Level.ERROR)).isNotEmpty().allMatch(s -> s.startsWith("[stderr] "));
4647
}
4748

@@ -55,12 +56,10 @@ void execute_whenInvalidRunner_shouldFail() {
5556
}
5657

5758
@Test
58-
void execute_shouldFailWhenBadRunner() {
59+
void execute_shouldReturnFalseWhenNonZeroExitCode() {
5960
JavaRunner runner = new JavaRunner(Paths.get("java"), JreCacheHit.DISABLED);
6061
List<String> command = List.of("unknown-command");
61-
assertThatThrownBy(() -> runner.execute(command, "test"))
62-
.isInstanceOf(IllegalStateException.class)
63-
.hasMessageContaining("Error returned by the Java command execution");
62+
assertThat(runner.execute(command, "test")).isFalse();
6463
}
6564

6665
@Test

0 commit comments

Comments
 (0)