Skip to content

Commit d8d09c6

Browse files
Refactored buildSrc tests to Kotlin. (#10015)
1 parent b65a3ce commit d8d09c6

File tree

6 files changed

+130
-122
lines changed

6 files changed

+130
-122
lines changed

buildSrc/src/main/kotlin/datadog/gradle/plugin/muzzle/VersionSet.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class VersionSet(versions: Collection<Version>) {
3030
return resultSet.map { it.version }
3131
}
3232

33-
private class ParsedVersion(val version: Version) : Comparable<ParsedVersion> {
33+
internal class ParsedVersion(val version: Version) : Comparable<ParsedVersion> {
3434
companion object {
3535
private val dotPattern = Regex("\\.")
3636
private const val VERSION_SHIFT = 12

buildSrc/src/test/groovy/datadog/gradle/plugin/muzzle/RangeQueryTest.groovy

Lines changed: 0 additions & 30 deletions
This file was deleted.

buildSrc/src/test/groovy/datadog/gradle/plugin/muzzle/VersionSetTest.groovy

Lines changed: 0 additions & 91 deletions
This file was deleted.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package datadog.gradle.plugin.muzzle
2+
3+
import org.eclipse.aether.artifact.Artifact
4+
import org.eclipse.aether.artifact.DefaultArtifact
5+
import org.eclipse.aether.resolution.VersionRangeRequest
6+
import org.gradle.internal.impldep.org.junit.Assert.assertTrue
7+
import org.junit.jupiter.api.Test
8+
9+
class RangeQueryTest {
10+
private val system = MuzzleMavenRepoUtils.newRepositorySystem()
11+
private val session = MuzzleMavenRepoUtils.newRepositorySystemSession(system)
12+
13+
@Test
14+
fun `test range request`() {
15+
// compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.5.0', ext: 'pom'
16+
val directiveArtifact: Artifact = DefaultArtifact("org.codehaus.groovy", "groovy-all", "jar", "[2.5.0,2.5.8)")
17+
val rangeRequest = VersionRangeRequest().apply {
18+
repositories = MuzzleMavenRepoUtils.MUZZLE_REPOS
19+
artifact = directiveArtifact
20+
}
21+
22+
// This call makes an actual network request, which may fail if network access is limited.
23+
val rangeResult = system.resolveVersionRange(session, rangeRequest)
24+
25+
assertTrue(rangeResult.versions.size >= 8)
26+
}
27+
}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
package datadog.gradle.plugin.muzzle
2+
3+
import org.eclipse.aether.version.Version
4+
import org.junit.jupiter.api.Assertions.assertEquals
5+
import org.junit.jupiter.api.Test
6+
7+
class VersionSetTest {
8+
9+
@Test
10+
fun `parse versions properly`() {
11+
data class Case(
12+
val version: Version,
13+
val versionNumber: Long,
14+
val ending: String
15+
)
16+
17+
val cases = listOf(
18+
Case(ver("1.2.3"), num(1, 2, 3), ""),
19+
Case(ver("4.5.6-foo"), num(4, 5, 6), "foo"),
20+
Case(ver("7.8.9.foo"), num(7, 8, 9), "foo"),
21+
Case(ver("10.11.12.foo-bar"), num(10, 11, 12), "foo-bar"),
22+
Case(ver("13.14.foo-bar"), num(13, 14, 0), "foo-bar"),
23+
Case(ver("15.foo"), num(15, 0, 0), "foo"),
24+
Case(ver("16-foo"), num(16, 0, 0), "foo")
25+
)
26+
27+
for (c in cases) {
28+
val parsed = VersionSet.ParsedVersion(c.version)
29+
assertEquals(c.versionNumber, parsed.versionNumber, "versionNumber for ${c.version}")
30+
assertEquals(c.ending, parsed.ending, "ending for ${c.version}")
31+
assertEquals(
32+
c.versionNumber shr 12,
33+
parsed.majorMinor.toLong(),
34+
"majorMinor for ${c.version}"
35+
)
36+
}
37+
}
38+
39+
@Test
40+
fun `select low and high from major minor`() {
41+
val versionsCases = listOf(
42+
listOf(
43+
ver("4.5.6"),
44+
ver("1.2.3")
45+
),
46+
listOf(
47+
ver("1.2.3"),
48+
ver("1.2.1"),
49+
ver("1.3.0"),
50+
ver("1.2.7"),
51+
ver("1.4.17"),
52+
ver("1.4.1"),
53+
ver("1.4.0"),
54+
ver("1.4.10")
55+
)
56+
)
57+
58+
val expectedCases = listOf(
59+
listOf(
60+
ver("1.2.3"),
61+
ver("4.5.6")
62+
),
63+
listOf(
64+
ver("1.2.1"),
65+
ver("1.2.7"),
66+
ver("1.3.0"),
67+
ver("1.4.0"),
68+
ver("1.4.17")
69+
)
70+
)
71+
72+
versionsCases.zip(expectedCases).forEach { (versions, expected) ->
73+
val versionSet = VersionSet(versions)
74+
assertEquals(expected, versionSet.lowAndHighForMajorMinor)
75+
}
76+
}
77+
78+
private fun ver(v: String): Version = TestVersion(v)
79+
80+
private fun num(major: Int, minor: Int, micro: Int): Long {
81+
var result = major.toLong()
82+
result = (((result shl 12) + minor) shl 12) + micro
83+
return result
84+
}
85+
86+
private class TestVersion(private val v: String) : Version {
87+
override fun compareTo(other: Version?): Int {
88+
if (other is TestVersion) {
89+
return v.compareTo(other.v)
90+
}
91+
92+
return 1
93+
}
94+
95+
override fun equals(other: Any?): Boolean =
96+
other is TestVersion && v == other.v
97+
98+
override fun hashCode(): Int = v.hashCode()
99+
100+
override fun toString(): String = v
101+
}
102+
}

0 commit comments

Comments
 (0)