Skip to content

Commit

Permalink
Use Flank as a maven artifact. (#36)
Browse files Browse the repository at this point in the history
This removes the need to redownload flank every time.
This also removes the snapshot dependencies and the Download task
dependencies.

Fixes #3
  • Loading branch information
runningcode committed Feb 27, 2019
1 parent b61dfed commit 62e7bab
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 25 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ fladle {
new Device("Nexus5", 23, null, null)
]
projectId("flank-gradle")
flankVersion("v3.1.1")
flankVersion("4.4.0")
debugApk("$buildDir/outputs/apk/debug/sample-debug.apk")
instrumentationApk("$buildDir/outputs/apk/androidTest/debug/sample-debug-androidTest.apk"
autoGoogleLogin = true
Expand Down Expand Up @@ -108,7 +108,7 @@ This is automatically discovered based on the service credential by default.
### flankVersion
`flankVersion("flank_snapshot")` to specify a Flank snapshot.

`flankVersion("v3.1.1")` to specify a specific Flank version.
`flankVersion("4.4.0")` to specify a specific Flank version.


### debugApk
Expand Down
7 changes: 1 addition & 6 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@ version = "0.4.1"
repositories {
google()
jcenter()
maven {
url = uri("https://oss.sonatype.org/content/repositories/snapshots/")
}
}

plugins {
Expand All @@ -20,8 +17,6 @@ dependencies {
compileOnly(gradleApi())
implementation("com.android.tools.build:gradle:3.3.1")

implementation("de.undercouch:gradle-download-task:4.0.0-SNAPSHOT")

testImplementation(gradleTestKit())
testImplementation("junit:junit:4.12")
testImplementation("com.google.truth:truth:0.42")
Expand All @@ -34,7 +29,7 @@ kotlinter {
pluginBundle {
website = "https://github.com/runningcode/fladle"
vcsUrl = "https://github.com/runningcode/fladle"
tags = listOf("flank", "testing", "android")
tags = listOf("flank", "testing", "android", "fladle")

mavenCoordinates {
artifactId = "fladle"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project

open class FlankGradleExtension(project: Project) : FladleConfig {
override var flankVersion: String = "v4.4.0"
override var flankVersion: String = "4.4.0"
// Project id is automatically discovered by default. Use this to override the project id.
override var projectId: String? = null
override var serviceAccountCredentials: String? = null
Expand Down
38 changes: 22 additions & 16 deletions buildSrc/src/main/java/com/osacky/flank/gradle/FlankGradlePlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,32 @@ package com.osacky.flank.gradle

import com.android.build.gradle.AppExtension
import com.android.builder.model.TestOptions
import de.undercouch.gradle.tasks.download.Download
import org.gradle.api.GradleException
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.tasks.Exec
import org.gradle.api.tasks.TaskContainer
import org.gradle.kotlin.dsl.repositories
import org.gradle.util.GradleVersion

class FlankGradlePlugin : Plugin<Project> {

override fun apply(target: Project) {
checkMinimumGradleVersion()
// Add Flank maven repo.
target.repositories {
maven { url = target.uri("https://dl.bintray.com/flank/maven") }
}

// Create Configuration to store flank dependency
target.configurations.create(FLADLE_CONFIG)

val extension = target.extensions.create("fladle", FlankGradleExtension::class.java, target)

// Add Flank dependency to Fladle Configuration
target.dependencies.add(FLADLE_CONFIG, "flank:flank:${extension.flankVersion}")

configureTasks(target, extension)
}

Expand All @@ -26,17 +39,6 @@ class FlankGradlePlugin : Plugin<Project> {
}

private fun configureTasks(project: Project, extension: FlankGradleExtension) {
project.tasks.apply {

register("downloadFlank", Download::class.java) {
description = "Downloads flank to the build/fladle directory in the current project."
src("https://github.com/TestArmada/flank/releases/download/${extension.flankVersion}/flank.jar")
dest("${project.fladleDir}/flank.jar")
onlyIfModified(true)
group = TASK_GROUP
}
}

project.afterEvaluate {
// Only use automatic apk path detection for 'com.android.application' projects.
project.pluginManager.withPlugin("com.android.application") {
Expand Down Expand Up @@ -69,17 +71,17 @@ class FlankGradlePlugin : Plugin<Project> {
description = "Finds problems with the current configuration."
group = TASK_GROUP
workingDir("${project.fladleDir}/")
commandLine("java", "-jar", "flank.jar", "firebase", "test", "android", "doctor")
dependsOn(named("downloadFlank"), writeConfigProps)
commandLine("java", "-jar", project.fladleConfig.singleFile.absolutePath, "firebase", "test", "android", "doctor")
dependsOn(writeConfigProps)
}

val execFlank = project.tasks.register("execFlank$name", Exec::class.java) {
description = "Runs instrumentation tests using flank on firebase test lab."
group = TASK_GROUP
workingDir("${project.fladleDir}/")
commandLine("java", "-jar", "flank.jar", "firebase", "test", "android", "run")
commandLine("java", "-jar", project.fladleConfig.singleFile.absolutePath, "firebase", "test", "android", "run")
environment(mapOf("GOOGLE_APPLICATION_CREDENTIALS" to "${config.serviceAccountCredentials}"))
dependsOn(named("downloadFlank"), named("writeConfigProps$name"))
dependsOn(named("writeConfigProps$name"))
}

register("runFlank$name", RunFlankTask::class.java, config).configure {
Expand Down Expand Up @@ -116,9 +118,13 @@ class FlankGradlePlugin : Plugin<Project> {
}
}

private val Project.fladleConfig: Configuration
get() = configurations.getByName(FLADLE_CONFIG)

companion object {
val GRADLE_MIN_VERSION = GradleVersion.version("4.9")
const val TASK_GROUP = "fladle"
const val FLADLE_CONFIG = "fladle"
fun log(message: String) {
println("Fladle: $message")
}
Expand Down

0 comments on commit 62e7bab

Please sign in to comment.