// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.base.test.util;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * The java instrumentation tests are normally fairly large (in terms of
 * dependencies), and the test suite ends up containing a large amount of
 * tests that are not trivial to filter / group just by their names.
 * Instead, we use this annotation: each test should be annotated as:
 *     @Feature({"Foo", "Bar"})
 * in order for the test runner scripts to be able to filter and group
 * them accordingly (for instance, this enable us to run all tests that exercise
 * feature Foo).
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Feature {
    /**
     * @return A list of feature names.
     */
    public String[] value();
}
