Skip to content

Commit a29c567

Browse files
committed
TS-38628 Git Property Tests
1 parent 1174e55 commit a29c567

8 files changed

Lines changed: 337 additions & 306 deletions

File tree

agent/src/main/kotlin/com/teamscale/jacoco/agent/options/AgentOptions.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -496,13 +496,12 @@ open class AgentOptions(private val logger: ILogger) {
496496
private fun createTeamscaleMultiProjectUploader(
497497
instrumentation: Instrumentation?
498498
): DelayedTeamscaleMultiProjectUploader {
499-
val uploader = DelayedTeamscaleMultiProjectUploader(
500-
BiFunction { project, commitInfo ->
499+
val uploader = DelayedTeamscaleMultiProjectUploader { project, commitInfo ->
501500
if (commitInfo!!.preferCommitDescriptorOverRevision || isEmpty(commitInfo.revision)) {
502-
return@BiFunction teamscaleServer.withProjectAndCommit(project!!, commitInfo.commit!!)
501+
return@DelayedTeamscaleMultiProjectUploader teamscaleServer.withProjectAndCommit(project!!, commitInfo.commit!!)
503502
}
504503
teamscaleServer.withProjectAndRevision(project!!, commitInfo.revision!!)
505-
})
504+
}
506505

507506
gitPropertiesJar?.let { jar ->
508507
logger.info(

agent/src/main/kotlin/com/teamscale/jacoco/agent/upload/teamscale/DelayedTeamscaleMultiProjectUploader.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import java.util.function.BiFunction
1010

1111
/** Wrapper for [TeamscaleUploader] that allows to upload the same coverage file to multiple Teamscale projects. */
1212
class DelayedTeamscaleMultiProjectUploader(
13-
private val teamscaleServerFactory: BiFunction<String?, CommitInfo?, TeamscaleServer>
13+
private val teamscaleServerFactory: (String?, CommitInfo?) -> TeamscaleServer
1414
) : DelayedMultiUploaderBase(), IUploader {
1515
@JvmField
1616
val teamscaleUploaders = mutableListOf<TeamscaleUploader>()
@@ -20,7 +20,7 @@ class DelayedTeamscaleMultiProjectUploader(
2020
* commit are already registered as an upload target and will prevent duplicate uploads.
2121
*/
2222
fun addTeamscaleProjectAndCommit(file: File, projectAndCommit: ProjectAndCommit) {
23-
val teamscaleServer = teamscaleServerFactory.apply(
23+
val teamscaleServer = teamscaleServerFactory(
2424
projectAndCommit.project,
2525
projectAndCommit.commitInfo
2626
)

agent/src/test/java/com/teamscale/jacoco/agent/commit_resolution/git_properties/GitMultiProjectPropertiesLocatorTest.java

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

agent/src/test/java/com/teamscale/jacoco/agent/commit_resolution/git_properties/GitPropertiesLocatorTest.java

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

agent/src/test/java/com/teamscale/jacoco/agent/commit_resolution/git_properties/GitPropertiesLocatorUtilsTest.java

Lines changed: 0 additions & 52 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.teamscale.jacoco.agent.commit_resolution.git_properties
2+
3+
import com.teamscale.client.CommitDescriptor
4+
import com.teamscale.client.TeamscaleServer
5+
import com.teamscale.jacoco.agent.options.ProjectAndCommit
6+
import com.teamscale.jacoco.agent.upload.teamscale.DelayedTeamscaleMultiProjectUploader
7+
import com.teamscale.jacoco.agent.upload.teamscale.TeamscaleUploader
8+
import org.assertj.core.api.Assertions
9+
import org.junit.jupiter.api.Test
10+
import java.io.File
11+
import java.util.function.BiFunction
12+
import java.util.function.Predicate
13+
import java.util.stream.Collectors
14+
15+
internal class GitMultiProjectPropertiesLocatorTest {
16+
@Test
17+
fun testNoErrorIsThrownWhenGitPropertiesFileDoesNotHaveAProject() {
18+
val projectAndCommits = mutableListOf<ProjectAndCommit>()
19+
val locator = GitMultiProjectPropertiesLocator(
20+
DelayedTeamscaleMultiProjectUploader { project, revision ->
21+
projectAndCommits.add(ProjectAndCommit(project, revision))
22+
TeamscaleServer()
23+
}, true, null
24+
)
25+
val jarFile = File(javaClass.getResource("emptyTeamscaleProjectGitProperties")!!.file)
26+
locator.searchFile(jarFile, false)
27+
Assertions.assertThat(projectAndCommits.size).isEqualTo(1)
28+
Assertions.assertThat(projectAndCommits.first().project).isEqualTo("my-teamscale-project")
29+
}
30+
31+
@Test
32+
fun testNoMultipleUploadsToSameProjectAndRevision() {
33+
val delayedTeamscaleMultiProjectUploader = DelayedTeamscaleMultiProjectUploader { project, revision ->
34+
val server = TeamscaleServer()
35+
server.project = project
36+
server.revision = revision!!.revision
37+
server.commit = revision.commit
38+
server
39+
}
40+
val locator = GitMultiProjectPropertiesLocator(
41+
delayedTeamscaleMultiProjectUploader, true, null
42+
)
43+
val jarFile = File(javaClass.getResource("multiple-same-target-git-properties-folder")!!.file)
44+
locator.searchFile(jarFile, false)
45+
val teamscaleServers = delayedTeamscaleMultiProjectUploader.teamscaleUploaders.map { it.teamscaleServer }
46+
Assertions.assertThat(teamscaleServers).hasSize(2)
47+
Assertions.assertThat(teamscaleServers).anyMatch { server ->
48+
server.project == "demo2" && server.commit == CommitDescriptor(
49+
"master",
50+
"1645713803000"
51+
)
52+
}
53+
Assertions.assertThat(teamscaleServers).anyMatch { server ->
54+
server.project == "demolib" && server.revision == "05b9d066a0c0762be622987de403b5752fa01cc0"
55+
}
56+
}
57+
}

0 commit comments

Comments
 (0)