From 86a7c1bf9561f9e6b556add500e7e5bda9506693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20C=C3=A0llisto?= Date: Tue, 8 Apr 2025 08:33:30 +0200 Subject: [PATCH 01/10] Adding test command to CI --- .github/workflows/build_ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build_ci.yml b/.github/workflows/build_ci.yml index fd038a7..5672b06 100644 --- a/.github/workflows/build_ci.yml +++ b/.github/workflows/build_ci.yml @@ -30,6 +30,9 @@ jobs: - name: Build with Gradle run: ./gradlew build --no-daemon + - name: Test + run: ./gradlew test + # # Step commented out, but working if needed # - name: Upload APK # uses: actions/upload-artifact@v4 From 2e0daba3d740a3fa3d4d10236c208b2bb45785a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20C=C3=A0llisto?= Date: Tue, 8 Apr 2025 08:49:32 +0200 Subject: [PATCH 02/10] Restricting to app --- .github/workflows/build_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_ci.yml b/.github/workflows/build_ci.yml index 5672b06..69dd4e1 100644 --- a/.github/workflows/build_ci.yml +++ b/.github/workflows/build_ci.yml @@ -31,7 +31,7 @@ jobs: run: ./gradlew build --no-daemon - name: Test - run: ./gradlew test + run: ./gradlew app:test # # Step commented out, but working if needed # - name: Upload APK From 3b3a8d72974863451197f71dbc6b6c59b42d5dbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20C=C3=A0llisto?= Date: Tue, 8 Apr 2025 08:55:40 +0200 Subject: [PATCH 03/10] Trying failing test --- .../java/com/example/scala_3_android_java/ExampleUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/test/java/com/example/scala_3_android_java/ExampleUnitTest.java b/app/src/test/java/com/example/scala_3_android_java/ExampleUnitTest.java index 4a38b77..78bedbd 100644 --- a/app/src/test/java/com/example/scala_3_android_java/ExampleUnitTest.java +++ b/app/src/test/java/com/example/scala_3_android_java/ExampleUnitTest.java @@ -16,7 +16,7 @@ public class ExampleUnitTest { @Test public void addition_isCorrect() { - assertEquals(4, 2 + 2); + assertEquals(5, 2 + 2); } @Test From 2f8005d1b085335fcb666d51e229f0ffe1e996e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20C=C3=A0llisto?= Date: Tue, 8 Apr 2025 09:02:15 +0200 Subject: [PATCH 04/10] Trying Scala failing test --- .../scala_3_android_java/ExampleUnitTest.java | 2 +- .../scala_3_android_java/PippoUnitTest.scala | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 app/src/test/scala/com/example/scala_3_android_java/PippoUnitTest.scala diff --git a/app/src/test/java/com/example/scala_3_android_java/ExampleUnitTest.java b/app/src/test/java/com/example/scala_3_android_java/ExampleUnitTest.java index 78bedbd..4a38b77 100644 --- a/app/src/test/java/com/example/scala_3_android_java/ExampleUnitTest.java +++ b/app/src/test/java/com/example/scala_3_android_java/ExampleUnitTest.java @@ -16,7 +16,7 @@ public class ExampleUnitTest { @Test public void addition_isCorrect() { - assertEquals(5, 2 + 2); + assertEquals(4, 2 + 2); } @Test diff --git a/app/src/test/scala/com/example/scala_3_android_java/PippoUnitTest.scala b/app/src/test/scala/com/example/scala_3_android_java/PippoUnitTest.scala new file mode 100644 index 0000000..7b0e725 --- /dev/null +++ b/app/src/test/scala/com/example/scala_3_android_java/PippoUnitTest.scala @@ -0,0 +1,17 @@ +package com.example.scala_3_android_java + +import org.junit.Test +import org.junit.Assert._ + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class PippoUnitTest { + @Test + def addition_isCorrect(): Unit = { + assertEquals(5, 2 + 2) + } +} + From 12f107232b68bb7c84b0c1652f5fdf9e90bf8f45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20C=C3=A0llisto?= Date: Tue, 8 Apr 2025 10:51:25 +0200 Subject: [PATCH 05/10] Trying Scala scalatest failing test --- app/build.gradle | 5 +++++ .../com/example/scala_3_android_java/PlutoSpec.scala | 11 +++++++++++ 2 files changed, 16 insertions(+) create mode 100644 app/src/test/scala/com/example/scala_3_android_java/PlutoSpec.scala diff --git a/app/build.gradle b/app/build.gradle index 1aa70a5..4da7625 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -51,7 +51,12 @@ dependencies { implementation libs.constraintlayout implementation libs.lifecycle.livedata.ktx implementation libs.lifecycle.viewmodel.ktx + testImplementation 'org.scalatest:scalatest_3:3.2.19' + testImplementation 'junit:junit:4.13.1' testImplementation libs.junit androidTestImplementation libs.ext.junit androidTestImplementation libs.espresso.core +// testImplementation "org.jetbrains.kotlin:kotlin-stdlib:2.1.0" // or latest version +// testImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0" // or latest version +// testImplementation "org.jetbrains.kotlin:kotlin-reflect:2.1.0" } \ No newline at end of file diff --git a/app/src/test/scala/com/example/scala_3_android_java/PlutoSpec.scala b/app/src/test/scala/com/example/scala_3_android_java/PlutoSpec.scala new file mode 100644 index 0000000..577123f --- /dev/null +++ b/app/src/test/scala/com/example/scala_3_android_java/PlutoSpec.scala @@ -0,0 +1,11 @@ +package com.example.scala_3_android_java + +import org.scalatest.flatspec.AnyFlatSpec +import org.scalatest.matchers.should + +class PlutuSpec extends AnyFlatSpec with should.Matchers { + + "Inputs" can "be cleaned of undone commands" in { + (2 + 2) shouldEqual + 5 + } \ No newline at end of file From bc6b048abd3643b4c17720618c4d51865cecf81c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20C=C3=A0llisto?= Date: Tue, 8 Apr 2025 11:42:03 +0200 Subject: [PATCH 06/10] Checking if ScalaUnitTest compiles --- app/build.gradle | 5 ----- .../com/example/scala_3_android_java/PlutoSpec.scala | 11 ----------- .../{PippoUnitTest.scala => ScalaUnitTest.scala} | 6 +++--- 3 files changed, 3 insertions(+), 19 deletions(-) delete mode 100644 app/src/test/scala/com/example/scala_3_android_java/PlutoSpec.scala rename app/src/test/scala/com/example/scala_3_android_java/{PippoUnitTest.scala => ScalaUnitTest.scala} (88%) diff --git a/app/build.gradle b/app/build.gradle index 4da7625..1aa70a5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -51,12 +51,7 @@ dependencies { implementation libs.constraintlayout implementation libs.lifecycle.livedata.ktx implementation libs.lifecycle.viewmodel.ktx - testImplementation 'org.scalatest:scalatest_3:3.2.19' - testImplementation 'junit:junit:4.13.1' testImplementation libs.junit androidTestImplementation libs.ext.junit androidTestImplementation libs.espresso.core -// testImplementation "org.jetbrains.kotlin:kotlin-stdlib:2.1.0" // or latest version -// testImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0" // or latest version -// testImplementation "org.jetbrains.kotlin:kotlin-reflect:2.1.0" } \ No newline at end of file diff --git a/app/src/test/scala/com/example/scala_3_android_java/PlutoSpec.scala b/app/src/test/scala/com/example/scala_3_android_java/PlutoSpec.scala deleted file mode 100644 index 577123f..0000000 --- a/app/src/test/scala/com/example/scala_3_android_java/PlutoSpec.scala +++ /dev/null @@ -1,11 +0,0 @@ -package com.example.scala_3_android_java - -import org.scalatest.flatspec.AnyFlatSpec -import org.scalatest.matchers.should - -class PlutuSpec extends AnyFlatSpec with should.Matchers { - - "Inputs" can "be cleaned of undone commands" in { - (2 + 2) shouldEqual - 5 - } \ No newline at end of file diff --git a/app/src/test/scala/com/example/scala_3_android_java/PippoUnitTest.scala b/app/src/test/scala/com/example/scala_3_android_java/ScalaUnitTest.scala similarity index 88% rename from app/src/test/scala/com/example/scala_3_android_java/PippoUnitTest.scala rename to app/src/test/scala/com/example/scala_3_android_java/ScalaUnitTest.scala index 7b0e725..a035394 100644 --- a/app/src/test/scala/com/example/scala_3_android_java/PippoUnitTest.scala +++ b/app/src/test/scala/com/example/scala_3_android_java/ScalaUnitTest.scala @@ -8,10 +8,10 @@ import org.junit.Assert._ * * See [testing documentation](http://d.android.com/tools/testing). */ -class PippoUnitTest { +class ScalaUnitTest { + val x: Pippo = 2 @Test def addition_isCorrect(): Unit = { assertEquals(5, 2 + 2) } -} - +} \ No newline at end of file From 93635bfbc4c29fb5b20b5faffc7d1a2f3d5ef924 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20C=C3=A0llisto?= Date: Tue, 8 Apr 2025 11:48:21 +0200 Subject: [PATCH 07/10] Simplified, it already tests when building --- .github/workflows/build_ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/build_ci.yml b/.github/workflows/build_ci.yml index 69dd4e1..fd038a7 100644 --- a/.github/workflows/build_ci.yml +++ b/.github/workflows/build_ci.yml @@ -30,9 +30,6 @@ jobs: - name: Build with Gradle run: ./gradlew build --no-daemon - - name: Test - run: ./gradlew app:test - # # Step commented out, but working if needed # - name: Upload APK # uses: actions/upload-artifact@v4 From b93faa426bf1dbedd3d697332b7ae1cc290d288b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20C=C3=A0llisto?= Date: Tue, 8 Apr 2025 11:53:31 +0200 Subject: [PATCH 08/10] Better error --- .../scala/com/example/scala_3_android_java/ScalaUnitTest.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/test/scala/com/example/scala_3_android_java/ScalaUnitTest.scala b/app/src/test/scala/com/example/scala_3_android_java/ScalaUnitTest.scala index a035394..6fb28a2 100644 --- a/app/src/test/scala/com/example/scala_3_android_java/ScalaUnitTest.scala +++ b/app/src/test/scala/com/example/scala_3_android_java/ScalaUnitTest.scala @@ -9,7 +9,7 @@ import org.junit.Assert._ * See [testing documentation](http://d.android.com/tools/testing). */ class ScalaUnitTest { - val x: Pippo = 2 + whatever // this cannot be compiled @Test def addition_isCorrect(): Unit = { assertEquals(5, 2 + 2) From e00f6c718eb658f67140dac2d3d2385c74a61388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20C=C3=A0llisto?= Date: Sun, 13 Apr 2025 12:47:08 +0200 Subject: [PATCH 09/10] Updated scalaAndroidPlugin version and Gradle 8.13 --- .../scala_3_android_java/ExampleUnitTest.java | 31 ------------------- .../scala_3_android_java/ScalaUnitTest.scala | 18 +++++++++-- gradle/libs.versions.toml | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 17 insertions(+), 36 deletions(-) delete mode 100644 app/src/test/java/com/example/scala_3_android_java/ExampleUnitTest.java diff --git a/app/src/test/java/com/example/scala_3_android_java/ExampleUnitTest.java b/app/src/test/java/com/example/scala_3_android_java/ExampleUnitTest.java deleted file mode 100644 index 4a38b77..0000000 --- a/app/src/test/java/com/example/scala_3_android_java/ExampleUnitTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.example.scala_3_android_java; - -import org.junit.Test; - -import static org.junit.Assert.*; - -import com.example.core.Foo; - -import scala.jdk.javaapi.OptionConverters; - -/** - * Example local unit test, which will execute on the development machine (host). - * - * @see Testing documentation - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() { - assertEquals(4, 2 + 2); - } - - @Test - public void integer_fromScalaCore() { - assertEquals(42, Foo.bar()); - } - - @Test - public void converted_option_fromScalaCore() { - assertEquals(42, OptionConverters.toJava(Foo.option()).get()); - } -} \ No newline at end of file diff --git a/app/src/test/scala/com/example/scala_3_android_java/ScalaUnitTest.scala b/app/src/test/scala/com/example/scala_3_android_java/ScalaUnitTest.scala index 6fb28a2..f102855 100644 --- a/app/src/test/scala/com/example/scala_3_android_java/ScalaUnitTest.scala +++ b/app/src/test/scala/com/example/scala_3_android_java/ScalaUnitTest.scala @@ -1,7 +1,10 @@ package com.example.scala_3_android_java +import com.example.core.Foo import org.junit.Test -import org.junit.Assert._ +import org.junit.Assert.* + +import scala.jdk.javaapi.OptionConverters /** * Example local unit test, which will execute on the development machine (host). @@ -9,9 +12,18 @@ import org.junit.Assert._ * See [testing documentation](http://d.android.com/tools/testing). */ class ScalaUnitTest { - whatever // this cannot be compiled + @Test def addition_isCorrect(): Unit = { - assertEquals(5, 2 + 2) + assertEquals(4, 2 + 2) + } + + @Test def integer_fromScalaCore(): Unit = { + assertEquals(42, Foo.bar) } + + @Test def converted_option_fromScalaCore(): Unit = { + assertEquals(42, OptionConverters.toJava(Foo.option).get) + } + } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5fea18d..a2f8ad3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,7 +8,7 @@ material = "1.12.0" constraintlayout = "2.2.1" lifecycleLivedataKtx = "2.8.7" lifecycleViewmodelKtx = "2.8.7" -scalaAndroidPlugin = "24.1019.1546" +scalaAndroidPlugin = "25.0412.2039" scala3Library_x = "3.7.0-RC2" [libraries] diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 39b6272..3d4ea3a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Sun Mar 09 20:26:37 CET 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 26deff9dfb0d5c3e4018b36b7a8d924a05572d8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20C=C3=A0llisto?= Date: Sun, 13 Apr 2025 13:09:13 +0200 Subject: [PATCH 10/10] Improved README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b636cea..3d9fa1c 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ This is the Scala project you get if: ## Notes -### Why Scala 3.7.0-RC2? +### Why Scala 3.7.0? Because is the first Scala version shipping https://github.com/scala/scala3/pull/22632. The emitted Scala code is more compatible with Android ART.