diff --git a/app/build.gradle b/app/build.gradle index fc04a1622..41d2614cd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -76,7 +76,7 @@ android { } } - flavorDimensions "distribution" + flavorDimensions = ["distribution"] productFlavors { // Play Store and officially supported version @@ -170,16 +170,16 @@ android { dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' - implementation 'androidx.core:core:1.13.0' + implementation 'androidx.core:core:1.13.1' implementation 'androidx.media:media:1.7.0' - implementation 'androidx.fragment:fragment:1.6.2' - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.fragment:fragment:1.8.0' + implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'androidx.preference:preference:1.2.1' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.3.2' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - implementation 'com.google.android.material:material:1.11.0' + implementation 'com.google.android.material:material:1.12.0' implementation 'androidx.browser:browser:1.8.0' implementation 'androidx.lifecycle:lifecycle-viewmodel:2.7.0' implementation 'androidx.lifecycle:lifecycle-livedata:2.7.0' @@ -204,8 +204,8 @@ dependencies { // Dependencies for the Play Store version. storeImplementation 'com.google.android.gms:play-services-maps:18.2.0' - storeImplementation 'com.google.firebase:firebase-analytics:21.5.0' - storeImplementation 'com.google.firebase:firebase-crashlytics:18.6.4' + storeImplementation 'com.google.firebase:firebase-analytics:22.0.1' + storeImplementation 'com.google.firebase:firebase-crashlytics:19.0.1' storeImplementation 'com.google.android.gms:play-services-code-scanner:16.1.0' // Dependencies for open version. @@ -220,7 +220,7 @@ dependencies { testImplementation 'junit:junit:4.13.2' // Once final classes can be mocked, go back to mockito-core. testImplementation 'org.mockito:mockito-inline:5.2.0' - testImplementation 'org.robolectric:robolectric:4.12.1' + testImplementation 'org.robolectric:robolectric:4.12.2' testImplementation 'androidx.test:core:1.5.0' testImplementation 'androidx.test.ext:junit:1.1.5' testImplementation 'androidx.test:rules:1.5.0' @@ -235,8 +235,8 @@ dependencies { testImplementation 'org.skyscreamer:jsonassert:1.5.1' testImplementation 'com.github.niknetniko:easy-random:master-SNAPSHOT' testImplementation 'org.apache.commons:commons-lang3:3.14.0' - testImplementation 'commons-validator:commons-validator:1.8.0' - testImplementation 'com.google.guava:guava:33.1.0-jre' + testImplementation 'commons-validator:commons-validator:1.9.0' + testImplementation 'com.google.guava:guava:33.2.1-jre' } diff --git a/app/src/test/java/be/ugent/zeus/hydra/association/EventDetailsActivityTest.java b/app/src/test/java/be/ugent/zeus/hydra/association/EventDetailsActivityTest.java index d6262922d..85a9b87f8 100644 --- a/app/src/test/java/be/ugent/zeus/hydra/association/EventDetailsActivityTest.java +++ b/app/src/test/java/be/ugent/zeus/hydra/association/EventDetailsActivityTest.java @@ -29,7 +29,6 @@ import be.ugent.zeus.hydra.common.network.InstanceProvider; import be.ugent.zeus.hydra.testing.NoNetworkInterceptor; -import be.ugent.zeus.hydra.testing.RobolectricUtils; import be.ugent.zeus.hydra.testing.Utils; import okhttp3.OkHttpClient; import org.junit.Before; @@ -37,6 +36,7 @@ import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; +import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; import static org.junit.Assert.assertEquals; /** @@ -57,8 +57,10 @@ public void setUp() { public void shouldReturnCorrectIntent_whenStartIsCalled() { Event e = Utils.generate(Event.class); Association a = Utils.generate(Association.class); - Intent actual = EventDetailsActivity.start(RobolectricUtils.getActivityContext(), e, a); - Intent expected = new Intent(RobolectricUtils.getActivityContext(), EventDetailsActivity.class); + + var aContext = getInstrumentation().getTargetContext(); + var actual = EventDetailsActivity.start(aContext, e, a); + var expected = new Intent(aContext, EventDetailsActivity.class); assertEquals(expected.getComponent(), actual.getComponent()); assertEquals(e, IntentCompat.getParcelableExtra(actual, EventDetailsActivity.PARCEL_EVENT, Event.class)); diff --git a/app/src/test/java/be/ugent/zeus/hydra/testing/RobolectricUtils.java b/app/src/test/java/be/ugent/zeus/hydra/testing/RobolectricUtils.java index 6b9f836a7..0d9816026 100644 --- a/app/src/test/java/be/ugent/zeus/hydra/testing/RobolectricUtils.java +++ b/app/src/test/java/be/ugent/zeus/hydra/testing/RobolectricUtils.java @@ -81,7 +81,7 @@ public static void assertNotEmpty(TextView textView) { assertNotEquals("", textView.getText()); } - @SuppressWarnings("deprecation") + @Deprecated public static Context getActivityContext() { return Robolectric.setupActivity(BlankActivity.class); } diff --git a/build.gradle b/build.gradle index d38422b5b..beda96491 100644 --- a/build.gradle +++ b/build.gradle @@ -28,8 +28,8 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:8.2.2' - classpath 'com.google.gms:google-services:4.4.1' - classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9' + classpath 'com.google.gms:google-services:4.4.2' + classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.1' } } diff --git a/flake.lock b/flake.lock index 4b8943aec..dbae29efd 100644 --- a/flake.lock +++ b/flake.lock @@ -2,17 +2,17 @@ "nodes": { "devshell": { "inputs": { + "flake-utils": "flake-utils", "nixpkgs": [ "nixpkgs" - ], - "systems": "systems" + ] }, "locked": { - "lastModified": 1701787589, - "narHash": "sha256-ce+oQR4Zq9VOsLoh9bZT8Ip9PaMLcjjBUHVPzW5d7Cw=", + "lastModified": 1717408969, + "narHash": "sha256-Q0OEFqe35fZbbRPPRdrjTUUChKVhhWXz3T9ZSKmaoVY=", "owner": "numtide", "repo": "devshell", - "rev": "44ddedcbcfc2d52a76b64fb6122f209881bd3e1e", + "rev": "1ebbe68d57457c8cae98145410b164b5477761f4", "type": "github" }, "original": { @@ -23,7 +23,7 @@ }, "flake-utils": { "inputs": { - "systems": "systems_2" + "systems": "systems" }, "locked": { "lastModified": 1701680307, @@ -39,13 +39,31 @@ "type": "github" } }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1702151865, - "narHash": "sha256-9VAt19t6yQa7pHZLDbil/QctAgVsA66DLnzdRGqDisg=", + "lastModified": 1718530797, + "narHash": "sha256-pup6cYwtgvzDpvpSCFh1TEUjw2zkNpk8iolbKnyFmmU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "666fc80e7b2afb570462423cb0e1cf1a3a34fedd", + "rev": "b60ebf54c15553b393d144357375ea956f89e9a9", "type": "github" }, "original": { @@ -58,7 +76,7 @@ "root": { "inputs": { "devshell": "devshell", - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "nixpkgs": "nixpkgs" } }, diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index ccebba771..7f93135c4 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 309b4e18d..6f7a6eb33 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 79a61d421..1aa94a426 100755 --- a/gradlew +++ b/gradlew @@ -83,10 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,10 +131,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -197,11 +198,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \