blob: 1a7401838c0b1ee55e8d113eeb41e2a4fabf4029 [file] [log] [blame]
// Copyright (c) 2018, 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.shaking.whyareyoukeeping;
import static org.junit.Assert.assertEquals;
import com.android.tools.r8.TestBase;
import com.google.common.collect.ImmutableList;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.nio.charset.Charset;
import org.junit.Test;
class A {
}
public class WhyAreYouKeepingTest extends TestBase {
@Test
public void test() throws Exception {
String proguardConfig = String.join("\n", ImmutableList.of(
"-keep class " + A.class.getCanonicalName() + " { *; }",
"-whyareyoukeeping class " + A.class.getCanonicalName()
));
PrintStream stdout = System.out;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
System.setOut(new PrintStream(baos));
compileWithR8(ImmutableList.of(A.class), proguardConfig);
String output = new String(baos.toByteArray(), Charset.defaultCharset());
System.setOut(stdout);
String expected = String.join(System.lineSeparator(), ImmutableList.of(
"com.android.tools.r8.shaking.whyareyoukeeping.A",
"|- is live because referenced in keep rule:",
"| -keep class com.android.tools.r8.shaking.whyareyoukeeping.A {",
"| *;",
"| };",
""));
assertEquals(expected, output);
}
}