Failed test toutput improved

This commit is contained in:
Andrey Breslav
2012-11-12 11:52:59 +04:00
parent 57120e6d5c
commit d6c8b8683b
3 changed files with 30 additions and 2 deletions
@@ -26,6 +26,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.cli.common.CLIConfigurationKeys;
import org.jetbrains.jet.cli.common.messages.MessageCollector;
import org.jetbrains.jet.cli.common.messages.MessageRenderer;
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
import org.jetbrains.jet.codegen.ClassFileFactory;
import org.jetbrains.jet.codegen.GeneratedClassLoader;
@@ -104,7 +105,8 @@ public class CompileEnvironmentUtil {
GenerationState generationState = KotlinToJVMBytecodeCompiler.analyzeAndGenerate(scriptEnvironment, false);
if (generationState == null) {
throw new CompileEnvironmentException("Module script " + moduleScriptFile + " analyze failed");
throw new CompileEnvironmentException("Module script " + moduleScriptFile + " analyze failed:\n" +
loadModuleScriptText(moduleScriptFile));
}
List<Module> modules = runDefineModules(moduleScriptFile, generationState.getFactory());
@@ -246,4 +248,16 @@ public class CompileEnvironmentUtil {
}
}
}
// Used for debug output only
private static String loadModuleScriptText(String moduleScriptFile) {
String moduleScriptText;
try {
moduleScriptText = FileUtil.loadFile(new File(moduleScriptFile));
}
catch (IOException e) {
moduleScriptText = "Can't load module script text:\n" + MessageRenderer.PLAIN.renderException(e);
}
return moduleScriptText;
}
}
@@ -98,4 +98,9 @@ public final class Message {
}
Assert.assertEquals(other.message, this.message);
}
@Override
public String toString() {
return category + ": " + message + " at " + line + ":" + column + " in " + url;
}
}
@@ -43,7 +43,16 @@ public final class MessageChecker {
public void finish() {
if (iterator.hasNext()) {
fail("More message than expected:\n" + iterator.next().message);
StringBuilder builder = messagesToString(iterator);
fail("More messages than expected:\n" + builder.toString());
}
}
private StringBuilder messagesToString(Iterator<Message> iterator) {
StringBuilder builder = new StringBuilder();
while (iterator.hasNext()) {
builder.append(iterator.next()).append("\n\n");
}
return builder;
}
}