Skip to content
This repository was archived by the owner on Oct 31, 2022. It is now read-only.

Commit 1142690

Browse files
committed
Fixes downgrade when using a BOM only version
* If a project is using a BOM file (such as firebase-bom) as the only source for a version number on a dependency we were incorrectly downgrading. * This was resloved by ignoring null versions
1 parent 384fa68 commit 1142690

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

src/main/groovy/com/onesignal/androidsdk/GradleProjectPlugin.groovy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,12 @@ class GradleProjectPlugin implements Plugin<Project> {
540540
def name = details.target.name
541541
def version = details.target.version
542542

543+
// null means it was added the project without a version number and must be driven by a BOM such as firebase-bom
544+
// This means we have / will see the same dependency with a version again from the BOM as a constraint,
545+
// which can be overridden.
546+
if (!version)
547+
return
548+
543549
String resolvedVersion = null
544550
def moduleOverride = versionModuleAligns["$group:$name"]
545551

src/test/groovy/com/onesignal/androidsdk/MainTest.groovy

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -825,6 +825,71 @@ class MainTest extends Specification {
825825
}
826826
}
827827

828+
def 'fcm 15 and crashlytics with firebase platform BOM'() {
829+
when:
830+
def results = runGradleProject([
831+
'android.useAndroidX': true,
832+
skipGradleVersion: GRADLE_OLDEST_VERSION,
833+
compileLines : """\
834+
implementation platform('com.google.firebase:firebase-bom:25.4.1')
835+
implementation 'com.google.firebase:firebase-messaging:15.0.0'
836+
implementation 'com.google.firebase:firebase-crashlytics'
837+
"""
838+
])
839+
840+
then:
841+
assert results // Asserting existence and contains 1+ entries
842+
results.each {
843+
// 1. Ensure firebase-bom is allowed to upgrade firebase-messaging
844+
assert it.value.contains('com.google.firebase:firebase-messaging:15.0.0 -> 20.2.0')
845+
// 2. Ensure version from firebase-bom is used and we don't try to downgrade
846+
assert it.value.contains('com.google.firebase:firebase-crashlytics -> 17.0.1')
847+
}
848+
}
849+
850+
def 'pre-15 firebase with firebase-bom platform 17 BOM'() {
851+
when:
852+
def results = runGradleProject([
853+
'android.useAndroidX': true,
854+
skipGradleVersion: GRADLE_OLDEST_VERSION,
855+
compileLines : """\
856+
implementation platform('com.google.firebase:firebase-bom:17.0.0')
857+
implementation 'com.google.firebase:firebase-messaging:12.0.0'
858+
"""
859+
])
860+
861+
then:
862+
assert results // Asserting existence and contains 1+ entries
863+
results.each {
864+
// 1. Ensure firebase-bom is allowed to upgrade firebase-messaging
865+
assert it.value.contains('com.google.firebase:firebase-messaging:12.0.0 -> 17.5.0')
866+
// 2. Ensures this sub dependency get force downgraded to 12.0.0
867+
assert it.value.contains("com.google.firebase:firebase-measurement-connector:17.0.1${NEW_LINE}")
868+
}
869+
}
870+
871+
def 'fcm 15 and crashlytics with firebase enforcedPlatform BOM'() {
872+
when:
873+
def results = runGradleProject([
874+
'android.useAndroidX': true,
875+
skipGradleVersion: GRADLE_OLDEST_VERSION,
876+
compileLines : """\
877+
implementation enforcedPlatform('com.google.firebase:firebase-bom:25.4.1')
878+
implementation 'com.google.firebase:firebase-messaging:15.0.0'
879+
implementation 'com.google.firebase:firebase-crashlytics'
880+
"""
881+
])
882+
883+
then:
884+
assert results // Asserting existence and contains 1+ entries
885+
results.each {
886+
// 1. Ensure firebase-bom is allowed to upgrade firebase-messaging
887+
assert it.value.contains('com.google.firebase:firebase-messaging:15.0.0 -> 20.2.0')
888+
// 2. Ensure version from firebase-bom is used and we don't try to downgrade
889+
assert it.value.contains('com.google.firebase:firebase-crashlytics -> 17.0.1')
890+
}
891+
}
892+
828893
def 'when firebase-core:16 and firebase-messaging:15.0.2 upgrade to firebase-messaging:17.0.0'() {
829894
def compileLines = """\
830895
compile 'com.google.firebase:firebase-messaging:15.0.2'

0 commit comments

Comments
 (0)