###############################################################################
# Copyright (c) 2000, 2019 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     IBM Corporation - initial API and implementation
#	  Andrew Eisenberg <andrew@eisenberg.as> - [JUnit] Add a monospace font option for the junit results view - https://bugs.eclipse.org/bugs/show_bug.cgi?id=411794
###############################################################################
pluginName=Java Development Tools JUnit support
providerName=Eclipse.org

testRunListeners.name= Test Run Listeners
junitQuickFixProcessor= JUnit Quick Fix Processor
junitClasspathFixProcessor= JUnit Classpath Fix Processor

junitLaunchConfigs.name= JUnit Launch Configurations
testKinds.name= JUnit Test Kinds

JUnitLaunchDelegate.name=Eclipse JUnit Launcher
JUnitLaunchDelegate.description=The Eclipse JUnit Launcher supports running and debugging JUnit tests and test suites.

RunJUnitLaunchShortcut.description=Runs a set of JUnit tests
DebugJUnitLaunchShortcut.description=Debugs a set of JUnit tests

preferenceKeywords.general=Java JUnit filter stack trace stacktrace
preferenceKeywords.wizards.java=Java

View.label= JUnit
Launch.label= JUnit
PreferencePage.label= JUnit
FailureTraceFont.label= JUnit failure trace font
FailureTraceFont.description= The JUnit failure trace font is used by the JUnit view to display the failure trace.

TestWizard.description= Create a JUnit test case
SuiteWizard.description= Create a JUnit test suite
UpdateSuiteAction.label= Recreate Test Suite...
UpdateSuiteAction.tooltip= Recreate JUnit TestSuite with New Test Classes
Task.name= JUnit Task
WizardCategory.name= JUnit
TestCaseWizard.name= JUnit Test Case
TestSuiteWizard.name= JUnit Test Suite

JUnitShortcut.label= JUnit Test
JUnitShortcut.description.run= Run JUnit Test
JUnitShortcut.description.debug= Debug JUnit Test
JUnitShortcut.description.rerunLast= Rerun JUnit Test
JUnitShortcut.description.rerunFailedFirst= Rerun JUnit Test - Failures First


searchMenu.label= Se&arch

JUnitTabGroupDescription.debug=Create a configuration that will launch a JUnit test in debug mode.
JUnitTabGroupDescription.run=Create a configuration that will launch a JUnit test.

JUnitActionSet.label= JUnit

GotoTestAction.label= Referring &Tests...
GotoTestAction.tooltip= Go to Test Referring to Selection

GotoTestCommand.name= Referring Tests
GotoTestCommand.description= Referring Tests

ViewCommand.junitView.name= JUnit
ViewCommand.junitView.description= JUnit

RenameTypeParticipant.name=JUnit Launch configuration participant
junitRenameParticipant= JUnit Project Rename Participant

testKind.junit3 = JUnit 3
testKind.junit4 = JUnit 4

JUnitContainerName = JUnit

classpathVariableInitializer.deprecated.JUNIT_HOME=Use the JUnit library instead
classpathVariableInitializer.deprecated.JUNIT_SRC_HOME=Use the JUnit library instead

JUnitView.editor.name = JUnit View
JUnitTestResult.content-type.name = JUnit Test Result