Skip to content

Commit

Permalink
install FileProjectConfig for relative paths in trace files
Browse files Browse the repository at this point in the history
  • Loading branch information
LorenzoBettini committed May 17, 2024
1 parent 19cb2bc commit e597612
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -278,8 +278,7 @@ public void testPathInTraceFile() throws IOException {
assertTrue(testBuilder.launch());

String traceSourcePath = loadTraceSourcePath(PROJECT_DIR + "/src-gen/my/test/.First.java._trace");
// TODO: should be true, instead it is absolute
assertFalse(traceSourcePath, traceSourcePath.startsWith("src"));
assertTrue(traceSourcePath, traceSourcePath.startsWith("com/acme"));
}

private String loadTraceSourcePath(String file) throws IOException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,11 @@
import java.util.Properties;
import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Predicate;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
import java.util.regex.Pattern;
Expand Down Expand Up @@ -99,13 +97,14 @@
import org.eclipse.xtext.validation.CheckMode;
import org.eclipse.xtext.validation.IResourceValidator;
import org.eclipse.xtext.validation.Issue;
import org.eclipse.xtext.workspace.FileProjectConfig;
import org.eclipse.xtext.workspace.ProjectConfigAdapter;
import org.eclipse.xtext.xbase.lib.Exceptions;
import org.eclipse.xtext.xbase.lib.IterableExtensions;

import com.google.common.base.Joiner;
import com.google.common.base.Stopwatch;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ForwardingSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
Expand Down Expand Up @@ -263,6 +262,7 @@ public boolean launch() {
}

XtextResourceSet resourceSet = resourceSetProvider.get();
configureWorkspace(resourceSet);
Iterable<String> allClassPathEntries = Iterables.concat(sourceDirs, classPathEntries);
if (stubsDirectory != null) {
LOG.info("Installing type provider.");
Expand Down Expand Up @@ -344,6 +344,22 @@ public boolean launch() {
}
}

/**
* Allows for relative source folders are properly generated in the
* trace files, instead of absolute ones.
*
* See https://github.com/eclipse/xtext/issues/2957
*
* @since 2.35
*/
protected void configureWorkspace(ResourceSet resourceSet) {
FileProjectConfig projectConfig = new FileProjectConfig(new File(baseDir), baseDir);
for (String sourceDir : sourceDirs) {
projectConfig.addSourceFolder(sourceDir);
}
ProjectConfigAdapter.install(resourceSet, projectConfig);
}

private void writeClassPathConfiguration(Iterable<String> modelRoots, boolean classpath) {
try {
File file = new File(classpathConfigurationLocation);
Expand Down
3 changes: 2 additions & 1 deletion org.eclipse.xtext/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,8 @@ Export-Package: org.eclipse.xtext;version="2.35.0",
org.eclipse.xtext.xbase.testing,
org.eclipse.xtext.xbase.tests,
org.eclipse.xtext.xbase.ui,
org.eclipse.xtext.xbase.ide",
org.eclipse.xtext.xbase.ide,
org.eclipse.xtext.builder.standalone",
org.eclipse.xtext.xtext;version="2.35.0";
x-friends:="org.eclipse.xtext.ide,
org.eclipse.xtext.extras.tests,
Expand Down

0 comments on commit e597612

Please sign in to comment.