mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 14:42:11 +02:00
Bug 572581: reenable disabled DSF-GDB tests
Many of the disabled tests were failing because they were dependent on specific combinations of GDB + GCC and where exactly code stops and steps effect when entering functions. The old code mostly ran to a function and then stepped a known number of times. But what changes between GDB versions is how many steps are needed. Therefore for all failing tests update to run to a specific line number by using tags in the .cc file and running to them to make sure the test is precisely on that line. This partially reverts commit8220215a2e
and92272c6465
Reason for revert: These tests were "temporarily" disabled a while ago as part of the JIRO migration in Bug 545624. Change-Id: I703429c8a81c856360f1cb4e899026200527f7c6
This commit is contained in:
parent
0e4917751e
commit
83d4fa001e
20 changed files with 263 additions and 126 deletions
|
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
|||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: %pluginName
|
||||
Bundle-SymbolicName: org.eclipse.cdt.debug.core; singleton:=true
|
||||
Bundle-Version: 8.6.0.qualifier
|
||||
Bundle-Version: 8.7.0.qualifier
|
||||
Bundle-Activator: org.eclipse.cdt.debug.core.CDebugCorePlugin
|
||||
Bundle-Vendor: %providerName
|
||||
Bundle-Localization: plugin
|
||||
|
|
|
@ -141,9 +141,47 @@ public interface ICDTLaunchConfigurationConstants {
|
|||
* Launch configuration attribute key. The value is a string specifying
|
||||
* application arguments for a C/C++ launch configuration, as they should
|
||||
* appear on the command line.
|
||||
*
|
||||
* @see ATTR_STARTUP_WITH_SHELL
|
||||
*/
|
||||
public static final String ATTR_PROGRAM_ARGUMENTS = CDT_LAUNCH_ID + ".PROGRAM_ARGUMENTS"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Launch configuration attribute key. The value is a string as to whether to use
|
||||
* gdb's startup-with-shell. This can affect how program arguments are expanded.
|
||||
* Possible values are:
|
||||
* - {@link #STARTUP_WITH_SHELL_ON}
|
||||
* - {@link #STARTUP_WITH_SHELL_OFF}
|
||||
* - {@link #STARTUP_WITH_SHELL_UNSET} - use gdb's default
|
||||
*
|
||||
* Only supported in GDB > 7.7 for local launches and 8.1 for remote launches.
|
||||
*
|
||||
* See https://sourceware.org/gdb/onlinedocs/gdb/Starting.html
|
||||
* @since 8.7
|
||||
*/
|
||||
public static final String ATTR_STARTUP_WITH_SHELL = CDT_LAUNCH_ID + ".STARTUP_WITH_SHELL"; //$NON-NLS-1$
|
||||
/**
|
||||
* @see #ATTR_STARTUP_WITH_SHELL
|
||||
* @since 8.7
|
||||
*/
|
||||
public static final String STARTUP_WITH_SHELL_ON = "on"; //$NON-NLS-1$
|
||||
/**
|
||||
* @see #ATTR_STARTUP_WITH_SHELL
|
||||
* @since 8.7
|
||||
*/
|
||||
public static final String STARTUP_WITH_SHELL_OFF = "off"; //$NON-NLS-1$
|
||||
/**
|
||||
* @see #ATTR_STARTUP_WITH_SHELL
|
||||
* @since 8.7
|
||||
*/
|
||||
public static final String STARTUP_WITH_SHELL_UNSET = ""; //$NON-NLS-1$
|
||||
/**
|
||||
* Default value for {@link #ATTR_STARTUP_WITH_SHELL}
|
||||
* @see #ATTR_STARTUP_WITH_SHELL
|
||||
* @since 8.7
|
||||
*/
|
||||
public static final String STARTUP_WITH_SHELL_DEFAULT = STARTUP_WITH_SHELL_UNSET;
|
||||
|
||||
/**
|
||||
* Launch configuration attribute key. The value is a string specifying a
|
||||
* path to the working directory to use when launching a the application.
|
||||
|
|
|
@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
|
|||
Bundle-Name: %pluginName
|
||||
Bundle-Vendor: %providerName
|
||||
Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb;singleton:=true
|
||||
Bundle-Version: 6.2.0.qualifier
|
||||
Bundle-Version: 6.3.0.qualifier
|
||||
Bundle-Activator: org.eclipse.cdt.dsf.gdb.internal.GdbPlugin
|
||||
Bundle-Localization: plugin
|
||||
Require-Bundle: org.eclipse.core.runtime,
|
||||
|
|
|
@ -63,6 +63,11 @@ import org.eclipse.core.runtime.Platform;
|
|||
import org.eclipse.core.runtime.Status;
|
||||
import org.eclipse.debug.core.ILaunch;
|
||||
|
||||
/**
|
||||
* Final launch sequence for GDB < 7.0, extended by subclasses for newer versions.
|
||||
*
|
||||
* @see FinalLaunchSequence_7_0
|
||||
*/
|
||||
public class FinalLaunchSequence extends ReflectionSequence {
|
||||
// The launchConfiguration attributes
|
||||
private Map<String, Object> fAttributes;
|
||||
|
|
|
@ -170,7 +170,7 @@ public class GdbLaunch extends DsfLaunch implements ITracedLaunch, ITargetedLaun
|
|||
// To maintain a mapping of memory contexts to the corresponding memory
|
||||
// retrieval in this session
|
||||
try {
|
||||
fExecutor.submit(new Callable<Object>() {
|
||||
fExecutor.submit(new Callable<>() {
|
||||
@Override
|
||||
public Object call() throws CoreException {
|
||||
fMemRetrievalManager = new GdbMemoryBlockRetrievalManager(GdbLaunchDelegate.GDB_DEBUG_MODEL_ID,
|
||||
|
@ -550,7 +550,11 @@ public class GdbLaunch extends DsfLaunch implements ITracedLaunch, ITargetedLaun
|
|||
|
||||
/**
|
||||
* Gets the CDT environment from the CDT project's configuration referenced
|
||||
* by the launch
|
||||
* by the launch. This environment is used as the environment to run GDB in
|
||||
* and is different than the launch environment in ILaunchManager.ATTR_ENVIRONMENT_VARIABLES
|
||||
* which is used to run the inferior in.
|
||||
*
|
||||
* Essentially this is getting the build environment of the associated project.
|
||||
*
|
||||
* @since 5.0
|
||||
*/
|
||||
|
|
|
@ -204,23 +204,48 @@ public class DebugNewProcessSequence extends ReflectionSequence {
|
|||
*/
|
||||
@Execute
|
||||
public void stepSetArguments(RequestMonitor rm) {
|
||||
String[] argArray = null;
|
||||
try {
|
||||
String args = CDebugUtils.getAttribute(fAttributes, ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
|
||||
""); //$NON-NLS-1$
|
||||
|
||||
if (args.length() != 0) {
|
||||
args = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(args);
|
||||
String[] argArray = CommandLineUtil.argumentsToArray(args);
|
||||
fCommandControl.queueCommand(fCommandFactory.createMIGDBSetArgs(getContainerContext(), argArray),
|
||||
new ImmediateDataRequestMonitor<MIInfo>(rm));
|
||||
} else {
|
||||
rm.done();
|
||||
argArray = CommandLineUtil.argumentsToArray(args);
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, IDsfStatusConstants.REQUEST_FAILED,
|
||||
"Cannot get inferior arguments", e)); //$NON-NLS-1$
|
||||
rm.done();
|
||||
return;
|
||||
}
|
||||
|
||||
final String[] finalArgArray = argArray;
|
||||
ImmediateDataRequestMonitor<MIInfo> setArgsRm = new ImmediateDataRequestMonitor<>(rm) {
|
||||
@Override
|
||||
protected void handleSuccess() {
|
||||
if (finalArgArray != null) {
|
||||
fCommandControl.queueCommand(
|
||||
fCommandFactory.createMIGDBSetArgs(getContainerContext(), finalArgArray),
|
||||
new ImmediateDataRequestMonitor<MIInfo>(rm));
|
||||
} else {
|
||||
rm.done();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
String withshellString = CDebugUtils.getAttribute(fAttributes,
|
||||
ICDTLaunchConfigurationConstants.ATTR_STARTUP_WITH_SHELL,
|
||||
ICDTLaunchConfigurationConstants.STARTUP_WITH_SHELL_DEFAULT);
|
||||
if (ICDTLaunchConfigurationConstants.STARTUP_WITH_SHELL_ON.equals(withshellString)
|
||||
|| ICDTLaunchConfigurationConstants.STARTUP_WITH_SHELL_OFF.equals(withshellString)) {
|
||||
boolean withShell = ICDTLaunchConfigurationConstants.STARTUP_WITH_SHELL_ON.equals(withshellString);
|
||||
fCommandControl.queueCommand(
|
||||
fCommandFactory.createMIGDBSetStartupWithShell(fCommandControl.getContext(), withShell), setArgsRm);
|
||||
} else {
|
||||
setArgsRm.done();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -146,6 +146,7 @@ import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetRemoteTimeout;
|
|||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetSchedulerLocking;
|
||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetSolibAbsolutePrefix;
|
||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetSolibSearchPath;
|
||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetStartupWithShell;
|
||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetTargetAsync;
|
||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetTargetCharset;
|
||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetTargetWideCharset;
|
||||
|
@ -885,6 +886,11 @@ public class CommandFactory {
|
|||
return new MIGDBSetSolibSearchPath(ctx, paths);
|
||||
}
|
||||
|
||||
/** @since 6.3 */
|
||||
public ICommand<MIInfo> createMIGDBSetStartupWithShell(ICommandControlDMContext ctx, boolean enable) {
|
||||
return new MIGDBSetStartupWithShell(ctx, enable);
|
||||
}
|
||||
|
||||
public ICommand<MIInfo> createMIGDBSetTargetAsync(ICommandControlDMContext ctx, boolean isSet) {
|
||||
return new MIGDBSetTargetAsync(ctx, isSet);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2021 Kichwa Coders Canada Inc. 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
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.dsf.mi.service.command.commands;
|
||||
|
||||
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
|
||||
|
||||
/**
|
||||
*
|
||||
* -gdb-set startup-with-shell [on | off]
|
||||
*
|
||||
* Available with GDB 7.7 in GDB and 8.1 for gdbserver
|
||||
*
|
||||
* @since 6.3
|
||||
*
|
||||
*/
|
||||
public class MIGDBSetStartupWithShell extends MIGDBSet {
|
||||
public MIGDBSetStartupWithShell(ICommandControlDMContext ctx, boolean enable) {
|
||||
super(ctx, new String[] { "startup-with-shell", enable ? "on" : "off" });//$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
|
||||
}
|
||||
}
|
|
@ -79,6 +79,7 @@ public:
|
|||
void test() {
|
||||
nested = 8;
|
||||
pNested = &nested;
|
||||
/* BaseTest::test_init */
|
||||
return;
|
||||
}
|
||||
Base Base; // make sure we don't get confused by the same name
|
||||
|
@ -93,7 +94,7 @@ void locals2() {
|
|||
char lCharVar = 'i';
|
||||
char *lCharPtr = &lCharVar;
|
||||
bool *lBoolPtr2 = (bool*)0xABCDE123;
|
||||
lBoolPtr2 = 0; // step up to this line to ensure all locals are in scope
|
||||
/* locals2_init */
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -118,6 +119,7 @@ void testLocals() {
|
|||
double *lDoublePtr2 = (double*)0x2345;
|
||||
char *lCharPtr2 = (char*)0x1234;
|
||||
bool *lBoolPtr2 = (bool*)0x123ABCDE;
|
||||
/* testLocals_init */
|
||||
|
||||
locals2();
|
||||
lBoolPtr2 = (bool*)0; // step-out from locals2() will land here; ensures our vars are still visible
|
||||
|
@ -128,7 +130,7 @@ int testChildren() {
|
|||
foo f;
|
||||
|
||||
f.d = 1;
|
||||
|
||||
/* testChildren_init */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -143,11 +145,13 @@ int testWrite() {
|
|||
|
||||
int testName1(int newVal) {
|
||||
int a = newVal;
|
||||
/* testName1_init */
|
||||
return a;
|
||||
}
|
||||
|
||||
int testName2(int newVal) {
|
||||
int a = newVal;
|
||||
/* testName2_init */
|
||||
return a;
|
||||
}
|
||||
|
||||
|
@ -155,6 +159,7 @@ int testSameName1(int newVal) {
|
|||
int a = newVal;
|
||||
Z z;
|
||||
z.x = newVal;
|
||||
/* testSameName1_a_init */
|
||||
z.x = newVal; // this redundant line is here to ensure 3 steps after running to this func leaves locals visible
|
||||
return a;
|
||||
}
|
||||
|
@ -162,6 +167,7 @@ int testSameName1(int newVal, int ignore) {
|
|||
int a = newVal;
|
||||
Z z;
|
||||
z.x = newVal;
|
||||
/* testSameName1_b_init */
|
||||
a = newVal; // this redundant line is here to ensure 3 steps after running to this func leaves locals visible
|
||||
return a;
|
||||
}
|
||||
|
@ -177,14 +183,17 @@ int testSameName() {
|
|||
|
||||
int testConcurrent() {
|
||||
int a[2] = {28, 32};
|
||||
/* testConcurrent_init */
|
||||
return a[0];
|
||||
}
|
||||
|
||||
int testSubblock() {
|
||||
int a = 8;
|
||||
int b = 1;
|
||||
/* testSubblock_init */
|
||||
if (a) {
|
||||
int a = 12;
|
||||
/* testSubblock_subblock_init */
|
||||
b = a;
|
||||
}
|
||||
return b;
|
||||
|
@ -193,7 +202,7 @@ int testSubblock() {
|
|||
int testAddress() {
|
||||
int a = 8;
|
||||
int* a_ptr = &a;
|
||||
|
||||
/* testAddress_init */
|
||||
return a;
|
||||
}
|
||||
|
||||
|
@ -203,7 +212,7 @@ int testUpdateChildren(int val) {
|
|||
childStruct a;
|
||||
a.z.x = val + 10;
|
||||
a.z.y = val + 11;
|
||||
|
||||
/* testUpdateChildren_init */
|
||||
a.z.x = val + 20;
|
||||
a.z.y = val + 21;
|
||||
|
||||
|
@ -213,7 +222,7 @@ int testUpdateChildren2(int val) {
|
|||
childStruct a;
|
||||
a.z.x = val + 10;
|
||||
a.z.y = val + 11;
|
||||
|
||||
/* testUpdateChildren2_init */
|
||||
a.z.x = val + 20;
|
||||
a.z.y = val + 21;
|
||||
|
||||
|
@ -233,12 +242,14 @@ int testUpdateGDBBug() {
|
|||
// since binary of 3 is 11 which is the same as the old value
|
||||
// in natural format
|
||||
int a = 11;
|
||||
/* testUpdateGDBBug_init */
|
||||
a = 3;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int testUpdateIssue() {
|
||||
double a = 1.99;
|
||||
/* testUpdateIssue_init */
|
||||
a = 1.22;
|
||||
a = 1.22; // this redundant line is here to ensure 3 steps after running to this func leaves locals visible
|
||||
}
|
||||
|
@ -249,6 +260,7 @@ int testUpdateIssue2() {
|
|||
} z;
|
||||
|
||||
z.d = 1.0;
|
||||
/* testUpdateIssue2_init */
|
||||
z.d = 1.22;
|
||||
z.d = 1.22; // this redundant line is here to ensure 3 steps after running to this func leaves locals visible
|
||||
}
|
||||
|
@ -259,6 +271,7 @@ int testConcurrentReadAndUpdateChild() {
|
|||
}z;
|
||||
|
||||
z.d = 1;
|
||||
/* testConcurrentReadAndUpdateChild_init */
|
||||
z.d = 2;
|
||||
}
|
||||
|
||||
|
@ -268,6 +281,7 @@ int testConcurrentUpdateOutOfScopeChildThenParent1() {
|
|||
}z;
|
||||
|
||||
z.d = 1;
|
||||
/* testConcurrentUpdateOutOfScopeChildThenParent1_init */
|
||||
z.d = 1; // this redundant line is here to ensure 2 steps after running to this func leaves locals visible
|
||||
}
|
||||
|
||||
|
@ -277,6 +291,7 @@ int testConcurrentUpdateOutOfScopeChildThenParent2() {
|
|||
}z;
|
||||
|
||||
z.d = 2;
|
||||
/* testConcurrentUpdateOutOfScopeChildThenParent2_init */
|
||||
z.d = 2; // this redundant line is here to ensure 2 steps after running to this func leaves locals visible
|
||||
}
|
||||
|
||||
|
@ -357,7 +372,7 @@ int testCasting() {
|
|||
int array_small[4] = {65, 0x41424344, 0x45464748}; // Decimal: 65, 1094861636, 1162233672, Char: A, ABCD, EFGH
|
||||
|
||||
int* int_ptr = &array_small[0];
|
||||
|
||||
/* testCasting_init */
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -387,13 +402,14 @@ private:
|
|||
int f[4];
|
||||
};
|
||||
int testRTTI() {
|
||||
Derived derived;
|
||||
Derived derived; // here derived.ptr is of type VirtualBase
|
||||
Derived child1;
|
||||
OtherDerived child2;
|
||||
|
||||
derived.ptr = &child1; // here derived.b is of type bar
|
||||
|
||||
derived.ptr = &child2; // here derived.b is of type foo
|
||||
/* testRTTI_tag1 */
|
||||
derived.ptr = &child1; // here derived.ptr is of type Derived
|
||||
/* testRTTI_tag2 */
|
||||
derived.ptr = &child2; // here derived.ptr is of type OtherDerived
|
||||
/* testRTTI_tag3 */
|
||||
|
||||
return 1; // here derived.b is of type Derived
|
||||
}
|
||||
|
|
|
@ -24,7 +24,8 @@ int envTest() {
|
|||
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
envTest(); // FIRST_LINE_IN_MAIN
|
||||
int dummy = 1; // FIRST_LINE_IN_MAIN
|
||||
envTest(); // main_init
|
||||
reverseTest(); // tests assume that every line between first and last
|
||||
stopAtOther(); // is steppable, so no blank lines allowed.
|
||||
return 36; // LAST_LINE_IN_MAIN
|
||||
|
|
|
@ -66,8 +66,12 @@ $(BINDIR)/%.exe: %.cc $(HEADERS) Makefile | $(BINDIR)
|
|||
|
||||
# Generate a core file that is needed for post-morted core-file tests
|
||||
$(COREFILE): $(BINDIR)/ExpressionTestApp.exe Makefile | $(BINDIR)
|
||||
gdb -nx --batch -ex 'b testLocals' -ex 'run' --ex 'next 16' \
|
||||
-ex 'gcore ../bin/core' $(BINDIR)/ExpressionTestApp.exe > /dev/null
|
||||
line=$(shell grep -n testLocals_init ../src/ExpressionTestApp.cc | cut -d : -f 1); \
|
||||
gdb -nx --batch \
|
||||
-ex 'b ExpressionTestApp.cc:'$$line \
|
||||
-ex 'run' \
|
||||
-ex 'gcore ../bin/core' \
|
||||
$(BINDIR)/ExpressionTestApp.exe > /dev/null
|
||||
|
||||
# Compile sourcelookup once with old dwarf flags
|
||||
$(BINDIR)/SourceLookupDwarf2.exe: SourceLookup.cc $(HEADERS) Makefile | $(BINDIR)
|
||||
|
|
|
@ -67,7 +67,11 @@
|
|||
<configuration>
|
||||
<useUIHarness>false</useUIHarness>
|
||||
<argLine>${tycho.testArgLine} ${base.ui.test.vmargs} -ea -Xms256m -Xmx512m -Dcdt.tests.dsf.gdb.path=${dsf.gdb.tests.gdbPath} -Ddsf.gdb.tests.timeout.multiplier=${dsf.gdb.tests.timeout.multiplier} -Dcdt.tests.dsf.gdb.versions=${cdt.tests.dsf.gdb.versions}</argLine>
|
||||
<appArgLine>-debug ./dsf.debug.options -pluginCustomization ${basedir}/../../disable_intro_in_tests.ini</appArgLine>
|
||||
<appArgLine>-debug ./dsf.debug.options -pluginCustomization ${basedir}/../../disable_intro_in_tests.ini</appArgLine>
|
||||
<environmentVariables>
|
||||
<!-- See org.eclipse.cdt.tests.dsf.gdb.tests.CommandLineArgsTest.setLaunchAttributes() for why -->
|
||||
<SHELL>/bin/bash</SHELL>
|
||||
</environmentVariables>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
|
|
|
@ -455,7 +455,7 @@ public class BaseTestCase {
|
|||
* @return The line number corresponding to tag.
|
||||
* @throws NoSuchElementException if the tag does not exist.
|
||||
*/
|
||||
protected int getLineForTag(String tag) {
|
||||
protected int getLineForTag(String tag) throws Exception {
|
||||
if (!fTagLocations.containsKey(tag)) {
|
||||
throw new NoSuchElementException("tag " + tag);
|
||||
}
|
||||
|
|
|
@ -22,8 +22,10 @@ import static org.hamcrest.Matchers.endsWith;
|
|||
import static org.hamcrest.Matchers.startsWith;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
|
||||
|
@ -39,13 +41,13 @@ import org.eclipse.cdt.dsf.service.DsfSession;
|
|||
import org.eclipse.cdt.tests.dsf.gdb.framework.BaseParametrizedTestCase;
|
||||
import org.eclipse.cdt.tests.dsf.gdb.framework.SyncUtil;
|
||||
import org.eclipse.cdt.tests.dsf.gdb.launching.TestsPlugin;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
|
||||
@RunWith(Parameterized.class)
|
||||
public class CommandLineArgsTest extends BaseParametrizedTestCase {
|
||||
protected static final String SOURCE_NAME = "LaunchConfigurationAndRestartTestApp.cc";
|
||||
protected static final String EXEC_NAME = "LaunchConfigurationAndRestartTestApp.exe";
|
||||
|
||||
private DsfSession fSession;
|
||||
|
@ -67,6 +69,20 @@ public class CommandLineArgsTest extends BaseParametrizedTestCase {
|
|||
|
||||
// Set the binary
|
||||
setLaunchAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, EXEC_PATH + EXEC_NAME);
|
||||
|
||||
// while testing command line arguments we are trying to make sure command line gets from
|
||||
// cdt to gdb as expected - we don't want to be affected by whatever shell may be on
|
||||
// the machine. We can't turn startup_with_shell off because GDB's primitive argument
|
||||
// parsing in that mode causes these tests to be useless. Therefore, force a specific
|
||||
// shell to use so that we have consistent results.
|
||||
// There is no way today of setting the SHELL environement variable when GDB runs from
|
||||
// these tests (that comes from org.eclipse.cdt.dsf.gdb.launching.GdbLaunch.getLaunchEnvironment())
|
||||
// So, instead we ensure that the environement we have has SHELL set appropriately
|
||||
// and rely on what we are running in to have SHELL set properly.
|
||||
assertEquals("/bin/bash", System.getenv("SHELL"));
|
||||
// XXX: The above may need to be updated to verify their validity on Windows/Mac. To
|
||||
// make it easier to know where to look for such testers fail the test here as
|
||||
// almost surely the SHELL work above need to be addressed on those platforms.
|
||||
}
|
||||
|
||||
// This method cannot be tagged as @Before, because the launch is not
|
||||
|
@ -86,6 +102,26 @@ public class CommandLineArgsTest extends BaseParametrizedTestCase {
|
|||
fSession.getExecutor().submit(runnable).get();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLineForTag(String tag) throws Exception {
|
||||
try {
|
||||
super.getLineForTag(tag);
|
||||
} catch (Exception e) {
|
||||
resolveLineTagLocations(SOURCE_NAME, tag);
|
||||
}
|
||||
return super.getLineForTag(tag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run to one of the tags in {@link #LINE_TAGS}
|
||||
* @throws Throwable
|
||||
*/
|
||||
private MIStoppedEvent runToTag(String tag) throws Throwable {
|
||||
String location = String.format("%s:%d", SOURCE_NAME, getLineForTag(tag));
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.runToLocation(location);
|
||||
return stoppedEvent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a string of form 0x123456 "ab\"cd" to ab"cd
|
||||
*/
|
||||
|
@ -138,7 +174,7 @@ public class CommandLineArgsTest extends BaseParametrizedTestCase {
|
|||
*/
|
||||
protected void checkArguments(String... expected) throws Throwable {
|
||||
|
||||
MIStoppedEvent stoppedEvent = getInitialStoppedEvent();
|
||||
MIStoppedEvent stoppedEvent = runToTag("main_init");
|
||||
|
||||
// Check that argc is correct
|
||||
final IExpressionDMContext argcDmc = SyncUtil.createExpression(stoppedEvent.getDMContext(), "argc");
|
||||
|
@ -152,14 +188,12 @@ public class CommandLineArgsTest extends BaseParametrizedTestCase {
|
|||
|
||||
fExpService.getExecutor().execute(query);
|
||||
FormattedValueDMData value = query.get(TestsPlugin.massageTimeout(500), TimeUnit.MILLISECONDS);
|
||||
|
||||
assertTrue("Expected " + (1 + expected.length) + " but got " + value.getFormattedValue(),
|
||||
value.getFormattedValue().trim().equals(Integer.toString(1 + expected.length)));
|
||||
|
||||
int actualArgc = Integer.parseInt(value.getFormattedValue().trim());
|
||||
List<String> actualArgv = new ArrayList<>();
|
||||
// check all argvs are correct
|
||||
for (int i = 0; i < expected.length; i++) {
|
||||
for (int i = 1; i < actualArgc; i++) {
|
||||
final IExpressionDMContext argvDmc = SyncUtil.createExpression(stoppedEvent.getDMContext(),
|
||||
"argv[" + (i + 1) + "]");
|
||||
"argv[" + i + "]");
|
||||
Query<FormattedValueDMData> query2 = new Query<>() {
|
||||
@Override
|
||||
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
|
||||
|
@ -172,8 +206,9 @@ public class CommandLineArgsTest extends BaseParametrizedTestCase {
|
|||
FormattedValueDMData value2 = query2.get(TestsPlugin.massageTimeout(500), TimeUnit.MILLISECONDS);
|
||||
String details = value2.getFormattedValue();
|
||||
String actual = convertDetails(details);
|
||||
assertEquals(expected[i], actual);
|
||||
actualArgv.add(actual);
|
||||
}
|
||||
assertEquals(Arrays.asList(expected), actualArgv);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -213,7 +248,6 @@ public class CommandLineArgsTest extends BaseParametrizedTestCase {
|
|||
* bug 474648
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testSettingArgumentsWithSpecialSymbols() throws Throwable {
|
||||
// Test that arguments are parsed correctly:
|
||||
// The string provided by the user is split into arguments on spaces
|
||||
|
|
|
@ -72,7 +72,6 @@ import org.junit.runners.Parameterized;
|
|||
|
||||
@RunWith(Parameterized.class)
|
||||
@Intermittent(repetition = 3)
|
||||
@Ignore
|
||||
public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase {
|
||||
public @Rule IntermittentRule intermittentRule = new IntermittentRule();
|
||||
protected static final String EXEC_NAME = "LaunchConfigurationAndRestartTestApp.exe";
|
||||
|
|
|
@ -95,17 +95,10 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
setLaunchAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, EXEC_PATH + EXEC_NAME);
|
||||
}
|
||||
|
||||
/* Line tags in the source file. */
|
||||
private static final String[] LINE_TAGS = new String[] { "testUpdateOfPointer_1", "testUpdateOfPointer_2",
|
||||
"testUpdateOfPointerTypedef_1", "testUpdateOfPointerTypedef_2", };
|
||||
|
||||
@Override
|
||||
public void doBeforeTest() throws Exception {
|
||||
super.doBeforeTest();
|
||||
|
||||
/* Resolve line tags in source file. */
|
||||
resolveLineTagLocations(SOURCE_NAME, LINE_TAGS);
|
||||
|
||||
fSession = getGDBLaunch().getSession();
|
||||
Runnable runnable = () -> {
|
||||
fServicesTracker = new DsfServicesTracker(TestsPlugin.getBundleContext(), fSession.getId());
|
||||
|
@ -129,6 +122,26 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLineForTag(String tag) throws Exception {
|
||||
try {
|
||||
super.getLineForTag(tag);
|
||||
} catch (Exception e) {
|
||||
resolveLineTagLocations(SOURCE_NAME, tag);
|
||||
}
|
||||
return super.getLineForTag(tag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run to one of the tags in {@link #LINE_TAGS}
|
||||
* @throws Throwable
|
||||
*/
|
||||
private MIStoppedEvent runToTag(String tag) throws Throwable {
|
||||
String location = String.format("%s:%d", SOURCE_NAME, getLineForTag(tag));
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.runToLocation(location);
|
||||
return stoppedEvent;
|
||||
}
|
||||
|
||||
// Handles ExpressionChangedEvent
|
||||
@DsfServiceEventHandler
|
||||
public void eventDispatched(IExpressionChangedDMEvent e) {
|
||||
|
@ -160,8 +173,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
*/
|
||||
@Test
|
||||
public void testLiteralIntegerExpressions() throws Throwable {
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.runToLocation("testLocals");
|
||||
|
||||
MIStoppedEvent stoppedEvent = runToTag("testLocals_init");
|
||||
// Create a map of expressions and their expected values.
|
||||
Map<String, String[]> tests = new HashMap<>();
|
||||
|
||||
|
@ -183,7 +195,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
*/
|
||||
@Test
|
||||
public void testLiteralFloatingPointExpressions() throws Throwable {
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.runToLocation("testLocals");
|
||||
MIStoppedEvent stoppedEvent = runToTag("testLocals_init");
|
||||
|
||||
// Create a map of expressions and their expected values.
|
||||
Map<String, String[]> tests = new HashMap<>();
|
||||
|
@ -206,11 +218,9 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
* variables.
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testLocalVariables() throws Throwable {
|
||||
// Run to the point where all local variables are initialized
|
||||
SyncUtil.runToLocation("testLocals");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(16, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testLocals_init");
|
||||
|
||||
// Create a map of expressions to expected values.
|
||||
Map<String, String[]> tests1 = new HashMap<>();
|
||||
|
@ -245,8 +255,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
|
||||
// Step into the method and stop until all new local variables are
|
||||
// initialized
|
||||
SyncUtil.step(StepType.STEP_INTO);
|
||||
stoppedEvent = SyncUtil.step(5, StepType.STEP_OVER);
|
||||
stoppedEvent = runToTag("locals2_init");
|
||||
|
||||
// Create a map of expressions to expected values.
|
||||
Map<String, String[]> tests2 = new HashMap<>();
|
||||
|
@ -278,8 +287,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
@Ignore("Sublocks do not work with GDB")
|
||||
@Test
|
||||
public void testSubBlock() throws Throwable {
|
||||
SyncUtil.runToLocation("testSubblock");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(2, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testSubblock_init");
|
||||
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
Map<String, String[]> tests = new HashMap<>();
|
||||
|
@ -290,7 +298,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
executeExpressionSubTests(tests, frameDmc);
|
||||
|
||||
// Now enter a subblock with the same variable names
|
||||
SyncUtil.step(2, StepType.STEP_OVER);
|
||||
runToTag("testSubblock_subblock_init");
|
||||
|
||||
tests = new HashMap<>();
|
||||
|
||||
|
@ -455,10 +463,9 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
* children. See bug 320277.
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testNestedBaseChildrenBug() throws Throwable {
|
||||
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.runToLocation("BaseTest::test");
|
||||
MIStoppedEvent stoppedEvent = runToTag("BaseTest::test_init");
|
||||
|
||||
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
|
@ -626,13 +633,11 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
* make sure the internal MI commands are sequenced properly.
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testConcurrentReads() throws Throwable {
|
||||
// Next we test that we can read the value more than once
|
||||
// of the same variable object at the exact same time
|
||||
|
||||
SyncUtil.runToLocation("testConcurrent");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testConcurrent_init");
|
||||
|
||||
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
|
@ -919,14 +924,12 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
* sure the internal MI commands are sequenced properly.
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testConcurrentReadWrite() throws Throwable {
|
||||
// Next we test that we can deal with a write request and read request
|
||||
// at
|
||||
// the same time and vice-versa
|
||||
|
||||
SyncUtil.runToLocation("testConcurrent");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testConcurrent_init");
|
||||
|
||||
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
|
@ -1007,7 +1010,6 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
* to make sure the internal MI commands are sequenced properly.
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testConcurrentReadWriteChildren() throws Throwable {
|
||||
// Finally, we go nuts and request two reads, while requesting
|
||||
// a get children and get children count.
|
||||
|
@ -1015,8 +1017,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
// go through at any time and we don't exactly know when it will
|
||||
// change the value we are reading.
|
||||
|
||||
SyncUtil.runToLocation("testConcurrent");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testConcurrent_init");
|
||||
|
||||
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
|
@ -1148,13 +1149,11 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
* an MI command to the back-end
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testWriteCache() throws Throwable {
|
||||
// Test the cache by changing a value but triggering a read before the
|
||||
// write clears the cache
|
||||
|
||||
SyncUtil.runToLocation("testConcurrent");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testConcurrent_init");
|
||||
|
||||
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
|
@ -1295,11 +1294,9 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
* expression
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testExprAddress() throws Throwable {
|
||||
|
||||
SyncUtil.runToLocation("testAddress");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(2, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testAddress_init");
|
||||
|
||||
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
|
@ -1392,22 +1389,21 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
*/
|
||||
@Test
|
||||
public void testNamingSameDepth() throws Throwable {
|
||||
SyncUtil.runToLocation("testName1");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testName1_init");
|
||||
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
Map<String, String[]> tests = new HashMap<>();
|
||||
tests.put("a", new String[] { "0x1", "01", "1", "1", "1", "1" });
|
||||
executeExpressionSubTests(tests, frameDmc);
|
||||
|
||||
SyncUtil.runToLocation("testName2");
|
||||
runToTag("testName2_init");
|
||||
stoppedEvent = SyncUtil.step(1, StepType.STEP_INTO);
|
||||
frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
tests = new HashMap<>();
|
||||
tests.put("a", new String[] { "0x2", "02", "10", "2", "2", "2" });
|
||||
executeExpressionSubTests(tests, frameDmc);
|
||||
|
||||
SyncUtil.runToLocation("testName1");
|
||||
runToTag("testName1_init");
|
||||
stoppedEvent = SyncUtil.step(1, StepType.STEP_INTO);
|
||||
frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
tests = new HashMap<>();
|
||||
|
@ -1421,23 +1417,21 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
*/
|
||||
@Test
|
||||
public void testNamingSameMethod() throws Throwable {
|
||||
SyncUtil.runToLocation("testSameName");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(2, StepType.STEP_INTO);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testSameName1_a_init");
|
||||
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
Map<String, String[]> tests = new HashMap<>();
|
||||
tests.put("a", new String[] { "0x1", "01", "1", "1", "1", "1" });
|
||||
executeExpressionSubTests(tests, frameDmc);
|
||||
|
||||
SyncUtil.step(StepType.STEP_RETURN);
|
||||
stoppedEvent = SyncUtil.step(2, StepType.STEP_INTO);
|
||||
stoppedEvent = runToTag("testSameName1_b_init");
|
||||
frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
tests = new HashMap<>();
|
||||
tests.put("a", new String[] { "0x2", "02", "10", "2", "2", "2" });
|
||||
executeExpressionSubTests(tests, frameDmc);
|
||||
|
||||
SyncUtil.step(StepType.STEP_RETURN);
|
||||
stoppedEvent = SyncUtil.step(2, StepType.STEP_INTO);
|
||||
stoppedEvent = runToTag("testSameName1_a_init");
|
||||
frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
tests = new HashMap<>();
|
||||
tests.put("a", new String[] { "0x3", "03", "11", "3", "3", "3" });
|
||||
|
@ -1449,12 +1443,11 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
* a thread selected, the top-most stack frame is used for evaluation
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testThreadContext() throws Throwable {
|
||||
|
||||
// Step to a stack level of 2 to be able to test differen stack frames
|
||||
SyncUtil.runToLocation("locals2");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(StepType.STEP_OVER);
|
||||
// Step to a stack level of 2 to be able to test different stack frames
|
||||
String tag = String.format("%s:%d", SOURCE_NAME, getLineForTag("locals2_init"));
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.runToLocation(tag);
|
||||
|
||||
// Create a map of expressions to expected values.
|
||||
Map<String, String[]> tests = new HashMap<>();
|
||||
|
@ -1477,7 +1470,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
@Test
|
||||
public void testChildNamingSameMethod() throws Throwable {
|
||||
SyncUtil.runToLocation("testSameName");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(4, StepType.STEP_INTO);
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(5, StepType.STEP_INTO);
|
||||
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
|
||||
|
@ -1637,20 +1630,17 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
*/
|
||||
@Test
|
||||
public void testUpdatingChildren() throws Throwable {
|
||||
SyncUtil.runToLocation("testUpdateChildren");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(2, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testUpdateChildren_init");
|
||||
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
doUpdateTest(frameDmc, 0);
|
||||
|
||||
// Re-run the test to test out-of-scope update again
|
||||
SyncUtil.step(StepType.STEP_RETURN);
|
||||
stoppedEvent = SyncUtil.step(3, StepType.STEP_INTO);
|
||||
stoppedEvent = runToTag("testUpdateChildren_init");
|
||||
final IFrameDMContext frameDmc2 = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
doUpdateTest(frameDmc2, 100);
|
||||
|
||||
// Re-run the test within a different method test out-of-scope updates
|
||||
SyncUtil.step(StepType.STEP_RETURN);
|
||||
stoppedEvent = SyncUtil.step(3, StepType.STEP_INTO);
|
||||
stoppedEvent = runToTag("testUpdateChildren2_init");
|
||||
final IFrameDMContext frameDmc3 = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
doUpdateTest(frameDmc3, 200);
|
||||
|
||||
|
@ -1963,8 +1953,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
*/
|
||||
@Test
|
||||
public void testUpdateGDBBug() throws Throwable {
|
||||
SyncUtil.runToLocation("testUpdateGDBBug");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testUpdateGDBBug_init");
|
||||
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
|
||||
|
@ -2060,8 +2049,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
*/
|
||||
@Test
|
||||
public void testUpdateIssue() throws Throwable {
|
||||
SyncUtil.runToLocation("testUpdateIssue");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testUpdateIssue_init");
|
||||
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
|
||||
|
@ -2178,8 +2166,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
*/
|
||||
@Test
|
||||
public void testUpdateIssue2() throws Throwable {
|
||||
SyncUtil.runToLocation("testUpdateIssue2");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testUpdateIssue2_init");
|
||||
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
|
||||
|
@ -2300,8 +2287,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
*/
|
||||
@Test
|
||||
public void testConcurrentReadAndUpdateChild() throws Throwable {
|
||||
SyncUtil.runToLocation("testConcurrentReadAndUpdateChild");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testConcurrentReadAndUpdateChild_init");
|
||||
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
|
||||
|
@ -2418,7 +2404,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
@Test
|
||||
public void testConcurrentUpdateOutOfScopeChildThenParent() throws Throwable {
|
||||
SyncUtil.runToLocation("testConcurrentUpdateOutOfScopeChildThenParent");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(2, StepType.STEP_INTO);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testConcurrentUpdateOutOfScopeChildThenParent1_init");
|
||||
|
||||
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
|
@ -2471,7 +2457,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
wait.waitReset();
|
||||
|
||||
SyncUtil.step(StepType.STEP_RETURN);
|
||||
stoppedEvent = SyncUtil.step(2, StepType.STEP_INTO);
|
||||
stoppedEvent = runToTag("testConcurrentUpdateOutOfScopeChildThenParent2_init");
|
||||
|
||||
// Now step to another method to make the previous variable objects out-of-scope
|
||||
// then first request the child and then the parent. We want to test this order
|
||||
|
@ -2825,7 +2811,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
// Now run the current sub-test using each of
|
||||
// the formats available for the type of
|
||||
// the expression in the sub-test.
|
||||
|
||||
System.out.println(Arrays.toString(formatIds));
|
||||
for (final String formatId : formatIds) {
|
||||
// Get a FormattedValueCMContext object for
|
||||
// the expression-formatID pair.
|
||||
|
@ -3318,10 +3304,8 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
* This test verifies that we can cast to a type and then revert.
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testCastToType() throws Throwable {
|
||||
SyncUtil.runToLocation("testCasting");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(3, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testCasting_init");
|
||||
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, "int_ptr");
|
||||
|
@ -3383,10 +3367,8 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
* This test verifies that we can display as array and then revert.
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testDisplayAsArray() throws Throwable {
|
||||
SyncUtil.runToLocation("testCasting");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(3, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testCasting_init");
|
||||
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, "int_ptr");
|
||||
|
@ -3435,10 +3417,8 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
* and then revert.
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testDisplayAsArrayAndCastToType() throws Throwable {
|
||||
SyncUtil.runToLocation("testCasting");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(3, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testCasting_init");
|
||||
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, "int_ptr");
|
||||
|
@ -4209,11 +4189,9 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
* 7.5.
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testRTTI_7_5() throws Throwable {
|
||||
assumeGdbVersionAtLeast(ITestConstants.SUFFIX_GDB_7_5);
|
||||
SyncUtil.runToLocation("testRTTI");
|
||||
MIStoppedEvent stoppedEvent = SyncUtil.step(3, StepType.STEP_OVER);
|
||||
MIStoppedEvent stoppedEvent = runToTag("testRTTI_tag1");
|
||||
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
|
||||
|
||||
// The expression we will follow as it changes types: derived.ptr
|
||||
|
@ -4229,7 +4207,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
getChildren(exprDmc, expectedValues);
|
||||
|
||||
// Make the type of our expression change
|
||||
SyncUtil.step(1, StepType.STEP_OVER);
|
||||
runToTag("testRTTI_tag2");
|
||||
// Now, the expression should be type Derived
|
||||
getExpressionType(exprDmc, "Derived *");
|
||||
assertChildrenCount(exprDmc, 5);
|
||||
|
@ -4243,7 +4221,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
|
|||
getChildren(exprDmc, expectedValues);
|
||||
|
||||
// Make the type of our expression change
|
||||
SyncUtil.step(1, StepType.STEP_OVER);
|
||||
runToTag("testRTTI_tag3");
|
||||
// Now, the expression should be type OtherDerived
|
||||
getExpressionType(exprDmc, "OtherDerived *");
|
||||
assertChildrenCount(exprDmc, 4);
|
||||
|
|
|
@ -618,8 +618,10 @@ public class MIRunControlTest extends BaseParametrizedTestCase {
|
|||
ServiceEventWaitor<ISuspendedDMEvent> suspendedEventWaitor = new ServiceEventWaitor<>(
|
||||
getGDBLaunch().getSession(), ISuspendedDMEvent.class);
|
||||
|
||||
fRunCtrl.getExecutor().submit(() -> fRunCtrl.runToLine(fThreadExecDmc, SOURCE_NAME,
|
||||
getLineForTag("LINE_MAIN_ALL_THREADS_STARTED"), true, new RequestMonitor(fRunCtrl.getExecutor(), null) {
|
||||
int lineForTag = getLineForTag("LINE_MAIN_ALL_THREADS_STARTED");
|
||||
|
||||
fRunCtrl.getExecutor().submit(() -> fRunCtrl.runToLine(fThreadExecDmc, SOURCE_NAME, lineForTag, true,
|
||||
new RequestMonitor(fRunCtrl.getExecutor(), null) {
|
||||
@Override
|
||||
protected void handleCompleted() {
|
||||
wait.waitFinished(getStatus());
|
||||
|
|
|
@ -360,7 +360,6 @@ public class PostMortemCoreTest extends BaseParametrizedTestCase {
|
|||
* variables.
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testLocalVariables() throws Throwable {
|
||||
doLaunch();
|
||||
|
||||
|
@ -397,7 +396,6 @@ public class PostMortemCoreTest extends BaseParametrizedTestCase {
|
|||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void readMemoryArray() throws Throwable {
|
||||
doLaunch();
|
||||
|
||||
|
|
|
@ -18,12 +18,10 @@ import org.eclipse.cdt.tests.dsf.gdb.tests.ITestConstants;
|
|||
import org.eclipse.cdt.tests.dsf.gdb.tests.MIExpressionsTest;
|
||||
import org.junit.Assume;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
|
||||
@RunWith(Parameterized.class)
|
||||
@Ignore
|
||||
public class MIExpressionsNonStopTest extends MIExpressionsTest {
|
||||
|
||||
@BeforeClass
|
||||
|
|
|
@ -53,7 +53,6 @@ import org.eclipse.cdt.tests.dsf.gdb.tests.ITestConstants;
|
|||
import org.junit.Assert;
|
||||
import org.junit.Assume;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
|
||||
|
@ -177,7 +176,6 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
|
|||
* triggers a GDB notification that a new frame has been selected.
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testChangingCurrentFrameCLINotification() throws Throwable {
|
||||
ServiceEventWaitor<MIStoppedEvent> eventWaitor = new ServiceEventWaitor<>(fMultiRunControl.getSession(),
|
||||
MIStoppedEvent.class);
|
||||
|
@ -265,7 +263,6 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
|
|||
* the current GDB stack frame
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void testGdbSyncServiceCanSwitchGDBStackFrame() throws Throwable {
|
||||
ServiceEventWaitor<MIStoppedEvent> eventWaitor = new ServiceEventWaitor<>(fMultiRunControl.getSession(),
|
||||
MIStoppedEvent.class);
|
||||
|
|
Loading…
Add table
Reference in a new issue