/*
 * 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 v1.0 which
 * accompanies this distribution and is available at
 *
 * http://www.eclipse.org/legal/epl-v10.html
 */

package org.junit.jupiter.api;

import static org.junit.platform.commons.meta.API.Usage.Experimental;

import org.junit.platform.commons.meta.API;

/**
 * {@code RepetitionInfo} is used to inject information about the current
 * repetition of a repeated test into {@code @RepeatedTest}, {@code @BeforeEach},
 * and {@code @AfterEach} methods.
 *
 * <p>If a method parameter is of type {@code RepetitionInfo}, JUnit will
 * supply an instance of {@code RepetitionInfo} corresponding to the current
 * repeated test as the value for the parameter.
 *
 * @since 5.0
 * @see RepeatedTest
 * @see TestInfo
 */
@API(Experimental)
public interface RepetitionInfo {

	/**
	 * Get the current repetition of the corresponding
	 * {@link RepeatedTest @RepeatedTest} method.
	 */
	int getCurrentRepetition();

	/**
	 * Get the total number of repetitions of the corresponding
	 * {@link RepeatedTest @RepeatedTest} method.
	 *
	 * @see RepeatedTest#value
	 */
	int getTotalRepetitions();

}

@@ -856,16 +856,363 @@
 ter.%0A *%0A
+ * %3Cp%3E%3Cstrong%3EWARNING%3C/strong%3E: %7B@code RepetitionInfo%7D cannot be injected into%0A * a %7B@code @BeforeEach%7D or %7B@code @AfterEach%7D method if the corresponding test%0A * method is not a %7B@code @RepeatedTest%7D. Any attempt to do so will result in a%0A * %7B@link org.junit.jupiter.api.extension.ParameterResolutionException%0A * ParameterResolutionException%7D.%0A *%0A
  * @sinc

Add warning re: RepetitionInfo injection into @[Before|After]Each methods