/** https://bugs.eclipse.org/bugs/show_bug.cgi?id=400193 */
  @Test
  public void testSourceRelativeOutput() throws Exception {
    IProject project = testHelper.getProject();
    String srcFolder = "/foo/bar/bug";
    JavaProjectSetupUtil.addSourceFolder(JavaCore.create(project), srcFolder);

    String path = srcFolder + "/Foo.xtend";
    String fullFileName = project.getName() + path;
    IFile sourceFile = testHelper.createFileImpl(fullFileName, "class Foo {}");
    assertTrue(sourceFile.exists());
    waitForBuild();

    IFile generatedFile = project.getFile("foo/bar/xtend-gen/Foo.java");
    assertTrue(generatedFile.exists());
    IFile traceFile = testHelper.getProject().getFile("foo/bar/xtend-gen/.Foo.java._trace");
    assertTrue(traceFile.exists());
    IFile classFile = testHelper.getProject().getFile("/bin/Foo.class");
    assertTrue(classFile.exists());

    List<IPath> traceFiles = traceMarkers.findTraceFiles(sourceFile);
    assertTrue(traceFiles.contains(traceFile.getFullPath()));

    sourceFile.delete(false, new NullProgressMonitor());
    waitForBuild();
    assertFalse(generatedFile.exists());
    assertFalse(traceFile.exists());
  }
  public static void setUp() throws Exception {
    if (javaProject != null) return;
    javaProject =
        createJavaProject(
            "projectWithoutSources",
            new String[] {JavaCore.NATURE_ID, "org.eclipse.pde.PluginNature"});
    String path = "/org/eclipse/xtext/common/types/testSetups";
    String jarFileName = "/testData.jar";
    IFile jarFile =
        PluginUtil.copyFileToWorkspace(
            AbstractActivator.getInstance(),
            path + jarFileName,
            javaProject.getProject(),
            jarFileName);
    JavaProjectSetupUtil.addJarToClasspath(javaProject, jarFile);

    javaProjectWithSources =
        createJavaProject(
            "projectWithSources",
            new String[] {JavaCore.NATURE_ID, "org.eclipse.pde.PluginNature"});
    IFolder sourceFolder = JavaProjectSetupUtil.addSourceFolder(javaProjectWithSources, "src");

    List<String> filesToCopy = readResource(path + "/files.list");
    IFolder srcFolder = sourceFolder.getFolder(new Path(path));
    createFolderRecursively(srcFolder);
    for (String fileToCopy : filesToCopy) {
      List<String> content = readResource(path + "/" + fileToCopy);
      String contentAsString = Strings.concat("\n", content);
      createFile(
          fileToCopy.substring(0, fileToCopy.length() - ".txt".length()),
          srcFolder,
          contentAsString);
    }
    createFile(
        "ClassWithDefaultPackage.java", sourceFolder, "public class ClassWithDefaultPackage {}");
    waitForAutoBuild();
  }