blob: 2cbd60a1f1187f53ca0100bcbc6125ed8f9fe746 [file] [log] [blame]
// Copyright (c) 2017, 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.internal;
import com.android.tools.r8.CompilationException;
import com.android.tools.r8.CompilationMode;
import com.android.tools.r8.D8Command;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.shaking.ProguardRuleParserException;
import com.android.tools.r8.utils.AndroidApp;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.concurrent.ExecutionException;
import org.junit.Test;
public class D8FrameworkDeterministicTest extends CompilationTestBase {
private static final int MIN_SDK = 24;
private static final String JAR = "third_party/framework/framework_160115954.jar";
private AndroidApp doRun(D8Command command) throws IOException, CompilationException {
return ToolHelper.runD8(command);
}
@Test
public void verifyDebugBuild()
throws ExecutionException, IOException, ProguardRuleParserException, CompilationException {
D8Command command = D8Command.builder()
.addProgramFiles(Paths.get(JAR))
.setMode(CompilationMode.DEBUG)
.setMinApiLevel(MIN_SDK)
.build();
AndroidApp app1 = doRun(command);
AndroidApp app2 = doRun(command);
assertIdenticalApplications(app1, app2);
}
@Test
public void verifyReleaseBuild()
throws ExecutionException, IOException, ProguardRuleParserException, CompilationException {
D8Command command = D8Command.builder()
.addProgramFiles(Paths.get(JAR))
.setMode(CompilationMode.RELEASE)
.setMinApiLevel(MIN_SDK)
.build();
AndroidApp app1 = doRun(command);
AndroidApp app2 = doRun(command);
assertIdenticalApplications(app1, app2);
}
}