diff --git a/debug/org.eclipse.cdt.debug.ui.tests/core/org/eclipse/cdt/debug/core/tests/ProjectWithSpaceTests.java b/debug/org.eclipse.cdt.debug.ui.tests/core/org/eclipse/cdt/debug/core/tests/ProjectWithSpaceTests.java new file mode 100644 index 00000000000..8db0d548a51 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.ui.tests/core/org/eclipse/cdt/debug/core/tests/ProjectWithSpaceTests.java @@ -0,0 +1,103 @@ +/******************************************************************************* + * Copyright (c) 2000, 2010 QNX Software Systems 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: + * QNX Software Systems - Initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.debug.core.tests; + +import java.io.IOException; + +import junit.framework.Test; + +import org.eclipse.cdt.debug.core.cdi.CDIException; +import org.eclipse.cdt.debug.core.cdi.ICDILineLocation; +import org.eclipse.cdt.debug.core.cdi.ICDILocator; +import org.eclipse.cdt.debug.core.cdi.model.ICDITarget; +import org.eclipse.cdt.debug.mi.core.MIException; +import org.eclipse.core.runtime.CoreException; + +/** + * Create a project with space and do sanity test for debugger + */ +public class ProjectWithSpaceTests extends AbstractDebugTest { + public static Test suite() { + return new DebugTestWrapper(ProjectWithSpaceTests.class) { + }; + } + + @Override + protected String getProjectName() { + return "with space"; + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + createDebugSession(); + assertNotNull(currentTarget); + currentTarget.deleteAllBreakpoints(); + pause(); + } + + @Override + protected void tearDown() throws Exception { + /* clean up the session */ + targets[0].terminate(); + int x = 0; + while ((!targets[0].isTerminated()) && (x < 30)) { + Thread.sleep(100); + } + if (!targets[0].isTerminated()) + targets[0].terminate(); + super.tearDown(); + } + + /** + * Basic sanity test + */ + public void testLineBreak() throws CoreException, MIException, IOException, CDIException, InterruptedException { + ICDITarget cdiTarget = currentTarget; + ICDILineLocation location; + boolean caught = false; + /*********************************************************************** + * Create a break point in a generic function + **********************************************************************/ + location = cdiTarget.createLineLocation("main.c", 7); + assertNotNull(location); + cdiTarget.setLineBreakpoint(0, location, null, false); + + targets = session.getTargets(); + /* + * We better only have one target connected to this session or something + * is not right... + */ + assertTrue(targets.length == 1); + /* + * Resume the target, this should cause it to run till it hits the + * breakpoint + */ + ICDITarget target = targets[0]; + target.resume(false); + /** + * Give the process up to 10 seconds to become either terminated or + * suspended. It sould hit the breakponint almost immediatly so we + * should only sleep for max 100 ms + */ + for (int x = 0; x < 100; x++) { + if (target.isSuspended() || target.isTerminated()) + break; + Thread.sleep(100); + } + assertTrue("Suspended: " + target.isSuspended() + " Terminated: " + target.isTerminated(), + target.isSuspended()); + ICDILocator locator = getCurrentLocator(); + assertTrue(locator.getLineNumber() == 7); + assertTrue(locator.getFunction().equals("func1")); + assertTrue(locator.getFile().endsWith("main.c")); + } +} \ No newline at end of file