KT-1308 Tests are compiled into production folder

This commit is contained in:
Maxim Shafirov
2012-02-17 20:37:21 +04:00
parent 91da410829
commit 27d3148252
@@ -80,8 +80,29 @@ public class JetCompiler implements TranslatingCompiler {
public void compile(final CompileContext compileContext, Chunk<Module> moduleChunk, final VirtualFile[] virtualFiles, OutputSink outputSink) {
if (virtualFiles.length == 0) return;
List<VirtualFile> productionFiles = new ArrayList<VirtualFile>();
List<VirtualFile> testFiles = new ArrayList<VirtualFile>();
for (VirtualFile file : virtualFiles) {
final boolean inTests = ((CompileContextEx)compileContext).isInTestSourceContent(file);
if (inTests) {
testFiles.add(file);
}
else {
productionFiles.add(file);
}
}
final Module module = compileContext.getModuleByFile(virtualFiles[0]);
final VirtualFile outputDir = compileContext.getModuleOutputDirectory(module);
doCompile(compileContext, moduleChunk, productionFiles, module, false);
doCompile(compileContext, moduleChunk, testFiles, module, true);
}
private void doCompile(CompileContext compileContext, Chunk<Module> moduleChunk, List<VirtualFile> files, Module module, boolean tests) {
if (files.isEmpty()) return;
VirtualFile mainOutput = compileContext.getModuleOutputDirectory(module);
final VirtualFile outputDir = tests ? compileContext.getModuleOutputDirectoryForTests(module) : mainOutput;
if (outputDir == null) {
compileContext.addMessage(ERROR, "[Internal Error] No output directory", "", -1, -1);
return;
@@ -100,7 +121,7 @@ public class JetCompiler implements TranslatingCompiler {
script.append("fun project() {\n");
script.append("module(\"" + moduleChunk.getNodes().iterator().next().getName() + "\") {\n");
for (VirtualFile sourceFile : virtualFiles) {
for (VirtualFile sourceFile : files) {
script.append("sources += \"" + path(sourceFile) + "\"\n");
}
@@ -120,6 +141,10 @@ public class JetCompiler implements TranslatingCompiler {
script.append("classpath += \"" + path(root) + "\"\n");
}
if (tests && mainOutput != null) {
script.append("classpath += \"" + path(mainOutput) + "\"\n");
}
script.append("}\n");
script.append("}\n");