blob: e8611542d6ec7027fe8eebf5a7202dc198ffa504 [file] [log] [blame]
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.tradefed.util;
import static org.junit.Assert.assertEquals;
import com.android.tradefed.config.ConfigurationDescriptor;
import com.android.tradefed.config.ConfigurationDescriptor.LocalTestRunner;
import com.android.tradefed.config.OptionDef;
import com.android.tradefed.result.TestDescription;
import com.android.tradefed.testtype.Abi;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
/** Unit tests for {@link LocalRunInstructionBuilder} */
@RunWith(JUnit4.class)
public class LocalRunInstructionBuilderTest {
private static final String OPTION_NAME = "option";
private static final String OPTION_KEY = "key";
private static final String OPTION_VALUE = "value";
private static final String OPTION_NAME_ONLY = "option_only";
private static final String OPTION_VALUE_ONLY = "value_only";
private static final String OPTION_SOURCE = "module_name";
private static final String CLASS_NAME = "class_name";
private static final String METHOD_NAME = "method_name";
private static final String METHOD_NAME_WITH_PARAMETER = "method_name[parameter_value]";
private static final String ABI_NAME = "arm";
/**
* test {@link LocalRunInstructionBuilder#getInstruction(ConfigurationDescriptor,
* LocalTestRunner, TestDescription)}
*/
@Test
public void testGetInstruction() {
ConfigurationDescriptor configDescriptor = new ConfigurationDescriptor();
configDescriptor.addRerunOption(
new OptionDef(OPTION_NAME, OPTION_KEY, OPTION_VALUE, OPTION_SOURCE));
configDescriptor.addRerunOption(
new OptionDef(OPTION_NAME_ONLY, null, OPTION_VALUE_ONLY, OPTION_SOURCE));
configDescriptor.setAbi(new Abi(ABI_NAME, "32"));
configDescriptor.setModuleName(OPTION_SOURCE);
String instruction =
LocalRunInstructionBuilder.getInstruction(
configDescriptor, LocalTestRunner.ATEST, null);
assertEquals(
"Run following command to try the test in a local setup:\n"
+ "atest module_name -- --abi arm "
+ "--module-arg module_name:option:key:=value "
+ "--module-arg module_name:option_only:value_only",
instruction);
}
/**
* test {@link LocalRunInstructionBuilder#getInstruction(ConfigurationDescriptor,
* LocalTestRunner, TestDescription)} with TestId specified.
*/
@Test
public void testGetInstruction_withTestId() {
ConfigurationDescriptor configDescriptor = new ConfigurationDescriptor();
configDescriptor.setAbi(new Abi(ABI_NAME, "32"));
configDescriptor.setModuleName(OPTION_SOURCE);
TestDescription testId = new TestDescription(CLASS_NAME, METHOD_NAME);
String instruction =
LocalRunInstructionBuilder.getInstruction(
configDescriptor, LocalTestRunner.ATEST, testId);
assertEquals(
"Run following command to try the test in a local setup:\n"
+ "atest module_name:class_name#method_name -- --abi arm",
instruction);
}
/**
* test {@link LocalRunInstructionBuilder#getInstruction(ConfigurationDescriptor,
* LocalTestRunner, TestDescription)} with TestId specified which contains parameter for test
* method.
*/
@Test
public void testGetInstruction_withTestIdAndParameter() {
ConfigurationDescriptor configDescriptor = new ConfigurationDescriptor();
configDescriptor.setAbi(new Abi(ABI_NAME, "32"));
configDescriptor.setModuleName(OPTION_SOURCE);
TestDescription testId = new TestDescription(CLASS_NAME, METHOD_NAME_WITH_PARAMETER);
String instruction =
LocalRunInstructionBuilder.getInstruction(
configDescriptor, LocalTestRunner.ATEST, testId);
assertEquals(
"Run following command to try the test in a local setup:\n"
+ "atest module_name:class_name -- --abi arm",
instruction);
}
/** Test when a parameterized module needs to be repro. */
@Test
public void testGetInstruction_withParameter() {
ConfigurationDescriptor configDescriptor = new ConfigurationDescriptor();
configDescriptor.setAbi(new Abi(ABI_NAME, "32"));
configDescriptor.setModuleName(OPTION_SOURCE);
configDescriptor.addMetadata(ConfigurationDescriptor.ACTIVE_PARAMETER_KEY, "instant");
String instruction =
LocalRunInstructionBuilder.getInstruction(
configDescriptor, LocalTestRunner.ATEST, null);
assertEquals(
"Run following command to try the test in a local setup:\n"
+ "atest module_name -- --abi arm --instant",
instruction);
}
}