mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-17 15:50:53 +07:00
The runtime module descriptors file should be updated if and only if something changes in the configuration of modules and libraries. Since up-to-date checks in org.jetbrains.jps.incremental.BuildOperations are based on files, we need to have at least one source file registered by the builder for that. Here .idea/modules.xml is used for that. GitOrigin-RevId: ca5e56dfca75d63e4056017a4164dd3fbb20b116
54 lines
2.3 KiB
Kotlin
54 lines
2.3 KiB
Kotlin
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
|
package com.intellij.devkit.runtimeModuleRepository.jps.build
|
|
|
|
import org.jetbrains.jps.builders.CompileScopeTestBuilder
|
|
import org.jetbrains.jps.builders.JpsBuildTestCase
|
|
import org.jetbrains.jps.model.java.JavaSourceRootType
|
|
import org.jetbrains.jps.model.java.JpsJavaExtensionService
|
|
import org.jetbrains.jps.model.module.JpsModule
|
|
import org.jetbrains.jps.model.serialization.impl.JpsProjectSerializationDataExtensionImpl
|
|
import kotlin.io.path.Path
|
|
import kotlin.io.path.createParentDirectories
|
|
import kotlin.io.path.writeText
|
|
|
|
abstract class RuntimeModuleRepositoryTestCase : JpsBuildTestCase() {
|
|
override fun setUp() {
|
|
super.setUp()
|
|
addModule(RUNTIME_REPOSITORY_MARKER_MODULE)
|
|
JpsJavaExtensionService.getInstance().getOrCreateProjectExtension(myProject).outputUrl = getUrl("out")
|
|
val projectDir = Path(getAbsolutePath("project"))
|
|
val modulesXml = projectDir.resolve(".idea/modules.xml")
|
|
modulesXml.createParentDirectories()
|
|
modulesXml.writeText("""
|
|
|<?xml version="1.0" encoding="UTF-8"?>
|
|
|<project version="4">
|
|
| <component name="ProjectModuleManager" />
|
|
|</project>
|
|
""".trimMargin())
|
|
myProject.container.setChild(JpsProjectSerializationDataExtensionImpl.ROLE, JpsProjectSerializationDataExtensionImpl(projectDir))
|
|
}
|
|
|
|
protected fun addModule(name: String, vararg dependencies: JpsModule, withTests: Boolean, withSources: Boolean = true): JpsModule {
|
|
val module = addModule(name, emptyArray(), null, null, jdk)
|
|
if (withSources) {
|
|
module.addSourceRoot(getUrl("$name/src"), JavaSourceRootType.SOURCE)
|
|
}
|
|
if (withTests) {
|
|
module.addSourceRoot(getUrl("$name/testSrc"), JavaSourceRootType.TEST_SOURCE)
|
|
}
|
|
for (dependency in dependencies) {
|
|
module.dependenciesList.addModuleDependency(dependency)
|
|
}
|
|
return module
|
|
}
|
|
|
|
protected fun checkModuleRepository(expected: RawDescriptorListBuilder.() -> Unit) {
|
|
val outputDir = orCreateProjectDir.toPath().resolve("out")
|
|
checkRuntimeModuleRepository(outputDir, expected)
|
|
}
|
|
|
|
protected fun buildAndCheck(expected: RawDescriptorListBuilder.() -> Unit) {
|
|
doBuild(CompileScopeTestBuilder.make().targetTypes(RuntimeModuleRepositoryTarget)).assertSuccessful()
|
|
checkModuleRepository(expected)
|
|
}
|
|
} |