###############################################################################
# Copyright (c) 2000, 2013 IBM Corporation and others.
# 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
#
# 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