blob: b80b93203da1328cfda0cb1c9e66df629f0e7e30 [file] [log] [blame]
// Copyright (c) 2016, 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 static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.MatcherAssert.assertThat;
import com.android.tools.r8.utils.FileUtils;
import com.google.common.collect.ImmutableList;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import org.hamcrest.Matcher;
public abstract class ChromeCompilationBase extends CompilationTestBase {
static final String LIBRARY_JAR = "library.jar";
static final String PROGRAM_JAR = "program.jar";
static final String PROGUARD_CONFIG = "proguard.config";
final String base;
public ChromeCompilationBase(int version, boolean minimal) {
this.base =
"third_party/chrome/"
+ (minimal ? "monochrome_public_minimal_apks/" : "")
+ "chrome_"
+ version
+ "/";
}
protected List<Path> getKeepRuleFiles() {
ImmutableList.Builder<Path> builder = ImmutableList.builder();
builder.add(Paths.get(base).resolve(PROGUARD_CONFIG));
return builder.build();
}
protected List<Path> getLibraryFiles() throws IOException {
assert verifyNoLibraryJarsInProguardConfig();
List<Path> result = ImmutableList.of(Paths.get(base).resolve(LIBRARY_JAR));
assert result.stream().allMatch(path -> path.toFile().exists());
return result;
}
protected List<Path> getProgramFiles() throws IOException {
assert verifyNoInJarsInProguardConfig();
List<Path> result = ImmutableList.of(Paths.get(base).resolve(PROGRAM_JAR));
assert result.stream().allMatch(path -> path.toFile().exists());
return result;
}
private boolean verifyNoInJarsInProguardConfig() throws IOException {
return verifyAllLinesInKeepRuleFilesMatch(not(containsString("-injars")));
}
private boolean verifyNoLibraryJarsInProguardConfig() throws IOException {
return verifyAllLinesInKeepRuleFilesMatch(not(containsString("-libraryjars")));
}
private boolean verifyAllLinesInKeepRuleFilesMatch(Matcher<String> matcher) throws IOException {
for (Path keepRuleFile : getKeepRuleFiles()) {
for (String line : FileUtils.readAllLines(keepRuleFile)) {
assertThat(line, matcher);
}
}
return true;
}
}