From 639aa9e218c81648cce121bfd0aeec9503fb55c5 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 25 Jan 2013 01:26:55 +0400 Subject: [PATCH] Codegen tests: don't generate twice when a test fails --- .../jet/codegen/CodegenTestCase.java | 29 +++++++++---------- .../GenerateNotNullAssertionsTest.java | 2 +- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java index ab89aaeebf3..21017d1da0e 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java @@ -230,17 +230,14 @@ public abstract class CodegenTestCase extends UsefulTestCase { } protected String generateToText() { - if (alreadyGenerated == null) - alreadyGenerated = generateCommon(ClassBuilderFactories.TEST, myEnvironment, myFiles); + if (alreadyGenerated == null) { + alreadyGenerated = generateCommon(myEnvironment, myFiles); + } return alreadyGenerated.getFactory().createText(); } @NotNull - protected static GenerationState generateCommon( - @NotNull ClassBuilderFactory classBuilderFactory, - @NotNull JetCoreEnvironment environment, - @NotNull CodegenTestFiles files - ) { + protected static GenerationState generateCommon(@NotNull JetCoreEnvironment environment, @NotNull CodegenTestFiles files) { AnalyzeExhaust analyzeExhaust = AnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationAndCheckForErrors( environment.getProject(), files.getPsiFiles(), @@ -250,7 +247,7 @@ public abstract class CodegenTestCase extends UsefulTestCase { AnalyzingUtils.throwExceptionOnErrors(analyzeExhaust.getBindingContext()); CompilerConfiguration configuration = environment.getConfiguration(); GenerationState state = new GenerationState( - environment.getProject(), classBuilderFactory, Progress.DEAF, analyzeExhaust.getBindingContext(), files.getPsiFiles(), + environment.getProject(), ClassBuilderFactories.TEST, Progress.DEAF, analyzeExhaust.getBindingContext(), files.getPsiFiles(), configuration.get(JVMConfigurationKeys.BUILTIN_TO_JAVA_TYPES_MAPPING_KEY, BuiltinToJavaTypesMapping.ENABLED), configuration.get(JVMConfigurationKeys.GENERATE_NOT_NULL_ASSERTIONS, true), configuration.get(JVMConfigurationKeys.GENERATE_NOT_NULL_PARAMETER_ASSERTIONS, true), @@ -291,25 +288,25 @@ public abstract class CodegenTestCase extends UsefulTestCase { @NotNull protected ClassFileFactory generateClassesInFile() { - GenerationState generationState = generateClassesInFileGetState(); - return generationState.getFactory(); + return generateClassesInFileGetState().getFactory(); } @NotNull protected GenerationState generateClassesInFileGetState() { - GenerationState generationState; try { - generationState = generateCommon(ClassBuilderFactories.TEST, myEnvironment, myFiles); - - if (DxChecker.RUN_DX_CHECKER) { - DxChecker.check(generationState.getFactory()); + if (alreadyGenerated == null) { + alreadyGenerated = generateCommon(myEnvironment, myFiles); } + if (DxChecker.RUN_DX_CHECKER) { + DxChecker.check(alreadyGenerated.getFactory()); + } + + return alreadyGenerated; } catch (Throwable e) { System.out.println(generateToText()); throw ExceptionUtils.rethrow(e); } - return generationState; } protected Method generateFunction() { diff --git a/compiler/tests/org/jetbrains/jet/codegen/GenerateNotNullAssertionsTest.java b/compiler/tests/org/jetbrains/jet/codegen/GenerateNotNullAssertionsTest.java index f1c5edaa0a4..a5efe0d7557 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/GenerateNotNullAssertionsTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/GenerateNotNullAssertionsTest.java @@ -78,7 +78,7 @@ public class GenerateNotNullAssertionsTest extends CodegenTestCase { CompilerConfiguration configuration = JetTestUtils.compilerConfigurationForTests( ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK); JetCoreEnvironment tmpEnvironment = new JetCoreEnvironment(getTestRootDisposable(), configuration); - GenerationState state = generateCommon(ClassBuilderFactories.TEST, tmpEnvironment, + GenerationState state = generateCommon(tmpEnvironment, CodegenTestFiles.create(tmpEnvironment.getProject(), new String[] {"notNullAssertions/noAssertionsForKotlin.kt"})); File compiledDirectory = new File(FileUtil.getTempDirectory(), "kotlin-classes"); CompileEnvironmentUtil.writeToOutputDirectory(state.getFactory(), compiledDirectory);