blob: 8accdf1687a00fcbc61a561ebf5567086d467299 [file] [log] [blame]
/*
* Copyright 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.tools.build.jetifier.processor.transform.pom
import com.android.tools.build.jetifier.core.pom.PomDependency
import com.android.tools.build.jetifier.core.pom.PomRewriteRule
import com.google.common.truth.Truth
import org.junit.Test
class PomRewriteRuleTest {
@Test(expected = IllegalArgumentException::class)
fun versions_nullInRule_match() {
testVersionsMatch(
ruleVersion = null,
pomVersion = "27.0.0"
)
}
@Test fun versions_nullInPom_match() {
testVersionsMatch(
ruleVersion = "27.0.0",
pomVersion = null
)
}
@Test(expected = IllegalArgumentException::class)
fun versions_nullBoth_match() {
testVersionsMatch(
ruleVersion = null,
pomVersion = null
)
}
@Test fun versions_same_match() {
testVersionsMatch(
ruleVersion = "27.0.0",
pomVersion = "27.0.0"
)
}
@Test fun versions_same_strict_match() {
testVersionsMatch(
ruleVersion = "27.0.0",
pomVersion = "[27.0.0]"
)
}
@Test fun versions_different_noMatch() {
testVersionsDoNotMatch(
ruleVersion = "27.0.0",
pomVersion = "26.0.0"
)
}
@Test fun versions_release_match() {
testVersionsMatch(
ruleVersion = "27.0.0",
pomVersion = "release"
)
}
@Test fun versions_latest_match() {
testVersionsMatch(
ruleVersion = "27.0.0",
pomVersion = "latest"
)
}
@Test fun versions_range_rightOpen_match() {
testVersionsMatch(
ruleVersion = "27.0.0",
pomVersion = "(26.0.0,]"
)
}
@Test fun versions_range_rightOpen2_match() {
testVersionsMatch(
ruleVersion = "27.0.0",
pomVersion = "(26.0.0,)"
)
}
@Test fun versions_range_inclusive_match() {
testVersionsMatch(
ruleVersion = "27.0.0",
pomVersion = "[21.0.0,27.0.0]"
)
}
@Test fun versions_range_inclusive_noMatch() {
testVersionsDoNotMatch(
ruleVersion = "27.0.0",
pomVersion = "[21.0.0,26.0.0]"
)
}
@Test fun versions_range_exclusive_noMatch() {
testVersionsDoNotMatch(
ruleVersion = "27.0.0",
pomVersion = "[21.0.0,27.0.0)"
)
}
@Test fun versions_exclusionRange_match() {
testVersionsMatch(
ruleVersion = "27.0.0",
pomVersion = "(,26.0.0),(26.0.0,)"
)
}
private fun testVersionsMatch(ruleVersion: String?, pomVersion: String?) {
val from = PomDependency(groupId = "g", artifactId = "a", version = ruleVersion)
val pom = PomDependency(groupId = "g", artifactId = "a", version = pomVersion)
val rule = PomRewriteRule(from, from)
Truth.assertThat(rule.validateVersion(pom)).isTrue()
}
private fun testVersionsDoNotMatch(ruleVersion: String?, pomVersion: String?) {
val from = PomDependency(groupId = "g", artifactId = "a", version = ruleVersion)
val pom = PomDependency(groupId = "g", artifactId = "a", version = pomVersion)
val rule = PomRewriteRule(from, from)
Truth.assertThat(rule.validateVersion(pom)).isFalse()
}
}