Skip to content
This repository was archived by the owner on Oct 31, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,25 @@ class GradleProjectPlugin implements Plugin<Project> {

static final def UPDATE_PARENT_ON_DEPENDENCY_UPGRADE = [
(GROUP_ANDROID_SUPPORT): [
27: [
'27.0.0': [
(GROUP_ONESIGNAL): '3.7.0'
]
],
(GROUP_GMS): [
'8.4.0': [
(GROUP_ANDROID_SUPPORT): '22.2.1'
],
'11.2.0': [
(GROUP_ANDROID_SUPPORT): '25.1.0'
],
'11.8.0': [
(GROUP_ANDROID_SUPPORT): '26.0.0'
]
],
(GROUP_FIREBASE): [
'9.8.0': [
(GROUP_ANDROID_SUPPORT): '24.1.0'
]
]
]

Expand Down Expand Up @@ -572,7 +588,8 @@ class GradleProjectPlugin implements Plugin<Project> {

static void updateParentOnDependencyUpgrade(String dependencyGroup, String dependencyVersion) {
UPDATE_PARENT_ON_DEPENDENCY_UPGRADE[dependencyGroup].each { key, value ->
if (!isVersionInOrLower(dependencyVersion, new ExactVersionSelector("${key}.0.0}")))
def exactVersion = new ExactVersionSelector(key)
if (isVersionBelow(dependencyVersion, exactVersion))
return // == continue in each closure

value.each { parentGroupEntry ->
Expand All @@ -583,12 +600,14 @@ class GradleProjectPlugin implements Plugin<Project> {
parentGroupVersionEntry['version'] as String
)
if (compareVersionResult != parentGroupVersionEntry['version']) {
didUpdateOneSignalVersion = true
if (parentGroupEntry.key == GROUP_ONESIGNAL)
didUpdateOneSignalVersion = true
versionGroupAligns[parentGroupEntry.key]['version'] = parentGroupEntry.value
}
}
else {
didUpdateOneSignalVersion = true
if (parentGroupEntry.key == GROUP_ONESIGNAL)
didUpdateOneSignalVersion = true
versionGroupAligns[parentGroupEntry.key] = [version: parentGroupEntry.value]
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,33 @@ class GradleTestTemplate {
""".stripIndent()
}

// Don't warn on any android specific classes.
// Used to detect build errors with out of date support library
// Needed for the 'Find min-support for Firebase and GMS - build' Test
static void createProguardFile() {
def proguardFile = testProjectDir.newFile("proguard-rules.pro")
proguardFile << '''
-dontwarn android.content.pm.**
-dontwarn android.app.**
-dontwarn android.content.**
-dontwarn android.os.**
-dontwarn android.graphics.**
-dontwarn com.google.protobuf.**
-dontwarn android.view.**
-dontwarn android.media.**
-dontwarn android.widget.**
-dontwarn android.text.**
-dontwarn android.service.**
-dontwarn android.net.**

# Had to omit the whole class. Keeps complaining about android.os.IBinder getBinder()
# Warning: android.support.v4.app.JobIntentService$JobServiceEngineImpl:
# can't find referenced method 'android.os.IBinder getBinder()'
# in program class android.support.v4.app.JobIntentService$JobServiceEngineImpl
-dontwarn android.support.v4.app.JobIntentService$JobServiceEngineImpl
'''.stripIndent()
}

static void createBuildFile(buildSections) {
testProjectDir = new TemporaryFolder()
testProjectDir.create()
Expand Down Expand Up @@ -102,9 +129,16 @@ class GradleTestTemplate {

${buildSections['defaultConfigExtras']}
}

lintOptions {
abortOnError false
}

buildTypes {
debug { }
debug {
minifyEnabled true
proguardFiles 'proguard-rules.pro'
}
}

${buildSections['androidSectionExtras']}
Expand Down Expand Up @@ -183,6 +217,7 @@ class GradleTestTemplate {
buildFile << buildFileStr

createSubProject(currentParams)
createProguardFile()

def result =
GradleRunner.create()
Expand Down
44 changes: 42 additions & 2 deletions src/test/groovy/com/onesignal/androidsdk/MainTest.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -564,8 +564,8 @@ class MainTest extends Specification {
then:
assert results // Asserting existence and contains 1+ entries
results.each {
assert it.value.contains('com.android.support:cardview-v7:[26.0.0, 27.1.0) -> 27.0.2')
assert it.value.contains('com.android.support:support-v4:25.+ -> 27.0.2 (*)')
assert it.value.contains('com.android.support:cardview-v7:[26.0.0, 27.1.0) -> 26.1.0')
assert it.value.contains('com.android.support:support-v4:25.+ -> 26.1.0')
}
}

Expand Down Expand Up @@ -728,4 +728,44 @@ class MainTest extends Specification {
assert !it.value.toLowerCase().contains('failure')
}
}
def 'upgrade support library to 25 when gms is 11.2.0'() {
def compileLines = """\
compile 'com.google.android.gms:play-services-base:11.2.0'
compile 'com.android.support:appcompat-v7:23.0.1'
"""

when:
def results = runGradleProject([
compileLines : compileLines
])

then:
assert results // Asserting existence and contains 1+ entries
results.each {
assert it.value.contains('com.google.android.gms:play-services-base:11.2.0\n')
assert it.value.contains('com.android.support:appcompat-v7:23.0.1 -> 25.1.0\n')
}
}
// Run manually search for "Warning:".
// If a support library class is listed
// then the support library needs to be updated for the firebase / GMS version
def 'Find min-support for Firebase and GMS - build'() {
GradleTestTemplate.buildArgumentSets[GRADLE_OLDEST_VERSION] = [['transformClassesAndResourcesWithProguardForDebug', '--info']]
when:
// Keep as '+' for latest when checking in to this fails when Google changes requirements
def gms_version = '+'
def results = runGradleProject([
compileLines: """
compile 'com.google.android.gms:play-services-base:$gms_version'
compile 'com.google.android.gms:play-services-gcm:$gms_version'
compile 'com.google.android.gms:play-services-maps:$gms_version'
compile 'com.google.firebase:firebase-messaging:+'
compile 'com.android.support:appcompat-v7:22.0.0'
""",
skipGradleVersion: GRADLE_LATEST_VERSION
])

then:
assert results // Assert success
}
}