From 27d314825211cef33cd9f082e613ea95014df41e Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Fri, 17 Feb 2012 20:37:21 +0400 Subject: [PATCH] KT-1308 Tests are compiled into production folder --- .../jet/plugin/compiler/JetCompiler.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/compiler/JetCompiler.java b/idea/src/org/jetbrains/jet/plugin/compiler/JetCompiler.java index fb7a8dec6f6..7a5e5bd0639 100644 --- a/idea/src/org/jetbrains/jet/plugin/compiler/JetCompiler.java +++ b/idea/src/org/jetbrains/jet/plugin/compiler/JetCompiler.java @@ -80,8 +80,29 @@ public class JetCompiler implements TranslatingCompiler { public void compile(final CompileContext compileContext, Chunk moduleChunk, final VirtualFile[] virtualFiles, OutputSink outputSink) { if (virtualFiles.length == 0) return; + List productionFiles = new ArrayList(); + List testFiles = new ArrayList(); + 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 moduleChunk, List 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");