blob: 427c25321e8a05912185ae10c26239f1d529a26d [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.naming;
import com.android.tools.r8.debug.DebugTestBase;
import com.android.tools.r8.shaking.ProguardKeepRule;
import com.google.common.collect.ImmutableList;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* Tests -renamesourcefileattribute.
*/
public class RenameSourceFileDebugTest extends DebugTestBase {
private static final String TEST_FILE = "TestFile.java";
@BeforeClass
public static void setUp() throws Exception {
setUp(
null,
pg -> {
pg.resetProguardDefaults();
pg.addRule(ProguardKeepRule.defaultKeepAllRule());
pg.setRenameSourceFileAttribute(TEST_FILE);
pg.addKeepAttributePatterns(ImmutableList.of("SourceFile", "LineNumberTable"));
});
}
/**
* replica of {@link com.android.tools.r8.debug.ClassInitializationTest#testBreakpointInEmptyClassInitializer}
*/
@Test
public void testBreakpointInEmptyClassInitializer() throws Throwable {
final String CLASS = "ClassInitializerEmpty";
runDebugTestR8(CLASS,
breakpoint(CLASS, "<clinit>"),
run(),
checkLine(TEST_FILE, 8),
run());
}
/**
* replica of {@link com.android.tools.r8.debug.LocalsTest#testNoLocal},
* except for checking overwritten class file.
*/
@Test
public void testNoLocal() throws Throwable {
final String className = "Locals";
final String methodName = "noLocals";
runDebugTestR8(className,
breakpoint(className, methodName),
run(),
checkMethod(className, methodName),
checkLine(TEST_FILE, 8),
checkNoLocal(),
stepOver(),
checkMethod(className, methodName),
checkLine(TEST_FILE, 9),
checkNoLocal(),
run());
}
/**
* replica of {@link com.android.tools.r8.debug.MultipleReturnsTest#testMultipleReturns}
*/
@Test
public void testMultipleReturns() throws Throwable {
runDebugTestR8("MultipleReturns",
breakpoint("MultipleReturns", "multipleReturns"),
run(),
stepOver(),
checkLine(TEST_FILE, 16), // this should be the 1st return statement
run(),
stepOver(),
checkLine(TEST_FILE, 18), // this should be the 2nd return statement
run());
}
}