/*
 * Copyright 2015-2017 the original author or authors.
 *
 * All rights reserved. This program and the accompanying materials are
 * made available under the terms of the Eclipse Public License v2.0 which
 * accompanies this distribution and is available at
 *
 * http://www.eclipse.org/legal/epl-v20.html
 */

package org.junit.jupiter.api;

import static org.apiguardian.api.API.Status.STABLE;

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

import org.apiguardian.api.API;

/**
 * {@code @Tag} is a {@linkplain Repeatable repeatable} annotation that is
 * used to declare a <em>tag</em> for the annotated test class or test method.
 *
 * <p>Tags are used to filter which tests are executed for a given test
 * plan. For example, a development team may tag tests with values such as
 * {@code "fast"}, {@code "slow"}, {@code "ci-server"}, etc. and then supply
 * a list of tags to be used for the current test plan, potentially
 * dependent on the current environment.
 *
 * <h3>Syntax Rules for Tags</h3>
 * <ul>
 * <li>A tag must not be blank.</li>
 * <li>A trimmed tag must not contain whitespace.</li>
 * <li>A trimmed tag must not contain ISO control characters.</li>
 * </ul>
 *
 * @since 5.0
 * @see Tags
 * @see Test
 */
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(Tags.class)
@API(status = STABLE, since = "5.0")
public @interface Tag {

	/**
	 * The <em>tag</em>.
	 *
	 * <p>Note: the tag will first be {@linkplain String#trim() trimmed}. If the
	 * supplied tag is syntactically invalid after trimming, the error will be
	 * logged as a warning, and the invalid tag will be effectively ignored. See
	 * {@linkplain Tag Syntax Rules for Tags}.
	 */
	String value();

}

@@ -1245,39 +1245,48 @@
 .%3C/li%3E%0A * %3Cli%3EA 
+%3Cem%3E
 trimmed
+%3C/em%3E
  tag must not co
@@ -1317,23 +1317,32 @@
 * %3Cli%3EA 
+%3Cem%3E
 trimmed
+%3C/em%3E
  tag mus
@@ -1380,24 +1380,283 @@
 cters.%3C/li%3E%0A
+ * %3Cli%3EA %3Cem%3Etrimmed%3C/em%3E tag must not contain any of the following%0A * %3Cem%3Ereserved characters%3C/em%3E.%0A * %3Cul%3E%0A * %3Cli%3E%7B@code ,%7D%3C/li%3E%0A * %3Cli%3E%7B@code (%7D%3C/li%3E%0A * %3Cli%3E%7B@code )%7D%3C/li%3E%0A * %3Cli%3E%7B@code &%7D%3C/li%3E%0A * %3Cli%3E%7B@code %7C%7D%3C/li%3E%0A * %3Cli%3E%7B@code !%7D%3C/li%3E%0A * %3C/ul%3E%0A * %3C/li%3E%0A
  * %3C/ul%3E%0A *%0A

Document reserved characters for tags in JavaDoc