Skip to content

Commit

Permalink
Adds Ktlint and detekt to project and addresses the errors reported b…
Browse files Browse the repository at this point in the history
…y them
  • Loading branch information
rafaeltoledo committed Mar 5, 2019
1 parent dd9f23d commit 9d94352
Show file tree
Hide file tree
Showing 22 changed files with 87 additions and 50 deletions.
15 changes: 7 additions & 8 deletions app/build.gradle
Expand Up @@ -3,6 +3,7 @@ apply plugin: 'org.jetbrains.kotlin.android'
apply plugin: 'org.jetbrains.kotlin.kapt'

apply from: "$rootDir/gradle/coverage.gradle"
apply from: "$rootDir/gradle/lint.gradle"

android {
compileSdkVersion 28
Expand Down Expand Up @@ -49,8 +50,6 @@ android {
debug {
buildConfigField 'String', 'GOOGLE_REQUEST_ID_TOKEN', "\"$System.env.GOOGLE_REQUEST_ID_TOKEN_DEVELOPMENT\""

testCoverageEnabled true

applicationIdSuffix '.dev'
signingConfig signingConfigs.debug
}
Expand All @@ -73,8 +72,8 @@ android {
}

def bothTestImplementation(String dependency) {
project.dependencies.add("testImplementation", dependency)
project.dependencies.add("androidTestImplementation", dependency)
project.dependencies.add('testImplementation', dependency)
project.dependencies.add('androidTestImplementation', dependency)
}

dependencies {
Expand All @@ -87,9 +86,9 @@ dependencies {
kapt "androidx.lifecycle:lifecycle-compiler:$versions.lifecycle"

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$versions.kotlin"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.0.1'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1'

implementation 'com.google.firebase:firebase-core:16.0.6'
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-auth:16.1.0'

implementation 'com.google.android.gms:play-services-auth:16.0.1'
Expand All @@ -104,11 +103,11 @@ dependencies {
bothTestImplementation "androidx.test:rules:$versions.astl"
bothTestImplementation "androidx.test.espresso:espresso-core:$versions.espresso"
bothTestImplementation "androidx.test.espresso:espresso-intents:$versions.espresso"
bothTestImplementation 'com.google.truth:truth:0.42'
bothTestImplementation 'com.google.truth:truth:0.43'
bothTestImplementation "org.koin:koin-test:$versions.koin"
bothTestImplementation 'androidx.arch.core:core-testing:2.0.0'

testImplementation 'org.robolectric:robolectric:4.1'
testImplementation 'org.robolectric:robolectric:4.2'
testImplementation "io.mockk:mockk:$versions.mockk"

androidTestImplementation "io.mockk:mockk-android:$versions.mockk"
Expand Down
5 changes: 3 additions & 2 deletions app/src/debug/AndroidManifest.xml
@@ -1,10 +1,11 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="net.rafaeltoledo.social">

<application>
<application tools:ignore="GoogleAppIndexingWarning">
<meta-data
android:name="firebase_analytics_collection_deactivated"
android:value="true" />
</application>

</manifest>
</manifest>
2 changes: 1 addition & 1 deletion app/src/main/kotlin/net/rafaeltoledo/social/SocialApp.kt
Expand Up @@ -18,4 +18,4 @@ open class SocialApp : Application() {
firebaseModule
))
}
}
}
3 changes: 0 additions & 3 deletions app/src/main/kotlin/net/rafaeltoledo/social/data/Models.kt

This file was deleted.

@@ -1,6 +1,6 @@
package net.rafaeltoledo.social.data.auth

import net.rafaeltoledo.social.data.User
import net.rafaeltoledo.social.data.model.User

interface AuthManager {

Expand Down
Expand Up @@ -40,7 +40,7 @@ class GoogleAuth : DelegatedAuth {
}

override fun signOut(callback: (Status) -> Unit) {
client?.signOut()?.addOnCompleteListener { callback.invoke(if (it.isSuccessful) Status.SUCCESS else Status.FAILURE) }
client?.signOut()?.addOnCompleteListener { callback(if (it.isSuccessful) Status.SUCCESS else Status.FAILURE) }
}

companion object {
Expand Down
Expand Up @@ -3,7 +3,7 @@ package net.rafaeltoledo.social.data.firebase
import com.google.android.gms.tasks.Tasks
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.GoogleAuthProvider
import net.rafaeltoledo.social.data.User
import net.rafaeltoledo.social.data.model.User
import net.rafaeltoledo.social.data.auth.AuthManager
import net.rafaeltoledo.social.data.auth.SocialProvider

Expand Down
@@ -0,0 +1,3 @@
package net.rafaeltoledo.social.data.model

data class User(val id: String)
Expand Up @@ -6,4 +6,4 @@ import org.koin.dsl.module.module

val authModule = module {
single<DelegatedAuth> { GoogleAuth() }
}
}
Expand Up @@ -7,4 +7,4 @@ import org.koin.dsl.module.module
val firebaseModule = module {

single<AuthManager> { FirebaseAuthManager() }
}
}
Expand Up @@ -4,4 +4,4 @@ import org.koin.dsl.module.module

val firstModule = module {
single { "Social App" }
}
}
Expand Up @@ -8,4 +8,4 @@ import org.koin.dsl.module.module
val viewModelModule = module {
viewModel { MainViewModel(get()) }
viewModel { SignInViewModel(get(), get()) }
}
}
Expand Up @@ -30,4 +30,4 @@ class MainActivity : AppCompatActivity() {
finish()
}
}
}
}
Expand Up @@ -5,4 +5,4 @@ import net.rafaeltoledo.social.ui.BaseViewModel
class MainViewModel(private val string: String) : BaseViewModel() {

fun getString() = string
}
}
Expand Up @@ -4,7 +4,7 @@ import android.app.Activity
import android.content.Intent
import androidx.lifecycle.MutableLiveData
import net.rafaeltoledo.social.R
import net.rafaeltoledo.social.data.User
import net.rafaeltoledo.social.data.model.User
import net.rafaeltoledo.social.data.auth.AuthManager
import net.rafaeltoledo.social.data.auth.DelegatedAuth
import net.rafaeltoledo.social.data.auth.SocialProvider
Expand Down Expand Up @@ -32,4 +32,4 @@ class SignInViewModel(private val auth: AuthManager, private val googleAuth: Del
}
}
}
}
}
Expand Up @@ -3,7 +3,7 @@ package net.rafaeltoledo.social
import android.app.Application
import android.content.Context
import androidx.test.runner.AndroidJUnitRunner
import net.rafaeltoledo.social.data.User
import net.rafaeltoledo.social.data.model.User
import net.rafaeltoledo.social.data.auth.AuthManager
import net.rafaeltoledo.social.data.auth.DelegatedAuth
import net.rafaeltoledo.social.data.auth.GoogleAuth
Expand Down Expand Up @@ -58,7 +58,8 @@ class TestSocialApp : SocialApp() {

val noOpAuthManager = object : AuthManager {

override suspend fun socialSignIn(token: String, provider: SocialProvider) = User("0")
override suspend fun socialSignIn(token: String, provider: SocialProvider) =
User("0")

override fun isUserLoggedIn() = true
}
}
Expand Up @@ -19,4 +19,4 @@ abstract class BaseTest {
fun baseTearDown() {
Intents.release()
}
}
}
Expand Up @@ -11,14 +11,24 @@ import androidx.test.espresso.intent.Intents.getIntents
import androidx.test.espresso.intent.Intents.intending
import androidx.test.espresso.intent.matcher.BundleMatchers.hasEntry
import androidx.test.espresso.intent.matcher.IntentMatchers.hasExtras
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.ext.truth.content.IntentSubject.assertThat
import io.mockk.*
import io.mockk.coEvery
import io.mockk.coVerify
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import net.rafaeltoledo.social.R
import net.rafaeltoledo.social.base.BaseTest
import net.rafaeltoledo.social.data.User
import net.rafaeltoledo.social.data.auth.*
import net.rafaeltoledo.social.data.model.User
import net.rafaeltoledo.social.data.auth.AuthManager
import net.rafaeltoledo.social.data.auth.AuthResult
import net.rafaeltoledo.social.data.auth.DelegatedAuth
import net.rafaeltoledo.social.data.auth.SocialProvider
import net.rafaeltoledo.social.data.auth.Status
import net.rafaeltoledo.social.ui.feature.main.MainActivity
import net.rafaeltoledo.social.ui.feature.signin.SignInActivity
import org.hamcrest.Matchers.equalTo
Expand Down
10 changes: 6 additions & 4 deletions build.gradle
@@ -1,14 +1,15 @@
buildscript {

ext.versions = [
'kotlin': '1.3.11',
'jacoco': '0.8.2',
'kotlin': '1.3.21',
'jacoco': '0.8.3',
'lifecycle': '2.0.0',
'koin': '1.0.2',
'mockk': '1.8.13.kotlin13',
'mockk': '1.9.1',
'espresso': '3.1.1',
'astl': '1.1.1',
'testcore': '1.1.0',
'detekt': '1.0.0-RC14',
]

repositories {
Expand All @@ -18,11 +19,12 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.android.tools.build:gradle:3.3.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin"
classpath 'com.google.gms:google-services:4.2.0'
classpath "org.jacoco:org.jacoco.core:$versions.jacoco"
classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.2'
classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:$versions.detekt"
}
}

Expand Down
17 changes: 5 additions & 12 deletions gradle/coverage.gradle
Expand Up @@ -11,27 +11,20 @@ def classes = fileTree(dir: "$buildDir/tmp/kotlin-classes/debug")
def sources = files("$projectDir/src/main/kotlin")
def report = "$buildDir/reports/jacoco/report.xml"

task createCombinedCoverageReport(type: JacocoReport,
dependsOn: ['testDebugUnitTest'/*, 'createDebugCoverageReport'*/]) { // Disabling instrumented
// tests until we find a
// place to run them
task createCombinedCoverageReport(type: JacocoReport, dependsOn: 'testDebugUnitTest') {

sourceDirectories = sources
classDirectories = files(classes)
executionData = fileTree(dir: buildDir, includes: [
'jacoco/testDebugUnitTest.exec',
'outputs/code-coverage/connected/*coverage.ec'
])
sourceDirectories.setFrom(sources)
classDirectories.setFrom(files(classes))
executionData.setFrom(fileTree(dir: buildDir, includes: ['jacoco/testDebugUnitTest.exec']))

reports {
xml.enabled = true
xml.destination file(report)

html.enabled = true
}
}

coveralls {
sourceDirs = sources.flatten()
jacocoReportPath = report
}
}
31 changes: 31 additions & 0 deletions gradle/lint.gradle
@@ -0,0 +1,31 @@
apply plugin: 'io.gitlab.arturbosch.detekt'

detekt {
toolVersion = versions.detekt
input = files('src/main/kotlin')
filters = '.*/resources/.*,.*/build/.*'
}

configurations {
ktlint
}

dependencies {
ktlint 'com.github.shyiko:ktlint:0.30.0'
}

task ktlint(type: JavaExec, group: 'verification') {
description = 'Check Kotlin code style.'
classpath = configurations.ktlint
main = 'com.github.shyiko.ktlint.Main'
args 'src/**/*.kt'
}

check.dependsOn 'ktlint', 'detekt'

task ktlintFormat(type: JavaExec, group: 'formatting') {
description = 'Fix Kotlin code style deviations.'
classpath = configurations.ktlint
main = 'com.github.shyiko.ktlint.Main'
args '-F', 'src/**/*.kt'
}
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

0 comments on commit 9d94352

Please sign in to comment.