mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-16 08:48:55 +00:00
fix TraceFileNameProvider on windows
This commit is contained in:
parent
e3bd95a4f6
commit
0b32cc48cb
2 changed files with 67 additions and 3 deletions
|
@ -9,21 +9,25 @@ package org.eclipse.xtext.generator.trace;
|
|||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import com.google.common.base.CharMatcher;
|
||||
|
||||
/**
|
||||
* @author Moritz Eysholdt - Initial contribution and API
|
||||
*/
|
||||
public class TraceFileNameProvider {
|
||||
|
||||
private static final CharMatcher SEPARATOR_MATCHER = CharMatcher.anyOf("/\\");
|
||||
|
||||
public static final String TRACE_FILE_EXTENSION = "._trace";
|
||||
|
||||
private static final Pattern TRACE_FILE_NAME_PATTERN = Pattern.compile(".*/?\\..+\\._trace$");
|
||||
private static final Pattern TRACE_FILE_NAME_PATTERN = Pattern.compile(".*\\..+\\._trace$");
|
||||
|
||||
public boolean isTraceFileName(String traceFileName) {
|
||||
return TRACE_FILE_NAME_PATTERN.matcher(traceFileName).matches();
|
||||
}
|
||||
|
||||
public String getTraceFromJava(String javaFileName) {
|
||||
int i = javaFileName.lastIndexOf('/');
|
||||
int i = SEPARATOR_MATCHER.lastIndexIn(javaFileName);
|
||||
if (i < 0)
|
||||
return "." + javaFileName + TRACE_FILE_EXTENSION;
|
||||
else
|
||||
|
@ -31,7 +35,7 @@ public class TraceFileNameProvider {
|
|||
}
|
||||
|
||||
public String getJavaFromTrace(String traceFileName) {
|
||||
int i = traceFileName.lastIndexOf('/');
|
||||
int i = SEPARATOR_MATCHER.lastIndexIn(traceFileName);
|
||||
if (i < 0)
|
||||
return traceFileName.substring(1, traceFileName.length() - TRACE_FILE_EXTENSION.length());
|
||||
else
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) 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
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.generator.trace
|
||||
|
||||
import org.junit.Test
|
||||
import static org.junit.Assert.*
|
||||
|
||||
class TraceFileNameProviderTest {
|
||||
val nameProvider = new TraceFileNameProvider
|
||||
|
||||
@Test
|
||||
def testTraceFileNameOnWindows() {
|
||||
assertTrue(nameProvider.isTraceFileName("C:\\workspace\\.Foo.java._trace"))
|
||||
}
|
||||
@Test
|
||||
def testTraceFileNameOnUnix() {
|
||||
assertTrue(nameProvider.isTraceFileName("/workspace/.Foo.java._trace"))
|
||||
}
|
||||
|
||||
@Test
|
||||
def testTraceFromJavaSimple() {
|
||||
val trace = nameProvider.getTraceFromJava("Foo.java")
|
||||
assertEquals(".Foo.java._trace", trace)
|
||||
}
|
||||
|
||||
@Test
|
||||
def testTraceFromJavaOnWindows() {
|
||||
val trace = nameProvider.getTraceFromJava("C:\\workspace\\Foo.java")
|
||||
assertEquals("C:\\workspace\\.Foo.java._trace", trace)
|
||||
}
|
||||
|
||||
@Test
|
||||
def testTraceFromJavaOnUnix() {
|
||||
val trace = nameProvider.getTraceFromJava("/workspace/Foo.java")
|
||||
assertEquals("/workspace/.Foo.java._trace", trace)
|
||||
}
|
||||
|
||||
@Test
|
||||
def testJavaFromTraceSimple() {
|
||||
val java = nameProvider.getJavaFromTrace(".Foo.java._trace")
|
||||
assertEquals("Foo.java", java)
|
||||
}
|
||||
|
||||
@Test
|
||||
def testJavaFromTraceOnWindows() {
|
||||
val java = nameProvider.getJavaFromTrace("C:\\workspace\\.Foo.java._trace")
|
||||
assertEquals("C:\\workspace\\Foo.java", java)
|
||||
}
|
||||
|
||||
@Test
|
||||
def testJavaFromTraceOnUnix() {
|
||||
val java = nameProvider.getJavaFromTrace("/workspace/.Foo.java._trace")
|
||||
assertEquals("/workspace/Foo.java", java)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue