Skip to content

Commit

Permalink
Merge pull request #17 from leandroBorgesFerreira/BuildSrcChange
Browse files Browse the repository at this point in the history
Changes in buildSrc affects the entire graph
  • Loading branch information
leandroBorgesFerreira authored Aug 26, 2020
2 parents e95ac11 + c97389c commit 203db33
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 6 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
val artifactIdVal = "dag-command"
val versionVal = "1.3.0"
val versionVal = "1.4.0"
val publicationName="dagCommand"

group = "com.github.leandroborgesferreira"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,19 @@ package com.github.leandroborgesferreira.dagcommand.logic
import com.github.leandroborgesferreira.dagcommand.domain.AdjacencyList
import com.github.leandroborgesferreira.dagcommand.utils.CommandExecutor

private const val BUILD_SRC = "buildSrc"

fun changedModules(commandExec: CommandExecutor, defaultBranch: String, adjacencyList: AdjacencyList): List<String> =
commandExec.runCommand("git diff $defaultBranch --dirstat=files")
.map(::parseModuleName)
.filter(adjacencyList.keys::contains)
.distinct()
.let { modules ->
if (modules.contains(BUILD_SRC)) {
adjacencyList.keys
} else {
modules.filter(adjacencyList.keys::contains)
}.distinct()
}


private fun parseModuleName(commandResult: String): String =
commandResult.trimStart()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.github.leandroborgesferreira.dagcommand.utils.simpleGraph
import com.nhaarman.mockitokotlin2.any
import com.nhaarman.mockitokotlin2.doReturn
import com.nhaarman.mockitokotlin2.mock
import com.nhaarman.mockitokotlin2.whenever
import org.junit.Test
import kotlin.test.assertEquals

Expand All @@ -32,14 +33,35 @@ class ChangedModulesKtTest {
"2.9% W/src/main/java/com/module1/favorites/"
)

private val commandExecutor: CommandExecutor = mock {
on(it.runCommand(any())) doReturn changedModules
}
private val changedModulesWithBuildSrc =
listOf(
"2.9% buildSrc/src/main/java/com/module1/favorites/",
"4.9% D/src/main/java/com/module1/repositories/",
"4.9% D/src/main/java/com/module1/blah/",
"4.9% D/src/main/java/com/module1/bleh/",
"3.9% E/src/main/res/drawable/",
"1.9% Z/src/main/java/com/module1/favorites/",
"2.9% W/src/main/java/com/module1/favorites/"
)

private val commandExecutor: CommandExecutor = mock()

@Test
fun `proves that changes get parsed correctly`() {
whenever(commandExecutor.runCommand(any())) doReturn changedModules

val expected = listOf("A", "B", "C", "D", "E", "F")

assertEquals(expected, changedModules(commandExecutor, "master", simpleGraph()))
}

@Test
fun `proves that, when buildSrc is changed, all modules are considered as changed`() {
whenever(commandExecutor.runCommand(any())) doReturn changedModulesWithBuildSrc

val graph = simpleGraph()
val modules = graph.keys.toList()

assertEquals(modules, changedModules(commandExecutor, "master", graph))
}
}

0 comments on commit 203db33

Please sign in to comment.