[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:
Vladislav Yaroshchuk
2025-06-06 17:17:25 +00:00
committed by intellij-monorepo-bot
parent a4bdeebfe1
commit 05d090b07c
10 changed files with 89 additions and 5 deletions

1
.idea/modules.xml generated
View File

@@ -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" />

View File

@@ -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

View File

@@ -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>

View File

@@ -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

View File

@@ -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

View File

@@ -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 {

View 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

View File

@@ -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>

View File

@@ -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,

View File

@@ -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)
}