[Gradle|Exec] cleanup: move Gradle log level resolution to the GradleProperties class

GitOrigin-RevId: 13110e3df4cf57e7cb6db8f0305e6fb9cddaee8b
This commit is contained in:
Sergei Vorobyov
2024-11-28 17:40:51 +00:00
committed by intellij-monorepo-bot
parent 2dd12bd2fe
commit 079d78d040
5 changed files with 55 additions and 34 deletions
@@ -1,13 +1,15 @@
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.plugins.gradle.properties
import org.gradle.api.logging.LogLevel
import org.jetbrains.plugins.gradle.properties.models.Property
interface GradleProperties {
val javaHomeProperty: Property<String>?
val gradleLoggingLevel: Property<String>?
val logLevel: Property<String>?
fun getGradleLogLevel(): LogLevel?
val parallel: Property<Boolean>?
val isolatedProjects: Property<Boolean>?
@@ -78,7 +78,7 @@ object GradlePropertiesFile {
val properties = GradleUtil.readGradleProperties(propertiesPath) ?: return null
return GradlePropertiesImpl(
javaHomeProperty = properties.getStringProperty(GRADLE_JAVA_HOME_PROPERTY, propertiesPath),
gradleLoggingLevel = properties.getStringProperty(GRADLE_LOGGING_LEVEL_PROPERTY, propertiesPath),
logLevel = properties.getStringProperty(GRADLE_LOGGING_LEVEL_PROPERTY, propertiesPath),
parallel = properties.getBooleanProperty(GRADLE_PARALLEL_PROPERTY, propertiesPath),
isolatedProjects = properties.getBooleanProperty(GRADLE_ISOLATED_PROJECTS_PROPERTY, propertiesPath),
jvmOptions = properties.getStringProperty(GRADLE_JVM_OPTIONS_PROPERTY, propertiesPath)
@@ -88,7 +88,7 @@ object GradlePropertiesFile {
private fun mergeGradleProperties(most: GradleProperties, other: GradleProperties): GradleProperties {
return GradlePropertiesImpl(
javaHomeProperty = most.javaHomeProperty ?: other.javaHomeProperty,
gradleLoggingLevel = most.gradleLoggingLevel ?: other.gradleLoggingLevel,
logLevel = most.logLevel ?: other.logLevel,
parallel = most.parallel ?: other.parallel,
isolatedProjects = most.isolatedProjects ?: other.isolatedProjects,
jvmOptions = most.jvmOptions ?: other.jvmOptions
@@ -97,7 +97,7 @@ object GradlePropertiesFile {
private val EMPTY_GRADLE_PROPERTIES = GradlePropertiesImpl(
javaHomeProperty = null,
gradleLoggingLevel = null,
logLevel = null,
parallel = null,
isolatedProjects = null,
jvmOptions = null,
@@ -1,12 +1,33 @@
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.plugins.gradle.properties
import com.intellij.openapi.diagnostic.logger
import org.gradle.api.logging.LogLevel
import org.jetbrains.plugins.gradle.properties.models.Property
import java.util.Locale
private val LOG = logger<GradlePropertiesImpl>()
data class GradlePropertiesImpl(
override val javaHomeProperty: Property<String>?,
override val gradleLoggingLevel: Property<String>?,
override val logLevel: Property<String>?,
override val parallel: Property<Boolean>?,
override val isolatedProjects: Property<Boolean>?,
override val jvmOptions: Property<String>?
) : GradleProperties
override val jvmOptions: Property<String>?,
) : GradleProperties {
override fun getGradleLogLevel(): LogLevel? {
if (logLevel == null) {
return null
}
var value = logLevel.value
var name = value.uppercase(Locale.ROOT)
try {
return LogLevel.valueOf(name)
}
catch (_: IllegalArgumentException) {
LOG.warn("The Gradle property 'org.gradle.logging.level=$value' is invalid. It must be one of quiet, warn, lifecycle, info, or debug")
return null
}
}
}
@@ -25,14 +25,12 @@ import com.intellij.util.lang.JavaVersion;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.StatusCode;
import io.opentelemetry.context.Scope;
import org.gradle.api.logging.LogLevel;
import org.gradle.tooling.*;
import org.gradle.tooling.events.OperationType;
import org.gradle.tooling.model.build.BuildEnvironment;
import org.gradle.util.GradleVersion;
import org.jetbrains.annotations.*;
import org.jetbrains.plugins.gradle.jvmcompat.GradleJvmSupportMatrix;
import org.jetbrains.plugins.gradle.properties.GradleProperties;
import org.jetbrains.plugins.gradle.properties.GradlePropertiesFile;
import org.jetbrains.plugins.gradle.service.execution.cmd.GradleCommandLineOptionsProvider;
import org.jetbrains.plugins.gradle.service.project.GradleExecutionHelperExtension;
@@ -323,7 +321,7 @@ public final class GradleExecutionHelper {
var buildRoot = getBuildRoot(buildEnvironment);
if (buildRoot != null) {
var properties = GradlePropertiesFile.getProperties(settings.getServiceDirectory(), buildRoot);
var logLevel = getGradleLoggingLevel(properties);
var logLevel = properties.getGradleLogLevel();
if (logLevel != null) {
switch (logLevel) {
case DEBUG -> settings.withArgument("-d");
@@ -345,22 +343,6 @@ public final class GradleExecutionHelper {
}
}
private static @Nullable LogLevel getGradleLoggingLevel(@NotNull GradleProperties properties) {
var property = properties.getGradleLoggingLevel();
if (property == null) {
return null;
}
var value = property.getValue();
var name = value.toUpperCase(Locale.ROOT);
try {
return LogLevel.valueOf(name);
}
catch (IllegalArgumentException e) {
LOG.warn("org.gradle.logging.level must be one of quiet, warn, lifecycle, info, or debug");
return null;
}
}
private static @Nullable Path getWorkingRoot(@Nullable BuildEnvironment buildEnvironment) {
if (buildEnvironment == null) {
return null;
@@ -1,6 +1,7 @@
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.plugins.gradle.properties
import org.gradle.api.logging.LogLevel
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
@@ -11,7 +12,7 @@ class GradlePropertiesFileTest : GradlePropertiesFileTestCase() {
createGradlePropertiesFile {}
assertGradlePropertiesFile {
Assertions.assertNull(javaHomeProperty)
Assertions.assertNull(gradleLoggingLevel)
Assertions.assertNull(logLevel)
Assertions.assertNull(parallel)
Assertions.assertNull(isolatedProjects)
Assertions.assertNull(jvmOptions)
@@ -26,7 +27,7 @@ class GradlePropertiesFileTest : GradlePropertiesFileTestCase() {
}
assertGradlePropertiesFile {
Assertions.assertNull(javaHomeProperty)
Assertions.assertNull(gradleLoggingLevel)
Assertions.assertNull(logLevel)
Assertions.assertNull(parallel)
Assertions.assertNull(isolatedProjects)
Assertions.assertNull(jvmOptions)
@@ -45,13 +46,14 @@ class GradlePropertiesFileTest : GradlePropertiesFileTestCase() {
assertGradlePropertiesFile {
Assertions.assertEquals("javaHome", javaHomeProperty?.value)
Assertions.assertEquals(projectPropertiesPath, javaHomeProperty?.location)
Assertions.assertEquals("info", gradleLoggingLevel?.value)
Assertions.assertEquals(projectPropertiesPath, gradleLoggingLevel?.location)
Assertions.assertEquals("info", logLevel?.value)
Assertions.assertEquals(LogLevel.INFO, getGradleLogLevel())
Assertions.assertEquals(projectPropertiesPath, logLevel?.location)
Assertions.assertEquals(true, parallel?.value)
Assertions.assertEquals(projectPropertiesPath, parallel?.location)
Assertions.assertEquals(true, isolatedProjects?.value)
Assertions.assertEquals(projectPropertiesPath, isolatedProjects?.location)
Assertions.assertEquals( "-Xmx20G", jvmOptions?.value)
Assertions.assertEquals("-Xmx20G", jvmOptions?.value)
Assertions.assertEquals(projectPropertiesPath, jvmOptions?.location)
}
}
@@ -61,7 +63,7 @@ class GradlePropertiesFileTest : GradlePropertiesFileTestCase() {
createGradlePropertiesFile {
setProperty("another.property.1", "value1")
setProperty(GRADLE_JAVA_HOME_PROPERTY, "value2")
setProperty(GRADLE_LOGGING_LEVEL_PROPERTY, "value3")
setProperty(GRADLE_LOGGING_LEVEL_PROPERTY, "debug")
setProperty(GRADLE_PARALLEL_PROPERTY, "true")
setProperty(GRADLE_ISOLATED_PROJECTS_PROPERTY, "true")
setProperty(GRADLE_JVM_OPTIONS_PROPERTY, "-Xmx20G")
@@ -70,8 +72,9 @@ class GradlePropertiesFileTest : GradlePropertiesFileTestCase() {
assertGradlePropertiesFile {
Assertions.assertEquals("value2", javaHomeProperty?.value)
Assertions.assertEquals(projectPropertiesPath, javaHomeProperty?.location)
Assertions.assertEquals("value3", gradleLoggingLevel?.value)
Assertions.assertEquals(projectPropertiesPath, gradleLoggingLevel?.location)
Assertions.assertEquals("debug", logLevel?.value)
Assertions.assertEquals(LogLevel.DEBUG, getGradleLogLevel())
Assertions.assertEquals(projectPropertiesPath, logLevel?.location)
Assertions.assertEquals(true, parallel?.value)
Assertions.assertEquals(projectPropertiesPath, parallel?.location)
Assertions.assertEquals(true, isolatedProjects?.value)
@@ -80,4 +83,17 @@ class GradlePropertiesFileTest : GradlePropertiesFileTestCase() {
Assertions.assertEquals(projectPropertiesPath, jvmOptions?.location)
}
}
@Test
fun testInvalidLogLevelInProjectGradlePropertiesFile() {
createGradlePropertiesFile {
setProperty(GRADLE_LOGGING_LEVEL_PROPERTY, "invalid")
}
assertGradlePropertiesFile {
Assertions.assertEquals("invalid", logLevel?.value)
Assertions.assertEquals(projectPropertiesPath, logLevel?.location)
Assertions.assertNull(getGradleLogLevel())
}
}
}