blob: 21bebcd5e5bd66f57114b06e536b93c5a575041d [file]
// Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
import com.android.tools.r8.ToolHelper.ProcessResult;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.UncheckedApiLevel;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.internal.exceptions.Unimplemented;
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import java.util.Set;
public class ExternalR8TestCompileResult
extends TestCompileResult<ExternalR8TestCompileResult, ExternalR8TestMultiRunResult> {
private final Path outputJar;
private final ProcessResult processResult;
private final String proguardMap;
protected ExternalR8TestCompileResult(
TestState state,
Path outputJar,
ProcessResult processResult,
String proguardMap,
UncheckedApiLevel minApiLevel,
OutputMode outputMode) {
super(state, AndroidApp.builder().addProgramFiles(outputJar).build(), minApiLevel, outputMode);
assert processResult.exitCode == 0;
this.outputJar = outputJar;
this.processResult = processResult;
this.proguardMap = proguardMap;
}
public Path outputJar() {
return outputJar;
}
public String getProguardMap() {
return proguardMap;
}
@Override
public ExternalR8TestCompileResult self() {
return this;
}
@Override
public TestDiagnosticMessages getDiagnosticMessages() {
throw new UnsupportedOperationException("No diagnostics messages from external R8");
}
@Override
public Set<String> getMainDexClasses() {
throw new Unimplemented();
}
@Override
public String getStdout() {
return processResult.stdout;
}
@Override
public String getStderr() {
return processResult.stderr;
}
@Override
public CodeInspector inspector() throws IOException {
return new CodeInspector(app, proguardMap);
}
@Override
protected SingleTestRunResult createSingleRunResult(TestRuntime runtime, ProcessResult result) {
return new SingleTestRunResult(app, runtime, result, proguardMap, state);
}
@Override
protected ExternalR8TestMultiRunResult createRunResult(List<SingleTestRunResult> results) {
return new ExternalR8TestMultiRunResult(app, outputJar, proguardMap, state, results);
}
}