Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonah Graham2016-03-18 23:24:13 +0000
committerMarc Khouzam2016-03-19 23:44:19 +0000
commita56abb4783d3029f54a523fad248d8dceec4497d (patch)
treefed6751cd8b7bd6c7b9c26e3593f0e4f73923366 /dsf-gdb/org.eclipse.cdt.dsf.gdb.tests
parent8d4ea57654a6454b43686678db0363ce74a29fab (diff)
downloadorg.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')
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/AllTests.java1
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/FilePartsTest.java101
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());
+
+ }
+}

Back to the top