Index: src/org/eclipse/mtj/internal/jmunit/core/api/TestSuiteWriter.java =================================================================== --- src/org/eclipse/mtj/internal/jmunit/core/api/TestSuiteWriter.java (revision 792) +++ src/org/eclipse/mtj/internal/jmunit/core/api/TestSuiteWriter.java (working copy) @@ -9,6 +9,7 @@ * Contributors: * David Marques (Motorola) - Initial Version * David Marques (Motorola) - Implementing updateSetupSuiteMethod method. + * David Marques (Motorola) - Fixing tag formatting behavior. */ package org.eclipse.mtj.internal.jmunit.core.api; @@ -143,8 +144,8 @@ adds.append(delimiter); } - int start = methodBuffer.indexOf(IJMUnitContants.START_MARKER) + IJMUnitContants.START_MARKER.length(); - int end = methodBuffer.indexOf(IJMUnitContants.END_MARKER); + int start = methodBuffer.indexOf(IJMUnitContants.NON_COMMENT_START_MARKER) + IJMUnitContants.NON_COMMENT_START_MARKER.length(); + int end = methodBuffer.indexOf(IJMUnitContants.COMMENT_START, start); methodBuffer.replace(start, end, adds.toString()); document.replace(methodRange.getOffset(), methodRange.getLength(), methodBuffer.toString()); Index: src/org/eclipse/mtj/internal/jmunit/ui/actions/messages.properties =================================================================== --- src/org/eclipse/mtj/internal/jmunit/ui/actions/messages.properties (revision 792) +++ src/org/eclipse/mtj/internal/jmunit/ui/actions/messages.properties (working copy) @@ -1,2 +1,4 @@ +UpdateJMUnitTestSuiteAction_ErrorUpdatingTestSuite=Error updating test suite +UpdateJMUnitTestSuiteAction_MarkersNotFound=The markers on the setupSuite method are missing, unable to update suite tests. UpdateJMUnitTestSuiteAction_UpdateTestSuite=Update Test Suite UpdateJMUnitTestSuiteAction_UpdateTestSuiteTests=Select Suite Tests: Index: src/org/eclipse/mtj/internal/jmunit/ui/actions/Messages.java =================================================================== --- src/org/eclipse/mtj/internal/jmunit/ui/actions/Messages.java (revision 792) +++ src/org/eclipse/mtj/internal/jmunit/ui/actions/Messages.java (working copy) @@ -15,6 +15,8 @@ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.mtj.internal.jmunit.ui.actions.messages"; //$NON-NLS-1$ + public static String UpdateJMUnitTestSuiteAction_ErrorUpdatingTestSuite; + public static String UpdateJMUnitTestSuiteAction_MarkersNotFound; public static String UpdateJMUnitTestSuiteAction_UpdateTestSuite; public static String UpdateJMUnitTestSuiteAction_UpdateTestSuiteTests; static { Index: src/org/eclipse/mtj/internal/jmunit/ui/actions/UpdateJMUnitTestSuiteAction.java =================================================================== --- src/org/eclipse/mtj/internal/jmunit/ui/actions/UpdateJMUnitTestSuiteAction.java (revision 792) +++ src/org/eclipse/mtj/internal/jmunit/ui/actions/UpdateJMUnitTestSuiteAction.java (working copy) @@ -9,6 +9,7 @@ * Contributors: * Diego Madruga (Motorola) - Initial version * David Marques (Motorola) - Implementing class. + * David Marques (Motorola) - Fixing tag formatting behavior. * * * @since 0.9.1 @@ -20,6 +21,8 @@ import java.util.HashSet; import java.util.LinkedList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; @@ -33,6 +36,7 @@ import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.ui.JavaElementLabelProvider; import org.eclipse.jface.action.IAction; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredContentProvider; @@ -98,7 +102,8 @@ } } } catch (CoreException e) { - MTJCorePlugin.log(IStatus.ERROR, e); + MessageDialog.openError(Display.getDefault().getActiveShell() + , Messages.UpdateJMUnitTestSuiteAction_ErrorUpdatingTestSuite, e.getMessage()); } } @@ -131,13 +136,25 @@ IMethod method = clazzType.getMethod("setupSuite", new String[0]); //$NON-NLS-1$ if (method != null) { - StringBuffer buffer = new StringBuffer(method.getSource()); - int startMarker = buffer.indexOf(IJMUnitContants.START_MARKER) + IJMUnitContants.START_MARKER.length(); - buffer.delete(0x00, startMarker); - int endMarker = buffer.indexOf(IJMUnitContants.END_MARKER); - buffer.delete(endMarker, buffer.length()); - - existingTypes = parseSetupSuite(buffer, clazzType.getJavaProject()); + Pattern pattern = Pattern.compile(buildSetupSuiteMarkerExp(), Pattern.DOTALL | Pattern.MULTILINE); + Matcher matcher = pattern.matcher(method.getSource()); + if (matcher.find()) { + StringBuffer buffer = new StringBuffer(matcher.group()); + int start = 0x00; + int end = 0x00; + + end = buffer.indexOf(IJMUnitContants.NON_COMMENT_START_MARKER) + IJMUnitContants.NON_COMMENT_START_MARKER.length(); + buffer.delete(0x00, end); + + start = buffer.indexOf(IJMUnitContants.COMMENT_START); + end = buffer.indexOf(IJMUnitContants.NON_COMMENT_END_MARKER, start) + IJMUnitContants.NON_COMMENT_END_MARKER.length(); + buffer.delete(start, end); + + existingTypes = parseSetupSuite(buffer, clazzType.getJavaProject()); + } else { + MTJCorePlugin.throwCoreException(IStatus.ERROR, -999, + Messages.UpdateJMUnitTestSuiteAction_MarkersNotFound); + } } return existingTypes; } @@ -143,6 +160,23 @@ } /** + * Builds a regular expression for the test suite markers. + * + * @return the regular expression string. + */ + private String buildSetupSuiteMarkerExp() { + StringBuffer regularExp = new StringBuffer(); + regularExp.append(IJMUnitContants.COMMENT_START); + regularExp.append("(\\s)*"); //$NON-NLS-1$ + regularExp.append(IJMUnitContants.NON_COMMENT_START_MARKER); + regularExp.append("(.)*"); //$NON-NLS-1$ + regularExp.append(IJMUnitContants.COMMENT_START); + regularExp.append("(\\s)*"); //$NON-NLS-1$ + regularExp.append(IJMUnitContants.NON_COMMENT_END_MARKER); + return regularExp.toString(); + } + + /** * Finds all tests contained in the type setupSuite method region. * * @param buffer region buffer.