diff options
Diffstat (limited to 'tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/internal/util/BVTRunner.java')
-rw-r--r-- | tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/internal/util/BVTRunner.java | 684 |
1 files changed, 0 insertions, 684 deletions
diff --git a/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/internal/util/BVTRunner.java b/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/internal/util/BVTRunner.java deleted file mode 100644 index 61a0580d..00000000 --- a/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/internal/util/BVTRunner.java +++ /dev/null @@ -1,684 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2006 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 - *******************************************************************************/ -package org.eclipse.jst.validation.test.internal.util; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.logging.Level; - -import org.eclipse.core.resources.IMarker; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRunnable; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.jem.util.logger.proxy.Logger; -import org.eclipse.jst.validation.test.BVTValidationException; -import org.eclipse.jst.validation.test.BVTValidationPlugin; -import org.eclipse.jst.validation.test.ValidationTypeEnum; -import org.eclipse.jst.validation.test.internal.registry.BVTValidationRegistryReader; -import org.eclipse.jst.validation.test.internal.registry.ITestcaseMetaData; -import org.eclipse.jst.validation.test.internal.registry.MessageMetaData; -import org.eclipse.jst.validation.test.internal.registry.MessageUtility; -import org.eclipse.jst.validation.test.internal.registry.OperationTestcase; -import org.eclipse.jst.validation.test.internal.registry.TestSetupImport; -import org.eclipse.jst.validation.test.internal.registry.TestcaseUtility; -import org.eclipse.jst.validation.test.internal.registry.ValidatorTestcase; -import org.eclipse.jst.validation.test.setup.IBuffer; -import org.eclipse.jst.validation.test.setup.ITestStatus; -import org.eclipse.wst.validation.internal.InternalValidatorManager; -import org.eclipse.wst.validation.internal.TaskListUtility; -import org.eclipse.wst.validation.internal.VThreadManager; -import org.eclipse.wst.validation.internal.ValidatorMetaData; -import org.eclipse.wst.validation.internal.operations.OneValidatorOperation; -import org.eclipse.wst.validation.internal.operations.ValidationOperation; -import org.eclipse.wst.validation.internal.plugin.ValidationPlugin; - -/** - */ -public final class BVTRunner { - private static BVTRunner _inst = null; - private List _extra = null; // The extra markers reported (stored in a list to make reading easier). - private List _missing = null; // The missing MMD that were supposed to be reported (stored in a list to make reading easier). - - public static BVTRunner singleton() { - if(_inst == null) { - _inst = new BVTRunner(); - } - return _inst; - } - - private BVTRunner() { - super(); - _extra = new ArrayList(); - _missing = new ArrayList(); - } - - private boolean isVerbose() { - Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger(); - if(logger.isLoggingLevel(Level.FINEST)) { - return true; - } - return false; - } - - private char getSeverityChar(Integer severity) { - if(severity == null) { - return '?'; - } - - switch(severity.intValue()) { - case(IMarker.SEVERITY_ERROR): { - return 'E'; - } - - case(IMarker.SEVERITY_WARNING): { - return 'W'; - } - - case(IMarker.SEVERITY_INFO): { - return 'I'; - } - - default: { - return '?'; - } - } - } - - private String[] getNames(IProject[] projects) { - if(projects == null) { - return new String[0]; - } - String[] names = new String[projects.length]; - for(int i=0; i<projects.length; i++) { - IProject project = projects[i]; - names[i] = project.getName(); - } - return names; - } - - private void debug(IBuffer buffer, IMarker[] messages) { - if(messages == null) { - buffer.write("Nothing to debug because nothing was reported"); //$NON-NLS-1$ - } - - for(int i=0; i<messages.length; i++) { - IMarker marker = messages[i]; - buffer.write(MessageUtility.toString(marker)); - } - } - - protected IProgressMonitor getDebugMonitor(IProgressMonitor monitor) { - if(isVerbose()) { - return monitor; - } - else { - return new NullProgressMonitor(); // if verbose is true, show progress messages for the creation & validation of the project. Otherwise show only the BVT status. - } - } - - /** - * When invoking the test from the UI, the input has already been imported, so just test it. - * The name of the test is derived from the name of the project. - * Return the number of tests that passed. - */ - public int test(IBuffer buffer, IProject[] projects) throws BVTValidationException { - String[] testNames = getNames(projects); - BVTValidationRegistryReader reader = BVTValidationRegistryReader.getReader(); - - buffer.getProgressMonitor().beginTask("Running BVT tests", projects.length); //$NON-NLS-1$ - int totalTests = 0; - int totalPassed = 0; - for(int i=0; i<projects.length; i++) { - buffer.getProgressMonitor().subTask("Testing project " + (i+1) + " of " + projects.length); //$NON-NLS-1$ //$NON-NLS-2$ - IProject project = projects[i]; - ValidatorTestcase[] tests = reader.getValidatorTests(buffer.getProgressMonitor(), testNames[i]); - if((tests == null) || (tests.length == 0)) { - buffer.getProgressMonitor().subTask("There are no tests to run."); //$NON-NLS-1$ - continue; - } - - int numTestsPassed = 0; - for(int j=0; j<tests.length; j++) { - ValidatorTestcase tmd = tests[j]; - if(test(buffer, project, tmd, ValidationTypeEnum.RUN_VALIDATION)) { - numTestsPassed++; - buffer.getProgressMonitor().subTask("Test " + (j+1) + " of " + tests.length + " passed."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - } - else { - buffer.getProgressMonitor().subTask("Test " + (j+1) + " of " + tests.length + " failed."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - } - buffer.getProgressMonitor().worked(1); - } - - totalTests += tests.length; - totalPassed += numTestsPassed; - - buffer.write(numTestsPassed + " of " + tests.length + " tests passed."); //$NON-NLS-1$ //$NON-NLS-2$ - } - buffer.write("\n>>>>>>>>>>TEST RESULTS>>>>>>>>>>"); //$NON-NLS-1$ - buffer.write(totalPassed + " of " + totalTests + " tests passed."); //$NON-NLS-1$ //$NON-NLS-2$ - buffer.getProgressMonitor().done(); - - return totalPassed; - } - - /** - * Construct a ValidationOperation on the IProject, invoke the operation, and verify that the - * resulting IMarkers match the expected messages in the tmd. - */ - public boolean test(IBuffer buffer, IProject project, ValidatorTestcase tmd, int validationEnumType) throws BVTValidationException { - switch(validationEnumType) { - case(ValidationTypeEnum.RUN_VALIDATION): { - return test(buffer, tmd.getName(), ValidationTypeEnum.RUN_VALIDATION_NAME, tmd.getMessages(validationEnumType), new OneValidatorOperation(project, tmd.getValidatorClass(), true, false), InternalValidatorManager.getManager().getValidatorNames(new ValidatorMetaData[]{tmd.getValidatorMetaData()})); // true=force, false=no for - } - - case(ValidationTypeEnum.FULL_VALIDATION): { - return build(buffer, project, tmd, validationEnumType, ValidationTypeEnum.FULL_VALIDATION_NAME); - } - - case(ValidationTypeEnum.INCREMENTAL_VALIDATION): { - return build(buffer, project, tmd, validationEnumType, ValidationTypeEnum.INCREMENTAL_VALIDATION_NAME); - } - - case(ValidationTypeEnum.AUTO_VALIDATION): { - return build(buffer, project, tmd, validationEnumType, ValidationTypeEnum.AUTO_VALIDATION_NAME); - } - - default: { - buffer.addExecutionStatus(tmd.getName(), null, ITestStatus.FAIL, buffer, "Unrecognized validation option:" + validationEnumType); //$NON-NLS-1$ - return false; - } - } - } - - private boolean build(IBuffer buffer, final IProject project, final ValidatorTestcase tmd, final int validationEnumType, String subTaskName) throws BVTValidationException { - try { - IProgressMonitor nullMonitor = new NullProgressMonitor(); - ResourcesPlugin.getWorkspace().run( - new IWorkspaceRunnable(){ - public void run(IProgressMonitor monitor) { - try { - IResource[] resources = tmd.getResources(project); - for(int i=0; i<resources.length; i++) { - IResource res = resources[i]; - res.touch(monitor); - } - } - catch(CoreException exc) { - Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger(); - if(logger.isLoggingLevel(Level.SEVERE)) { - logger.write(exc); - } - } - } - }, nullMonitor); - } - catch(CoreException exc) { - Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger(); - if(logger.isLoggingLevel(Level.SEVERE)) { - logger.write(exc); - } - buffer.addExecutionStatus(tmd.getName(), subTaskName, ITestStatus.FAIL, buffer, "CoreException caught; stack trace in LoggingUtil.log"); //$NON-NLS-1$ - return false; - } - - try { - // Do not build using only the validation builder because some validators - // (i.e., the EJB Validator) depend on the output of other builders - // (i.e., the Java Builder). - project.build(validationEnumType, new NullProgressMonitor()); - } - catch(CoreException exc) { - Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger(); - if(logger.isLoggingLevel(Level.SEVERE)) { - logger.write(exc); - } - buffer.write("CoreException caught; stack trace in LoggingUtil.log"); //$NON-NLS-1$ - return false; - } - - IMarker[] messages = TaskListUtility.getValidationTasks(project, InternalValidatorManager.getManager().getValidatorNames(new ValidatorMetaData[]{tmd.getValidatorMetaData()})); - return verify(buffer, tmd.getName(), subTaskName, project, tmd.getMessages(validationEnumType), messages); - } - - /** - * Run the given ValidationOperation and ensure that the results match the results of the given test case. - * Return true if the results match and false if they don't. - * - * This method is public because it's needed for the TestOpConstr operation. - */ - public boolean test(IBuffer buffer, String testName, String subTaskName, List expectedMessages, ValidationOperation op, String[] validatorNames) throws BVTValidationException { - IProgressMonitor debugMonitor = getDebugMonitor(buffer.getProgressMonitor()); - boolean passed = true; - try { - - if(op == null) { - Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger(); - if(logger.isLoggingLevel(Level.WARNING)) { - logger.write(Level.WARNING, "Cannot run tests because the Operation is null."); //$NON-NLS-1$ - } - passed = false; - } - else { - try { - //ValidatorManager.getManager().setNoMessageLimit(op.getProject()); - - ResourcesPlugin.getWorkspace().run(op, debugMonitor); - - if(op.isFork()) { - // Wait until all forked threads are complete - while(!VThreadManager.getManager().isDone()){}; - } - - // Load the enabled validators from the test, not the operation, - // because the test has the messages for a single validator, and - // if the messages from all enabled validators are retrieved, - // then "extra" messages, reported by validators whose messages - // aren't expected by the test, fail the test case. - IMarker[] messages = TaskListUtility.getValidationTasks(op.getProject(), validatorNames); - passed = verify(buffer, testName, subTaskName, op.getProject(), expectedMessages, messages); - } - catch(Throwable exc) { - Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger(); - if(logger.isLoggingLevel(Level.SEVERE)) { - logger.write(Level.SEVERE, exc); - } - passed = false; - } - } - } - catch(Throwable exc) { - Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger(); - if(logger.isLoggingLevel(Level.SEVERE)) { - logger.write(Level.SEVERE, exc); - } - passed = false; - } - return passed; - } - - public boolean setupTests(IBuffer buffer, boolean verbose) { - ValidatorTestcase[] vts = BVTValidationRegistryReader.getReader().getValidatorTests(buffer.getProgressMonitor(), (String)null); - OperationTestcase[] ots = BVTValidationRegistryReader.getReader().getOperationTests(buffer.getProgressMonitor(), (String)null); - boolean successful = true; - for(int i=0; i<vts.length; i++) { - ValidatorTestcase vtest = vts[i]; - successful = setupTests(buffer, vtest, false) && successful; - } - - for(int j=0; j<ots.length; j++) { - OperationTestcase otest = ots[j]; - successful = setupTests(buffer, otest, false) && successful; - } - - return successful; - } - - /** - * Return true if all of the test cases' input were found and imported. - */ - public boolean setupTests(IBuffer buffer, ITestcaseMetaData tmd, boolean verbose) { - int executionMap = 0x0; - boolean imported = true; - try { - BVTValidationRegistryReader reader = BVTValidationRegistryReader.getReader(); - - // Each import operation deletes any project before it re-imports it. - String dir = TestcaseUtility.getInputDir(tmd); - TestSetupImport[] setup = reader.getTestSetup(buffer, dir, tmd, verbose); - if((setup == null) || (setup.length == 0)) { - String message = "Cannot import input that does not exist. Check that directory " + dir + " exists."; //$NON-NLS-1$ //$NON-NLS-2$ - buffer.write(message); - executionMap |= 0x1; - imported = false; - ValidationPlugin.getPlugin().logMessage(IStatus.ERROR, message); - } - else { - buffer.getProgressMonitor().beginTask("Importing files; please wait...", setup.length); //$NON-NLS-1$ - for(int i=0; i<setup.length; i++) { - buffer.getProgressMonitor().subTask("Importing file " + (i+1) + " of " + setup.length); //$NON-NLS-1$ //$NON-NLS-2$ - if(!setup[i].importFile(buffer.getProgressMonitor(), dir)) { - // One of the input files couldn't be imported. - executionMap |= 0x2; - imported = false; - ValidationPlugin.getPlugin().logMessage(IStatus.ERROR, "Import failed for dir " + dir); //$NON-NLS-1$ - continue; - } - buffer.getProgressMonitor().worked(1); - } - buffer.getProgressMonitor().done(); - } - } - finally { - if(!imported) { - String tmdName = (tmd == null) ? "?" : tmd.getName(); //$NON-NLS-1$ - ValidationPlugin.getPlugin().logMessage(IStatus.ERROR, - "Test setup for " + tmdName + " was unsuccessful."); //$NON-NLS-1$ //$NON-NLS-2$ - } - } - return imported; - } - - /** - * Return true if the expected messages (tmdMmdList) matches the reported messages (ml2). - */ - public boolean compare(IBuffer buffer, String testName, String subTaskName, List tmdMmdList, IMarker[] ml2) { - // Convert one of the arrays into a list so that it can be sorted. - int numMatched = 0; - List mmdList = new ArrayList(tmdMmdList); // create a copy of the tmd's expected output so that the tmd's output remains intact - int numExpected = mmdList.size(); - int numReported = ml2.length; - boolean passed = true; - - - try { - Collections.sort(mmdList, MessageUtility.getMessageComparator(buffer, isVerbose())); - - try { - for(int i=0; i<ml2.length; i++) { - IMarker marker = ml2[i]; - MessageMetaData matching = getMatchingMetaData(buffer, mmdList, marker); - if(matching == null) { - _extra.add(marker); - continue; - } - else { - // Every time a mmd is matched to a marker, remove the mmd - // from the list so that mmds without a marker can be flagged. - mmdList.remove(matching); - numMatched++; - } - } - - if(mmdList.size() != 0) { - _missing.addAll(mmdList); - } - } - catch(Throwable exc) { - Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger(); - if(logger.isLoggingLevel(Level.SEVERE)) { - logger.write(Level.SEVERE, exc); - } - passed = false; - } - finally { - passed = passed && ((_missing.size() == 0) && (_extra.size() == 0)); - - // Report the missing markers after the MMD list is sorted - Collections.sort(_missing, MessageUtility.getMessageComparator(buffer, isVerbose())); - Iterator iterator = _missing.iterator(); - while(iterator.hasNext()) { - MessageMetaData mmd = (MessageMetaData)iterator.next(); - buffer.addExecutionStatus(testName, subTaskName, ITestStatus.FAIL, buffer, "ERROR[missing message]: " + MessageUtility.toString(mmd)); //$NON-NLS-1$ - } - - // Report the extra markers after they're sorted. - Collections.sort(_extra, MessageUtility.getMessageComparator(buffer, isVerbose())); - iterator = _extra.iterator(); - while(iterator.hasNext()) { - IMarker marker = (IMarker)iterator.next(); - buffer.addExecutionStatus(testName, subTaskName, ITestStatus.FAIL, buffer, "ERROR[extra message]: " + MessageUtility.toString(marker) + ", Text is: \"" + MessageUtility.getMessage(marker) + "\""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - } - - if(numExpected != numReported) { - buffer.write("Wrong number of messages reported. Expected " + numExpected + " and got " + numReported); //$NON-NLS-1$ //$NON-NLS-2$ - } - - buffer.write("Number of extra messages: " + _extra.size()); //$NON-NLS-1$ - buffer.write("Number of missing messages: " + _missing.size()); //$NON-NLS-1$ - buffer.write("Number of matched messages: " + numMatched); //$NON-NLS-1$ - } - } - finally { - mmdList.clear(); - _extra.clear(); // Clear the list of extra markers (stored in a list to make reading easier). - _missing.clear(); // Clear the list of missing markers (stored in a list to make reading easier). - } - return passed; - } - - public boolean verify(IBuffer buffer, String testName, String subTaskName, IProject project, List mmdListOrig, IMarker[] messages) { - buffer.write("Test case: " + testName); //$NON-NLS-1$ - - int numMatched = 0; - int numExpected = 0; - int numReported = 0; - boolean passed = true; - List mmdList = new ArrayList(mmdListOrig); // Need to modify the list, but do not want to modify the original, so create a copy. - try { - // First, check that the number of messages match. - if(messages == null) { - passed = false; - Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger(); - if(logger.isLoggingLevel(Level.INFO)) { - logger.write(Level.INFO, "No messages were reported."); //$NON-NLS-1$ - } - return passed; - } - - numExpected = mmdList.size(); - numReported = messages.length; - - Collections.sort(mmdList, MessageUtility.getMessageComparator(buffer, isVerbose())); - - for(int i=0; i<messages.length; i++) { - IMarker marker = messages[i]; - MessageMetaData mmd = getMatchingMetaData(buffer, mmdList, marker); - - if(mmd == null) { - _extra.add(marker); - continue; - } - else { - // Every time a mmd is matched to a marker, remove the mmd - // from the list so that mmds without a marker can be flagged. - mmdList.remove(mmd); - if(isVerbose()) { - buffer.write("matched " + MessageUtility.toString(marker) + " to " + MessageUtility.toString(mmd)); //$NON-NLS-1$ //$NON-NLS-2$ - } - numMatched++; - } - - // Check severity - try { - // Fail a test case based on severity mismatch because EJB deploy - // relies on the severity to determine whether or not deployment - // can continue? - verifySeverity(buffer, testName, subTaskName, mmd, marker); - } - catch(CoreException e) { - passed = false; - Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger(); - if(logger.isLoggingLevel(Level.SEVERE)) { - logger.write(Level.SEVERE, e); - } - buffer.write("ERROR[Testcase::" + testName + "]. CoreException caught while verifying severity"); //$NON-NLS-1$ //$NON-NLS-2$ - continue; - } - - // Check resource - try { - // Don't fail a test case based on resource, because the "location" column will - // uniquely identify the location of the message, anyway. Should still let the - // user know, though. - verifyResource(buffer, testName, subTaskName, mmd, marker); - } - catch(CoreException e) { - passed = false; - buffer.write("ERROR[Testcase::" + testName + "]. CoreException caught while verifying resource"); //$NON-NLS-1$ //$NON-NLS-2$ - Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger(); - if(logger.isLoggingLevel(Level.SEVERE)) { - logger.write(Level.SEVERE, e); - } - continue; - } - - // Check location - try { - // Don't fail a test case based on location, because the line number calculation - // is different in UI & batch, and the test cases are based on UI test results. - // Should still alert the user, though. - verifyLocation(buffer, testName, subTaskName, mmd, marker); - } - catch(CoreException e) { - passed = false; - Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger(); - if(logger.isLoggingLevel(Level.SEVERE)) { - logger.write(Level.SEVERE, e); - } - buffer.write("ERROR[Testcase::" + testName + "]. CoreException caught while verifying line number"); //$NON-NLS-1$ //$NON-NLS-2$ - continue; - } - } - - if(mmdList.size() != 0) { - _missing.addAll(mmdList); - } - } - catch(Throwable exc) { - Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger(); - if(logger.isLoggingLevel(Level.SEVERE)) { - logger.write(Level.SEVERE, exc); - } - passed = false; - } - finally { - if(!((_missing.size() == 0) && (_extra.size() == 0))) { - passed = false; - } - - if(passed) { - buffer.write("PASS[Testcase::" + testName + "]"); //$NON-NLS-1$ //$NON-NLS-2$ - buffer.addExecutionStatus(testName, subTaskName, true); // If fail, will be reported in the extra & missing below. - } - else { - buffer.write("FAIL[Testcase::" + testName + "]"); //$NON-NLS-1$ //$NON-NLS-2$ - - // No point in listing the mmdList because it's empty by the time the finally block is reached - if(isVerbose()) { - buffer.write("List of markers reported:"); //$NON-NLS-1$ - debug(buffer, messages); - } - } - - // Report the missing markers after the MMD list is sorted - Collections.sort(_missing, MessageUtility.getMessageComparator(buffer, isVerbose())); - Iterator iterator = _missing.iterator(); - while(iterator.hasNext()) { - MessageMetaData mmd = (MessageMetaData)iterator.next(); - buffer.addExecutionStatus(testName, subTaskName, ITestStatus.FAIL, buffer, "ERROR[missing message]: " + MessageUtility.toString(mmd)); //$NON-NLS-1$ - } - - // Report the extra markers after they're sorted. - Collections.sort(_extra, MessageUtility.getMessageComparator(buffer, isVerbose())); - iterator = _extra.iterator(); - while(iterator.hasNext()) { - IMarker marker = (IMarker)iterator.next(); - buffer.addExecutionStatus(testName, subTaskName, ITestStatus.FAIL, buffer, "ERROR[extra message]: " + MessageUtility.toString(marker) + ", Text is: \"" + MessageUtility.getMessage(marker) + "\""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - } - - if(numExpected != numReported) { - buffer.write("Wrong number of messages reported. Expected " + numExpected + " and got " + numReported); //$NON-NLS-1$ //$NON-NLS-2$ - } - - buffer.write("Number of extra messages: " + _extra.size()); //$NON-NLS-1$ - buffer.write("Number of missing messages: " + _missing.size()); //$NON-NLS-1$ - buffer.write("Number of matched messages: " + numMatched); //$NON-NLS-1$ - buffer.write("End of test case: " + testName); //$NON-NLS-1$ - _extra.clear(); // Clear the list of extra markers (stored in a list to make reading easier). - _missing.clear(); // Clear the list of missing markers (stored in a list to make reading easier). - } - return passed; - } - - private int verifySeverity(IBuffer buffer, String testName, String subTaskName, MessageMetaData mmd, IMarker marker) throws CoreException { - // If prefixSeverity is null, marker has no prefix, therefore it has no severity - Integer prefixSeverity = MessageUtility.getSeverity(marker); - if(prefixSeverity != null) { - Integer severity = (Integer)marker.getAttribute(IMarker.SEVERITY); // IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO - boolean severityEqual = true; - if((severity == null) && (prefixSeverity == null)) { - severityEqual = true; - } - else if(severity == null) { - severityEqual = false; - } - else if(prefixSeverity == null) { - severityEqual = false; - } - else { - severityEqual = severity.equals(prefixSeverity); - } - - if(!severityEqual) { - buffer.addExecutionStatus(testName, subTaskName, ITestStatus.WARN, buffer, "WARNING[mismatching severity]: expected " + getSeverityChar(prefixSeverity) + ", got " + getSeverityChar(severity) + " on marker " + MessageUtility.toString(marker)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - return ITestStatus.WARN; - } - } - - return ITestStatus.PASS; - } - - private int verifyResource(IBuffer buffer, String testName, String subTaskName, MessageMetaData mmd, IMarker marker) throws CoreException { - String resource = MessageUtility.getResource(marker); - if(!resource.equals(mmd.getResource())) { - buffer.addExecutionStatus(testName, subTaskName, ITestStatus.WARN, buffer, "INFO[wrong resource]: expected " + mmd.getResource() + ", got " + resource + " on marker " + MessageUtility.toString(marker)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - return ITestStatus.WARN; - } - return ITestStatus.PASS; - } - - private int verifyLocation(IBuffer buffer, String testName, String subTaskName, MessageMetaData mmd, IMarker marker) throws CoreException { - // Either compare two line numbers or two text locations, but not a line number to a text location. - if(mmd.isSetLineNumber()) { - Integer lineNumber = MessageUtility.getLineNumber(marker); - if(lineNumber == null) { - // Marker has a text location, not a line number. - return ITestStatus.PASS; - } - - if(lineNumber.intValue() != mmd.getLineNumber()) { - buffer.addExecutionStatus(testName, subTaskName, ITestStatus.WARN, buffer, "INFO[wrong location]: expected " + mmd.getLineNumber() + ", got " + lineNumber + " on marker " + MessageUtility.toString(marker)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - return ITestStatus.WARN; - } - } - else if(mmd.isSetLocation()) { - String location = MessageUtility.getLocation(marker); - if(location == null) { - // marker has a line number, not a text location - return ITestStatus.PASS; - } - - if(!(mmd.getLocation().equals(location))) { - buffer.addExecutionStatus(testName, subTaskName, ITestStatus.WARN, buffer, "INFO[wrong location]: expected " + mmd.getLocation() + ", got " + location + " on marker " + MessageUtility.toString(marker)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - return ITestStatus.WARN; - } - } - - return ITestStatus.PASS; - } - - - private MessageMetaData getMatchingMetaData(IBuffer buffer, List mmdList, IMarker marker) { - int result = Collections.binarySearch(mmdList, marker, MessageUtility.getMessageComparator(buffer, isVerbose())); - if(result < 0) { - return null; - } - return (MessageMetaData)mmdList.get(result); - } -}
\ No newline at end of file |