mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
[build scripts] IJI-2659 Extract distribution-content serializer into a separate module
To be reused in PatronusConfigYamlConsistencyTest GitOrigin-RevId: b919569ec72f0e9b3a6d480ae87de747df3cbb0d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
a4bdeebfe1
commit
05d090b07c
1
.idea/modules.xml
generated
1
.idea/modules.xml
generated
@@ -737,6 +737,7 @@
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/diff-api/intellij.platform.diff.iml" filepath="$PROJECT_DIR$/platform/diff-api/intellij.platform.diff.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/diff-impl/intellij.platform.diff.impl.iml" filepath="$PROJECT_DIR$/platform/diff-impl/intellij.platform.diff.impl.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/diff-impl/tests/intellij.platform.diff.tests.iml" filepath="$PROJECT_DIR$/platform/diff-impl/tests/intellij.platform.diff.tests.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/distribution-content/intellij.platform.distributionContent.testFramework.iml" filepath="$PROJECT_DIR$/platform/distribution-content/intellij.platform.distributionContent.testFramework.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/duplicates-analysis/intellij.platform.duplicates.analysis.iml" filepath="$PROJECT_DIR$/platform/duplicates-analysis/intellij.platform.duplicates.analysis.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/platform-tests/durability/intellij.platform.durability.iml" filepath="$PROJECT_DIR$/platform/platform-tests/durability/intellij.platform.durability.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/editor/shared/intellij.platform.editor.iml" filepath="$PROJECT_DIR$/platform/editor/shared/intellij.platform.editor.iml" />
|
||||
|
||||
@@ -51,6 +51,7 @@ jvm_library(
|
||||
"@lib//:tc_service_messages",
|
||||
"//platform/buildData",
|
||||
"//platform/util/zip",
|
||||
"//platform/distribution-content:distributionContent-testFramework",
|
||||
]
|
||||
)
|
||||
### auto-generated section `build intellij.platform.buildScripts.testFramework` end
|
||||
@@ -66,5 +66,6 @@
|
||||
<orderEntry type="library" name="tcServiceMessages" level="project" />
|
||||
<orderEntry type="module" module-name="intellij.platform.buildData" />
|
||||
<orderEntry type="module" module-name="intellij.platform.util.zip" />
|
||||
<orderEntry type="module" module-name="intellij.platform.distributionContent.testFramework" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -4,6 +4,10 @@ package com.intellij.platform.buildScripts.testFramework.distributionContent
|
||||
|
||||
import com.intellij.platform.buildScripts.testFramework.runTestBuild
|
||||
import com.intellij.platform.buildScripts.testFramework.spanName
|
||||
import com.intellij.platform.distributionContent.testFramework.FileEntry
|
||||
import com.intellij.platform.distributionContent.testFramework.PluginContentReport
|
||||
import com.intellij.platform.distributionContent.testFramework.deserializeContentData
|
||||
import com.intellij.platform.distributionContent.testFramework.deserializePluginData
|
||||
import com.intellij.util.lang.HashMapZipFile
|
||||
import kotlinx.serialization.SerializationException
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.platform.buildScripts.testFramework.distributionContent
|
||||
|
||||
import com.intellij.platform.distributionContent.testFramework.FileEntry
|
||||
import com.intellij.platform.distributionContent.testFramework.ModuleEntry
|
||||
import com.intellij.platform.distributionContent.testFramework.deserializeContentData
|
||||
import com.intellij.platform.distributionContent.testFramework.serializeContentEntries
|
||||
import com.intellij.platform.testFramework.core.FileComparisonFailedError
|
||||
import kotlinx.serialization.SerializationException
|
||||
import org.assertj.core.util.diff.DiffUtils
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.platform.buildScripts.testFramework.pluginModel
|
||||
|
||||
import com.intellij.platform.buildScripts.testFramework.distributionContent.FileEntry
|
||||
import com.intellij.platform.buildScripts.testFramework.distributionContent.deserializeContentData
|
||||
import com.intellij.platform.distributionContent.testFramework.FileEntry
|
||||
import com.intellij.platform.distributionContent.testFramework.deserializeContentData
|
||||
import org.jetbrains.jps.model.java.JpsJavaExtensionService
|
||||
import org.jetbrains.jps.model.module.JpsModule
|
||||
import org.jetbrains.jps.util.JpsPathUtil
|
||||
@@ -43,7 +43,7 @@ private class YamlFileBasedPluginLayoutProvider(
|
||||
private val nameOfTestWhichGeneratesFiles: String,
|
||||
) : PluginLayoutProvider {
|
||||
private val ideContentData by lazy {
|
||||
deserializeContentData(ideContentYamlPath.readText())
|
||||
deserializeContentData(ideContentYamlPath.readText())
|
||||
}
|
||||
|
||||
override fun loadCorePluginLayout(): PluginLayoutDescription {
|
||||
|
||||
24
platform/distribution-content/BUILD.bazel
Normal file
24
platform/distribution-content/BUILD.bazel
Normal file
@@ -0,0 +1,24 @@
|
||||
### auto-generated section `build intellij.platform.distributionContent.testFramework` start
|
||||
load("//build:compiler-options.bzl", "create_kotlinc_options")
|
||||
load("@rules_jvm//:jvm.bzl", "jvm_library")
|
||||
|
||||
create_kotlinc_options(
|
||||
name = "custom",
|
||||
opt_in = ["kotlinx.serialization.ExperimentalSerializationApi"]
|
||||
)
|
||||
|
||||
jvm_library(
|
||||
name = "distributionContent-testFramework",
|
||||
module_name = "intellij.platform.distributionContent.testFramework",
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = glob(["src/**/*.kt", "src/**/*.java"], allow_empty = True),
|
||||
kotlinc_opts = ":custom",
|
||||
deps = [
|
||||
"@lib//:kotlin-stdlib",
|
||||
"@lib//:kaml",
|
||||
"@lib//:kotlinx-serialization-core",
|
||||
"@lib//:kotlinx-serialization-json",
|
||||
"@lib//:jetbrains-annotations",
|
||||
]
|
||||
)
|
||||
### auto-generated section `build intellij.platform.distributionContent.testFramework` end
|
||||
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="5" platform="JVM 17" allPlatforms="JVM [17]" useProjectSettings="false">
|
||||
<compilerSettings>
|
||||
<option name="additionalArguments" value="-Xjvm-default=all -opt-in=kotlinx.serialization.ExperimentalSerializationApi" />
|
||||
</compilerSettings>
|
||||
<compilerArguments>
|
||||
<stringArguments>
|
||||
<stringArg name="jvmTarget" arg="17" />
|
||||
<stringArg name="apiVersion" arg="2.2" />
|
||||
<stringArg name="languageVersion" arg="2.2" />
|
||||
</stringArguments>
|
||||
<arrayArguments>
|
||||
<arrayArg name="pluginClasspaths">
|
||||
<args>$KOTLIN_BUNDLED$/lib/kotlinx-serialization-compiler-plugin.jar</args>
|
||||
</arrayArg>
|
||||
<arrayArg name="pluginOptions" />
|
||||
</arrayArguments>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="kotlin-stdlib" level="project" />
|
||||
<orderEntry type="library" name="kaml" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-serialization-core" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-serialization-json" level="project" />
|
||||
<orderEntry type="library" name="jetbrains-annotations" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -1,8 +1,10 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.platform.buildScripts.testFramework.distributionContent
|
||||
package com.intellij.platform.distributionContent.testFramework
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Serializable
|
||||
data class FileEntry(
|
||||
/**
|
||||
@@ -43,6 +45,7 @@ data class FileEntry(
|
||||
}
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Serializable
|
||||
data class ProjectLibraryEntry(
|
||||
/**
|
||||
@@ -68,6 +71,7 @@ data class ProjectLibraryEntry(
|
||||
fun compareImportantFields(o: ProjectLibraryEntry) = name == o.name && files == o.files && reason == o.reason
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Serializable
|
||||
data class ModuleEntry(
|
||||
/**
|
||||
@@ -88,6 +92,7 @@ data class ModuleEntry(
|
||||
@JvmField val libraries: Map<String, List<ModuleLibraryFile>> = emptyMap(),
|
||||
)
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Serializable
|
||||
data class ProjectLibraryFile(
|
||||
/**
|
||||
@@ -101,6 +106,7 @@ data class ProjectLibraryFile(
|
||||
@JvmField val size: Int = 0,
|
||||
)
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Serializable
|
||||
data class ModuleLibraryFile(
|
||||
/**
|
||||
@@ -114,6 +120,7 @@ data class ModuleLibraryFile(
|
||||
@JvmField val size: Int = 0,
|
||||
)
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Serializable
|
||||
data class PluginContentReport(
|
||||
@JvmField val mainModule: String,
|
||||
@@ -1,11 +1,12 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.platform.buildScripts.testFramework.distributionContent
|
||||
package com.intellij.platform.distributionContent.testFramework
|
||||
|
||||
import com.charleskorn.kaml.SingleLineStringStyle
|
||||
import com.charleskorn.kaml.Yaml
|
||||
import com.charleskorn.kaml.YamlConfiguration
|
||||
import kotlinx.serialization.builtins.ListSerializer
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
private val yaml = Yaml(
|
||||
configuration = YamlConfiguration(
|
||||
@@ -14,10 +15,13 @@ private val yaml = Yaml(
|
||||
),
|
||||
)
|
||||
|
||||
@ApiStatus.Internal
|
||||
fun deserializeContentData(data: String): List<FileEntry> = yaml.decodeFromString(data)
|
||||
|
||||
@ApiStatus.Internal
|
||||
fun deserializePluginData(data: String): List<PluginContentReport> = yaml.decodeFromString(data)
|
||||
|
||||
@ApiStatus.Internal
|
||||
fun serializeContentEntries(list: List<FileEntry>): String {
|
||||
return yaml.encodeToString(ListSerializer(FileEntry.serializer()), list)
|
||||
}
|
||||
Reference in New Issue
Block a user