diff options
author | Jonah Graham | 2016-03-18 23:24:13 +0000 |
---|---|---|
committer | Marc Khouzam | 2016-03-19 23:44:19 +0000 |
commit | a56abb4783d3029f54a523fad248d8dceec4497d (patch) | |
tree | fed6751cd8b7bd6c7b9c26e3593f0e4f73923366 /dsf-gdb/org.eclipse.cdt.dsf.gdb.tests | |
parent | 8d4ea57654a6454b43686678db0363ce74a29fab (diff) | |
download | org.eclipse.cdt-a56abb4783d3029f54a523fad248d8dceec4497d.tar.gz org.eclipse.cdt-a56abb4783d3029f54a523fad248d8dceec4497d.tar.xz org.eclipse.cdt-a56abb4783d3029f54a523fad248d8dceec4497d.zip |
Bug 472765: use Strings for backend path in Map Entries
Preserve the user supplied backend path as a string so that it matches
what GDB (backend) later reports as a file name to resolve.
Condensed history:
Traditionally in source mapping container, the backend path was stored
as an IPath and that was used to compare against the debug information
being returned by GDB. This worked well when the platform compiled for
matched the platform run on, but when there was Windows/Linux together
that did not work. So as part of Bug 393791 a workaround was done to try
and use hand crafted MapEntrySourceContainer.createPath() instead of
Path constructor to preserve some of the differences. This solution had
its limitations too as UNC paths still could not be represented, See
open Bug 386675.
Change-Id: I4c8f62114a2c6019dc9d07ce446ac424be8b230c
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
Diffstat (limited to 'dsf-gdb/org.eclipse.cdt.dsf.gdb.tests')
2 files changed, 102 insertions, 0 deletions
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/AllTests.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/AllTests.java index 527ded83908..451dd8eaece 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/AllTests.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/AllTests.java @@ -27,6 +27,7 @@ import org.junit.runners.Suite.SuiteClasses; LaunchUtilsTest.class, MIStringHandlerTests.class, ProcStatParserTest.class, + FilePartsTest.class, }) public class AllTests { // Often overriding BeforeClass method here diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/FilePartsTest.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/FilePartsTest.java new file mode 100644 index 00000000000..fe17cc021fc --- /dev/null +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/FilePartsTest.java @@ -0,0 +1,101 @@ +/******************************************************************************* + * Copyright (c) 2016 Kichwa Coders AB 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: + * Jonah Graham (Kichwa Coders) - Initial Implementation + *******************************************************************************/ +package org.eclipse.cdt.dsf.gdb.tests; + +import static org.junit.Assert.assertEquals; + +import org.eclipse.cdt.debug.core.CDebugUtils; +import org.junit.Test; + +/** + * TODO: Move this test closer to the code it is testing. + * + * At the time I wrote this test, there was no obvious place to put it, a test + * suite for org.eclipse.cdt.debug.core is needed. + * + */ +public class FilePartsTest { + @Test + public void testFileParts() { + assertEquals("", CDebugUtils.getFileParts("").getFolder()); + assertEquals("", CDebugUtils.getFileParts("").getFileName()); + assertEquals("", CDebugUtils.getFileParts("").getExtension()); + + assertEquals("", CDebugUtils.getFileParts(".").getFolder()); + assertEquals(".", CDebugUtils.getFileParts(".").getFileName()); + assertEquals("", CDebugUtils.getFileParts(".").getExtension()); + + assertEquals("", CDebugUtils.getFileParts(".d").getFolder()); + assertEquals(".d", CDebugUtils.getFileParts(".d").getFileName()); + assertEquals("d", CDebugUtils.getFileParts(".d").getExtension()); + + assertEquals("", CDebugUtils.getFileParts(".dot").getFolder()); + assertEquals(".dot", CDebugUtils.getFileParts(".dot").getFileName()); + assertEquals("dot", CDebugUtils.getFileParts(".dot").getExtension()); + + assertEquals("", CDebugUtils.getFileParts("file").getFolder()); + assertEquals("file", CDebugUtils.getFileParts("file").getFileName()); + assertEquals("", CDebugUtils.getFileParts("file").getExtension()); + + assertEquals("", CDebugUtils.getFileParts("file.").getFolder()); + assertEquals("file.", CDebugUtils.getFileParts("file.").getFileName()); + assertEquals("", CDebugUtils.getFileParts("file.").getExtension()); + + assertEquals("", CDebugUtils.getFileParts("file.d").getFolder()); + assertEquals("file.d", CDebugUtils.getFileParts("file.d").getFileName()); + assertEquals("d", CDebugUtils.getFileParts("file.d").getExtension()); + + assertEquals("", CDebugUtils.getFileParts("file.dot").getFolder()); + assertEquals("file.dot", CDebugUtils.getFileParts("file.dot").getFileName()); + assertEquals("dot", CDebugUtils.getFileParts("file.dot").getExtension()); + + assertEquals("/folder/", CDebugUtils.getFileParts("/folder/file.dot").getFolder()); + assertEquals("file.dot", CDebugUtils.getFileParts("/folder/file.dot").getFileName()); + assertEquals("dot", CDebugUtils.getFileParts("/folder/file.dot").getExtension()); + + assertEquals("/folder1/folder2/folder3/", CDebugUtils.getFileParts("/folder1/folder2/folder3/file.dot").getFolder()); + assertEquals("file.dot", CDebugUtils.getFileParts("/folder/file.dot").getFileName()); + assertEquals("dot", CDebugUtils.getFileParts("/folder/file.dot").getExtension()); + + assertEquals("/folder/", CDebugUtils.getFileParts("/folder/.dot").getFolder()); + assertEquals(".dot", CDebugUtils.getFileParts("/folder/.dot").getFileName()); + assertEquals("dot", CDebugUtils.getFileParts("/folder/.dot").getExtension()); + + assertEquals("/folder/../other/", CDebugUtils.getFileParts("/folder/../other/.dot").getFolder()); + assertEquals(".dot", CDebugUtils.getFileParts("/folder/../other/.dot").getFileName()); + assertEquals("dot", CDebugUtils.getFileParts("/folder/../other/.dot").getExtension()); + + assertEquals("/folder//", CDebugUtils.getFileParts("/folder//.dot").getFolder()); + assertEquals(".dot", CDebugUtils.getFileParts("/folder//.dot").getFileName()); + assertEquals("dot", CDebugUtils.getFileParts("/folder//.dot").getExtension()); + + assertEquals("C:\\folder\\", CDebugUtils.getFileParts("C:\\folder\\.dot").getFolder()); + assertEquals(".dot", CDebugUtils.getFileParts("C:\\folder\\.dot").getFileName()); + assertEquals("dot", CDebugUtils.getFileParts("C:\\folder\\.dot").getExtension()); + + assertEquals("C:\\\\folder\\", CDebugUtils.getFileParts("C:\\\\folder\\.dot").getFolder()); + assertEquals(".dot", CDebugUtils.getFileParts("C:\\\\folder\\.dot").getFileName()); + assertEquals("dot", CDebugUtils.getFileParts("C:\\\\folder\\.dot").getExtension()); + + assertEquals("/folder1/folder2/folder3/", CDebugUtils.getFileParts("/folder1/folder2/folder3/").getFolder()); + assertEquals("", CDebugUtils.getFileParts("/folder1/folder2/folder3/").getFileName()); + assertEquals("", CDebugUtils.getFileParts("/folder1/folder2/folder3/").getExtension()); + + assertEquals("/", CDebugUtils.getFileParts("/").getFolder()); + assertEquals("", CDebugUtils.getFileParts("/").getFileName()); + assertEquals("", CDebugUtils.getFileParts("/").getExtension()); + + assertEquals("\\\\unc\\path\\", CDebugUtils.getFileParts("\\\\unc\\path\\file.dot").getFolder()); + assertEquals("file.dot", CDebugUtils.getFileParts("\\\\unc\\path\\file.dot").getFileName()); + assertEquals("dot", CDebugUtils.getFileParts("\\\\unc\\path\\file.dot").getExtension()); + + } +} |