Skip to content

Commit 2b6c958

Browse files
committed
Add safeguard for string version of priority override
1 parent 5738024 commit 2b6c958

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

nebula-archrules-gradle-plugin/src/main/kotlin/com/netflix/nebula/archrules/gradle/ArchrulesExtension.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,18 @@ class RuleConfig {
6363
var priority: Priority? = null
6464

6565
fun priority(priority: String) {
66-
this.priority = Priority.valueOf(priority)
66+
try {
67+
this.priority = Priority.valueOf(priority)
68+
} catch(e: IllegalArgumentException) {
69+
val validValues = Priority.entries.joinToString { it.name }
70+
throw IllegalArgumentException(
71+
"Invalid priority '$priority'. Must be one of the following (case-sensitive): $validValues",
72+
e
73+
)
74+
}
75+
}
76+
77+
fun priority(priority: Priority) {
78+
this.priority = priority
6779
}
6880
}

nebula-archrules-gradle-plugin/src/test/kotlin/com/netflix/nebula/archrules/gradle/ArchrulesRunnerPluginTest.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ import org.gradle.kotlin.dsl.findByType
77
import org.gradle.kotlin.dsl.named
88
import org.gradle.testfixtures.ProjectBuilder
99
import org.gradle.testkit.runner.TaskOutcome
10+
import org.gradle.testkit.runner.UnexpectedBuildFailure
1011
import org.junit.jupiter.api.Test
12+
import org.junit.jupiter.api.assertThrows
1113
import org.junit.jupiter.api.io.TempDir
1214
import org.junit.jupiter.params.ParameterizedTest
1315
import org.junit.jupiter.params.provider.EnumSource
@@ -494,4 +496,29 @@ archRules {
494496
assertThat(result.rule.priority).isEqualTo(Priority.LOW)
495497
}
496498
}
499+
500+
@Test
501+
fun `invalid priority throws error`() {
502+
val runner = testProject(projectDir) {
503+
setupConsumerProject {
504+
rawBuildScript(
505+
"""
506+
archRules {
507+
rule("com.netflix.nebula.archrules.deprecation") {
508+
priority("NONE")
509+
}
510+
}
511+
"""
512+
)
513+
}
514+
}
515+
516+
val exception = assertThrows<UnexpectedBuildFailure> {
517+
runner.run("checkArchRulesMain", "--stacktrace", "-x", "test")
518+
}
519+
520+
assertThat(exception.message)
521+
.contains("Invalid priority 'NONE'")
522+
.contains("Must be one of the following (case-sensitive): HIGH, MEDIUM, LOW")
523+
}
497524
}

0 commit comments

Comments
 (0)