Skip to content

Commit

Permalink
[GH] Fix CC issue by using ExecOperation to run Git command
Browse files Browse the repository at this point in the history
This is an imported pull request from androidx#620.

Rewrite to using providers for getting HEAD SHA and changed files
information from either MANIFEST and CHANGE_INFO files or git
if these env variables are not set.

Resolves #620
Github-Pr-Head-Sha: 75a21ad
GitOrigin-RevId: 1baae30

Test: updated tests to match the new code structure
Bug: 303481898
Change-Id: I227ed2997280d4b41ba9d38c4ed5e8224843feef
  • Loading branch information
jprinet authored and liutikas committed Oct 18, 2023
1 parent 1bcdc76 commit 85add70
Show file tree
Hide file tree
Showing 11 changed files with 396 additions and 623 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,13 @@

package androidx.build.dependencyTracker

import java.io.File
import java.util.function.BiFunction
import java.util.function.Predicate
import org.gradle.api.Project
import org.gradle.api.Transformer
import org.gradle.api.plugins.ExtraPropertiesExtension
import org.gradle.api.provider.Provider
import org.gradle.testfixtures.ProjectBuilder
import org.hamcrest.CoreMatchers
import org.hamcrest.MatcherAssert
Expand All @@ -27,7 +32,6 @@ import org.junit.Test
import org.junit.rules.TemporaryFolder
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import java.io.File

@RunWith(JUnit4::class)
class AffectedModuleDetectorImplTest {
Expand Down Expand Up @@ -164,6 +168,31 @@ class AffectedModuleDetectorImplTest {
.build()
}

class TestProvider(private val list: List<String>) : Provider<List<String>> {
override fun get(): List<String> = list
override fun getOrNull(): List<String> = list
override fun isPresent(): Boolean = TODO("used")
override fun forUseAtConfigurationTime(): Provider<List<String>> = TODO("used")
override fun <U : Any?, R : Any?> zip(
right: Provider<U>,
combiner: BiFunction<in List<String>, in U, out R?>
): Provider<R> = TODO("used")
override fun orElse(provider: Provider<out List<String>>): Provider<List<String>> {
TODO("used")
}
override fun orElse(value: List<String>): Provider<List<String>> = TODO("used")
override fun <S : Any?> flatMap(
transformer: Transformer<out Provider<out S>?, in List<String>>
): Provider<S> = TODO("used")
override fun filter(predicate: Predicate<in List<String>>): Provider<List<String>> {
TODO("used")
}
override fun <S : Any?> map(
transformer: Transformer<out S?, in List<String>>
): Provider<S> = TODO("used")
override fun getOrElse(defaultValue: List<String>): List<String> = TODO("used")
}

@Test
fun noChangeCLs() {
val detector = AffectedModuleDetectorImpl(
Expand All @@ -172,9 +201,7 @@ class AffectedModuleDetectorImplTest {
logger = logger,
ignoreUnknownProjects = false,
cobuiltTestPaths = cobuiltTestPaths,
changedFilesProvider = {
emptyList()
}
changedFilesProvider = TestProvider(emptyList())
)
MatcherAssert.assertThat(
detector.changedProjects,
Expand Down Expand Up @@ -204,9 +231,9 @@ class AffectedModuleDetectorImplTest {
logger = logger,
ignoreUnknownProjects = false,
cobuiltTestPaths = cobuiltTestPaths,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf(convertToFilePath("p1", "foo.java"))
}
)
)
MatcherAssert.assertThat(
detector.changedProjects,
Expand All @@ -230,12 +257,12 @@ class AffectedModuleDetectorImplTest {
logger = logger,
ignoreUnknownProjects = false,
cobuiltTestPaths = cobuiltTestPaths,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf(
convertToFilePath("p1", "foo.java"),
convertToFilePath("p2", "bar.java")
)
}
)
)
MatcherAssert.assertThat(
detector.changedProjects,
Expand All @@ -259,9 +286,9 @@ class AffectedModuleDetectorImplTest {
logger = logger,
ignoreUnknownProjects = false,
cobuiltTestPaths = cobuiltTestPaths,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf("foo.java")
}
)
)
MatcherAssert.assertThat(
detector.changedProjects,
Expand Down Expand Up @@ -291,9 +318,9 @@ class AffectedModuleDetectorImplTest {
logger = logger,
ignoreUnknownProjects = false,
cobuiltTestPaths = cobuiltTestPaths,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf("foo.java", convertToFilePath("p7", "bar.java"))
}
)
)
MatcherAssert.assertThat(
detector.changedProjects,
Expand Down Expand Up @@ -323,13 +350,13 @@ class AffectedModuleDetectorImplTest {
logger = logger,
ignoreUnknownProjects = false,
cobuiltTestPaths = cobuiltTestPaths,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf(
convertToFilePath(
"p8", "foo.java"
)
)
}
)
)
MatcherAssert.assertThat(
detector.changedProjects,
Expand All @@ -353,13 +380,13 @@ class AffectedModuleDetectorImplTest {
logger = logger,
ignoreUnknownProjects = false,
cobuiltTestPaths = setOf(setOf(":cobuilt1", ":cobuilt2", ":cobuilt3")),
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf(
convertToFilePath(
"p8", "foo.java"
)
)
}
)
)
// This should trigger IllegalStateException due to missing cobuilt3
detector.changedProjects
Expand All @@ -373,13 +400,13 @@ class AffectedModuleDetectorImplTest {
logger = logger,
ignoreUnknownProjects = false,
cobuiltTestPaths = setOf(setOf("cobuilt3", "cobuilt4", "cobuilt5")),
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf(
convertToFilePath(
"p8", "foo.java"
)
)
}
)
)
// There should be no exception thrown here because *all* cobuilts are missing.
detector.changedProjects
Expand All @@ -392,9 +419,9 @@ class AffectedModuleDetectorImplTest {
dependencyTracker = dependencyTracker,
logger = logger,
ignoreUnknownProjects = false,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf(convertToFilePath("p1", "foo.java"))
}
)
)
// Verify expectations on affected projects
MatcherAssert.assertThat(
Expand Down Expand Up @@ -439,9 +466,7 @@ class AffectedModuleDetectorImplTest {
dependencyTracker = dependencyTracker,
logger = logger,
ignoreUnknownProjects = false,
changedFilesProvider = {
emptyList()
}
changedFilesProvider = TestProvider(emptyList())
)
// Verify expectations on affected projects
MatcherAssert.assertThat(
Expand Down Expand Up @@ -485,9 +510,9 @@ class AffectedModuleDetectorImplTest {
dependencyTracker = dependencyTracker,
logger = logger,
ignoreUnknownProjects = false,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf(convertToFilePath("unknown", "file.java"))
}
)
)
// Verify expectations on affected projects
MatcherAssert.assertThat(
Expand Down Expand Up @@ -532,9 +557,9 @@ class AffectedModuleDetectorImplTest {
logger = logger,
ignoreUnknownProjects = false,
cobuiltTestPaths = cobuiltTestPaths,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf("playground-common/tmp.kt")
}
)
)
MatcherAssert.assertThat(
detector.changedProjects,
Expand All @@ -558,9 +583,9 @@ class AffectedModuleDetectorImplTest {
logger = logger,
ignoreUnknownProjects = false,
cobuiltTestPaths = cobuiltTestPaths,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf(".github/workflows/bar.txt")
}
)
)
MatcherAssert.assertThat(
detector.changedProjects,
Expand All @@ -584,9 +609,9 @@ class AffectedModuleDetectorImplTest {
logger = logger,
ignoreUnknownProjects = false,
cobuiltTestPaths = cobuiltTestPaths,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf("playground-common/tmp.kt", "root.txt")
}
)
)
MatcherAssert.assertThat(
detector.buildAll,
Expand All @@ -605,9 +630,9 @@ class AffectedModuleDetectorImplTest {
ignoreUnknownProjects = false,
cobuiltTestPaths = cobuiltTestPaths,
ignoredPaths = ignoredPaths,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf(convertToFilePath("ignored", "example.txt"))
}
)
)
MatcherAssert.assertThat(
detector.buildAll,
Expand All @@ -626,12 +651,12 @@ class AffectedModuleDetectorImplTest {
ignoreUnknownProjects = false,
cobuiltTestPaths = cobuiltTestPaths,
ignoredPaths = ignoredPaths,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf(
convertToFilePath("ignored", "example.txt"),
convertToFilePath("p1", "foo.kt")
)
}
)
)
MatcherAssert.assertThat(
detector.changedProjects,
Expand All @@ -656,12 +681,12 @@ class AffectedModuleDetectorImplTest {
ignoreUnknownProjects = false,
cobuiltTestPaths = cobuiltTestPaths,
ignoredPaths = ignoredPaths,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf(
convertToFilePath("ignored", "example.txt"),
convertToFilePath("unknown", "foo.kt")
)
}
)
)
MatcherAssert.assertThat(
detector.buildAll,
Expand All @@ -680,13 +705,13 @@ class AffectedModuleDetectorImplTest {
ignoreUnknownProjects = false,
cobuiltTestPaths = cobuiltTestPaths,
ignoredPaths = ignoredPaths,
changedFilesProvider = {
changedFilesProvider = TestProvider(
listOf(
"ignored/eg.txt",
convertToFilePath("unknown", "foo.kt"),
convertToFilePath("p1", "bar.kt")
)
}
)
)
MatcherAssert.assertThat(
detector.buildAll,
Expand Down

0 comments on commit 85add70

Please sign in to comment.