Codegen tests: don't generate twice when a test fails
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user