Skip to content

Commit

Permalink
Fix tests for GenerateProtoTaskCollection
Browse files Browse the repository at this point in the history
  • Loading branch information
rougsig committed Jan 25, 2023
1 parent 07a3bf2 commit 3dbeccd
Show file tree
Hide file tree
Showing 8 changed files with 478 additions and 395 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,16 @@
*/
package com.google.protobuf.gradle

import com.google.protobuf.gradle.internal.DefaultGenerateProtoTaskCollection
import com.google.protobuf.gradle.internal.ProtoSourceSetObjectFactory
import com.google.protobuf.gradle.internal.ProtoVariantObjectFactory
import com.google.protobuf.gradle.tasks.GenerateProtoTaskSpec
import com.google.protobuf.gradle.tasks.GenerateProtoTaskCollection
import com.google.protobuf.gradle.tasks.ProtoSourceSet
import com.google.protobuf.gradle.tasks.ProtoVariant
import groovy.transform.CompileStatic
import groovy.transform.PackageScope
import org.gradle.api.Action
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.NamedDomainObjectSet
import org.gradle.api.Project
import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.Property
Expand All @@ -61,7 +61,7 @@ abstract class ProtobufExtension {

public ProtobufExtension(final Project project) {
this.project = project
this.tasks = new GenerateProtoTaskCollection(project)
this.tasks = new DefaultGenerateProtoTaskCollection(project)
this.tools = new ToolsLocator(project)

this.defaultGeneratedFilesBaseDir = "${project.buildDir}/generated/source/proto"
Expand All @@ -72,12 +72,10 @@ abstract class ProtobufExtension {
this.variants = project.objects.domainObjectContainer(ProtoVariant, new ProtoVariantObjectFactory(project))
}

@PackageScope
NamedDomainObjectContainer<ProtoSourceSet> getSourceSets() {
return this.sourceSets
}

@PackageScope
NamedDomainObjectContainer<ProtoVariant> getVariants() {
return variants
}
Expand Down Expand Up @@ -161,85 +159,4 @@ abstract class ProtobufExtension {
public GenerateProtoTaskCollection getGenerateProtoTasks() {
return tasks
}

@CompileStatic
public class GenerateProtoTaskCollection {
private final Project project

GenerateProtoTaskCollection(final Project project) {
this.project = project
}

private NamedDomainObjectSet<ProtoVariant> variants() {
return project.extensions.getByType(ProtobufExtension).variants
}

void all(Action<GenerateProtoTaskSpec> action) {
variants.all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

void all(@DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure) {
all(ConfigureUtil.configureUsing(closure))
}

void ofSourceSet(String sourceSet, Action<GenerateProtoTaskSpec> action) {
variants()
.matching { ProtoVariant variant -> !Utils.isAndroidProject(project) && variant.sourceSet == sourceSet }
.all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

void ofSourceSet(String sourceSet, @DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure) {
ofSourceSet(sourceSet, ConfigureUtil.configureUsing(closure))
}

void ofFlavor(String flavor, Action<GenerateProtoTaskSpec> action) {
variants()
.matching { ProtoVariant variant -> Utils.isAndroidProject(project) && variant.flavors.contains(flavor) }
.all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

void ofFlavor(String flavor, @DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure) {
ofFlavor(flavor, ConfigureUtil.configureUsing(closure))
}

void ofBuildType(String buildType, Action<GenerateProtoTaskSpec> action) {
variants()
.matching { ProtoVariant variant -> Utils.isAndroidProject(project) && variant.buildType == buildType }
.all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

void ofBuildType(String buildType, @DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure) {
ofBuildType(buildType, ConfigureUtil.configureUsing(closure))
}

void ofVariant(String name, Action<GenerateProtoTaskSpec> action) {
variants()
.matching { ProtoVariant variant -> Utils.isAndroidProject(project) && variant.name == name }
.all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

void ofVariant(String name, @DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure) {
ofVariant(name, ConfigureUtil.configureUsing(closure))
}

void ofNonTest(Action<GenerateProtoTaskSpec> action) {
variants()
.matching { ProtoVariant variant -> Utils.isAndroidProject(project) && !variant.isTest }
.all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

void ofNonTest(@DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure) {
ofNonTest(ConfigureUtil.configureUsing(closure))
}

void ofTest(Action<GenerateProtoTaskSpec> action) {
variants()
.matching { ProtoVariant variant -> Utils.isAndroidProject(project) && variant.isTest }
.all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

void ofTest(@DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure) {
ofTest(ConfigureUtil.configureUsing(closure))
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
package com.google.protobuf.gradle.internal

import com.google.protobuf.gradle.ProtobufExtension
import com.google.protobuf.gradle.Utils
import com.google.protobuf.gradle.tasks.GenerateProtoTaskCollection
import com.google.protobuf.gradle.tasks.GenerateProtoTaskSpec
import com.google.protobuf.gradle.tasks.ProtoVariant
import groovy.transform.CompileStatic
import org.gradle.api.Action
import org.gradle.api.NamedDomainObjectSet
import org.gradle.api.Project
import org.gradle.util.ConfigureUtil

@CompileStatic
class DefaultGenerateProtoTaskCollection implements GenerateProtoTaskCollection {
private final Project project

DefaultGenerateProtoTaskCollection(Project project) {
this.project = project
}

NamedDomainObjectSet<ProtoVariant> all() {
return project.extensions.getByType(ProtobufExtension).variants
}

@Override
void all(Action<GenerateProtoTaskSpec> action) {
all().all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

@Override
void all(Closure<GenerateProtoTaskSpec> closure) {
all(ConfigureUtil.configureUsing(closure))
}

NamedDomainObjectSet<ProtoVariant> ofSourceSet(String sourceSet) {
return all()
.matching { ProtoVariant variant -> !Utils.isAndroidProject(project) && variant.sourceSet == sourceSet }
}

@Override
void ofSourceSet(String sourceSet, Action<GenerateProtoTaskSpec> action) {
ofSourceSet(sourceSet)
.all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

@Override
void ofSourceSet(String sourceSet, Closure<GenerateProtoTaskSpec> closure) {
ofSourceSet(sourceSet, ConfigureUtil.configureUsing(closure))
}

NamedDomainObjectSet<ProtoVariant> ofFlavor(String flavor) {
return all()
.matching { ProtoVariant variant -> Utils.isAndroidProject(project) && variant.flavors.contains(flavor) }
}

@Override
void ofFlavor(String flavor, Action<GenerateProtoTaskSpec> action) {
ofFlavor(flavor)
.all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

@Override
void ofFlavor(String flavor, Closure<GenerateProtoTaskSpec> closure) {
ofFlavor(flavor, ConfigureUtil.configureUsing(closure))
}

NamedDomainObjectSet<ProtoVariant> ofBuildType(String buildType) {
return all()
.matching { ProtoVariant variant -> Utils.isAndroidProject(project) && variant.buildType == buildType }
}

@Override
void ofBuildType(String buildType, Action<GenerateProtoTaskSpec> action) {
ofBuildType(buildType)
.all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

@Override
void ofBuildType(String buildType, Closure<GenerateProtoTaskSpec> closure) {
ofBuildType(buildType, ConfigureUtil.configureUsing(closure))
}

NamedDomainObjectSet<ProtoVariant> ofVariant(String name) {
return all()
.matching { ProtoVariant variant -> Utils.isAndroidProject(project) && variant.name == name }
}

@Override
void ofVariant(String name, Action<GenerateProtoTaskSpec> action) {
ofVariant(name)
.all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

@Override
void ofVariant(String name, Closure<GenerateProtoTaskSpec> closure) {
ofVariant(name, ConfigureUtil.configureUsing(closure))
}

NamedDomainObjectSet<ProtoVariant> ofNonTest() {
return all()
.matching { ProtoVariant variant -> Utils.isAndroidProject(project) && !variant.isTest }
}

@Override
void ofNonTest(Action<GenerateProtoTaskSpec> action) {
ofNonTest()
.all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

@Override
void ofNonTest(Closure<GenerateProtoTaskSpec> closure) {
ofNonTest(ConfigureUtil.configureUsing(closure))
}

NamedDomainObjectSet<ProtoVariant> ofTest() {
all()
.matching { ProtoVariant variant -> Utils.isAndroidProject(project) && variant.isTest }
}

@Override
void ofTest(Action<GenerateProtoTaskSpec> action) {
ofTest()
.all { ProtoVariant variant -> action.execute(variant.generateProtoTaskSpec) }
}

@Override
void ofTest(Closure<GenerateProtoTaskSpec> closure) {
ofTest(ConfigureUtil.configureUsing(closure))
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.google.protobuf.gradle.tasks

import org.gradle.api.Action

interface GenerateProtoTaskCollection {
void all(Action<GenerateProtoTaskSpec> action)

void all(@DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure)

void ofSourceSet(String sourceSet, Action<GenerateProtoTaskSpec> action)

void ofSourceSet(String sourceSet, @DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure)

void ofFlavor(String flavor, Action<GenerateProtoTaskSpec> action)

void ofFlavor(String flavor, @DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure)

void ofBuildType(String buildType, Action<GenerateProtoTaskSpec> action)

void ofBuildType(String buildType, @DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure)

void ofVariant(String name, Action<GenerateProtoTaskSpec> action)

void ofVariant(String name, @DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure)

void ofNonTest(Action<GenerateProtoTaskSpec> action)

void ofNonTest(@DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure)

void ofTest(Action<GenerateProtoTaskSpec> action)

void ofTest(@DelegatesTo(GenerateProtoTaskSpec) Closure<GenerateProtoTaskSpec> closure)
}
Loading

0 comments on commit 3dbeccd

Please sign in to comment.