Skip to content

Commit

Permalink
Add a Gradle project to run functional tests
Browse files Browse the repository at this point in the history
Only packages with Java sources are added for now.

RELNOTES=N/A
PiperOrigin-RevId: 720564371
  • Loading branch information
danysantiago authored and Dagger Team committed Jan 28, 2025
1 parent fb06a5d commit ae67d23
Show file tree
Hide file tree
Showing 5 changed files with 142 additions and 29 deletions.
30 changes: 30 additions & 0 deletions buildSrc/src/main/kotlin/dagger/gradle/build/JarDependencies.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* Copyright (C) 2025 The Dagger Authors.
*
* 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 dagger.gradle.build

import org.gradle.api.Project
import org.gradle.api.file.RegularFile

fun Project.findBootstrapCompilerJar(): RegularFile =
rootProject.layout.projectDirectory
.dir("java/dagger/internal/codegen/bootstrap")
.file("bootstrap_compiler_deploy.jar")

fun Project.findXProcessingJar(): RegularFile =
rootProject.layout.projectDirectory
.dir("java/dagger/internal/codegen/xprocessing")
.file("xprocessing.jar")
82 changes: 82 additions & 0 deletions gradle-projects/dagger-compiler-functional-tests/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import dagger.gradle.build.daggerSources
import dagger.gradle.build.findXProcessingJar

plugins { alias(libs.plugins.dagger.kotlinJvm) }

daggerSources {
// TODO(danysantiago): Add packages that test Kotlin sources
test.setPackages(
listOf(
"javatests/dagger/functional/assisted",
"javatests/dagger/functional/assisted/subpackage",
"javatests/dagger/functional/basic",
"javatests/dagger/functional/basic/subpackage",
"javatests/dagger/functional/binds",
"javatests/dagger/functional/binds/subpackage",
"javatests/dagger/functional/builder",
"javatests/dagger/functional/builderbinds",
"javatests/dagger/functional/componentdependency",
"javatests/dagger/functional/componentdependency/subpackage",
"javatests/dagger/functional/cycle",
"javatests/dagger/functional/factory",
"javatests/dagger/functional/generated",
"javatests/dagger/functional/generictypes",
"javatests/dagger/functional/generictypes/subpackage",
"javatests/dagger/functional/guava",
"javatests/dagger/functional/guava/a",
"javatests/dagger/functional/jakarta",
"javatests/dagger/functional/jdk8",
"javatests/dagger/functional/jdk8/a",
"javatests/dagger/functional/membersinject",
"javatests/dagger/functional/membersinject/subpackage",
"javatests/dagger/functional/membersinject/subpackage/a",
"javatests/dagger/functional/membersinject/subpackage/b",
"javatests/dagger/functional/modules",
"javatests/dagger/functional/modules/subpackage",
"javatests/dagger/functional/multibindings",
"javatests/dagger/functional/multibindings/subpackage",
"javatests/dagger/functional/multipackage",
"javatests/dagger/functional/multipackage/a",
"javatests/dagger/functional/multipackage/b",
"javatests/dagger/functional/multipackage/c",
"javatests/dagger/functional/multipackage/d",
"javatests/dagger/functional/multipackage/foo",
"javatests/dagger/functional/multipackage/grandsub",
"javatests/dagger/functional/multipackage/moduleconstructor",
"javatests/dagger/functional/multipackage/primitives",
"javatests/dagger/functional/multipackage/sub",
"javatests/dagger/functional/names",
"javatests/dagger/functional/nullables",
"javatests/dagger/functional/rawtypes",
"javatests/dagger/functional/reusable",
"javatests/dagger/functional/scope",
"javatests/dagger/functional/staticproviders",
"javatests/dagger/functional/subcomponent",
"javatests/dagger/functional/subcomponent/hiding",
"javatests/dagger/functional/subcomponent/hiding/a",
"javatests/dagger/functional/subcomponent/hiding/b",
"javatests/dagger/functional/subcomponent/module",
"javatests/dagger/functional/subcomponent/multibindings",
"javatests/dagger/functional/subcomponent/pruning",
"javatests/dagger/functional/subcomponent/repeat",
)
)
}

dependencies {
testImplementation(project(":dagger"))
testAnnotationProcessor(project(":dagger-compiler"))
testAnnotationProcessor(project(":dagger-spi"))
// Functional tests rely on the non-shaded version of the compiler, so we need to bring
// those compile only dependencies.
testAnnotationProcessor(libs.auto.common)
testAnnotationProcessor(files(project.findXProcessingJar()))

testImplementation(libs.junit)
testImplementation(libs.truth)
testImplementation(libs.auto.factory.annotations)
testAnnotationProcessor(libs.auto.factory.compiler)
testImplementation(libs.auto.value.annotations)
testAnnotationProcessor(libs.auto.value.compiler)
testImplementation(libs.kotlin.stdlib)
}
18 changes: 4 additions & 14 deletions gradle-projects/dagger-compiler/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import dagger.gradle.build.daggerSources
import dagger.gradle.build.findBootstrapCompilerJar
import dagger.gradle.build.findXProcessingJar

plugins {
alias(libs.plugins.dagger.kotlinJvm)
Expand Down Expand Up @@ -49,23 +51,11 @@ dependencies {
implementation(libs.kotlinPoet)
implementation(libs.ksp.api)

annotationProcessor(
files(
project.rootProject.layout.projectDirectory
.dir("java/dagger/internal/codegen/bootstrap")
.file("bootstrap_compiler_deploy.jar")
)
)
annotationProcessor(files(project.findBootstrapCompilerJar()))

// These dependencies are shaded into dagger-spi
compileOnly(libs.auto.common)
compileOnly(
files(
project.rootProject.layout.projectDirectory
.dir("java/dagger/internal/codegen/xprocessing")
.file("xprocessing.jar")
)
)
compileOnly(files(project.findXProcessingJar()))
}

shading {
Expand Down
9 changes: 6 additions & 3 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
[versions]
autoValue = "1.9"
autoFactory = "1.0"
autoService = "1.0"
autoValue = "1.9"
guava = "33.0.0-jre"
gradleIncap = "0.2"
jdk = "18"
Expand All @@ -15,10 +16,12 @@ truth = "1.4.0"

[libraries]
auto-common = { module = "com.google.auto:auto-common", version = "1.2.1" }
auto-value-annotations = { module = "com.google.auto.value:auto-value-annotations", version.ref = "autoValue" }
auto-value-compiler = { module = "com.google.auto.value:auto-value", version.ref = "autoValue" }
auto-factory-annotations = { module = "com.google.auto.factory:auto-factory", version.ref = "autoFactory" }
auto-factory-compiler = { module = "com.google.auto.factory:auto-factory", version.ref = "autoFactory" }
auto-service-annotations = { module = "com.google.auto.service:auto-service-annotations", version.ref = "autoService" }
auto-service-compiler = { module = "com.google.auto.service:auto-service", version.ref = "autoService" }
auto-value-annotations = { module = "com.google.auto.value:auto-value-annotations", version.ref = "autoValue" }
auto-value-compiler = { module = "com.google.auto.value:auto-value", version.ref = "autoValue" }
checkerFramework = { module = "org.checkerframework:checker-compat-qual", version = "2.5.3" }
findBugs = { module = "com.google.code.findbugs:jsr305", version = "3.0.1" }
javaFormatter = { module = "com.google.googlejavaformat:google-java-format", version = "1.5" }
Expand Down
32 changes: 20 additions & 12 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,25 +1,33 @@
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}

dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}

rootProject.name = "dagger-parent"

fun includeProject(name: String, path: String) {
include(name)
project(name).projectDir = File(path)
include(name)
project(name).projectDir = File(path)
}

includeProject(":dagger", "gradle-projects/dagger-runtime")

includeProject(":dagger-spi", "gradle-projects/dagger-spi")

includeProject(":dagger-compiler", "gradle-projects/dagger-compiler")

includeProject(
":dagger-compiler-functional-tests",
"gradle-projects/dagger-compiler-functional-tests",
)

0 comments on commit ae67d23

Please sign in to comment.