diff --git a/sbt-app/src/sbt-test/tests/nested-testquick/build.sbt b/sbt-app/src/sbt-test/tests/nested-testquick/build.sbt new file mode 100644 index 000000000..ccae08441 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/nested-testquick/build.sbt @@ -0,0 +1,11 @@ +Global / cacheStores := Seq.empty + +ThisBuild / scalaVersion := "2.12.21" + +lazy val root = (project in file(".")) + .settings( + crossPaths := false, + autoScalaLibrary := false, + libraryDependencies += "com.github.sbt" % "junit-interface" % "0.13.2" % Test, + Test / parallelExecution := false, + ) diff --git a/sbt-app/src/sbt-test/tests/nested-testquick/changed/BadCalcTest.java b/sbt-app/src/sbt-test/tests/nested-testquick/changed/BadCalcTest.java new file mode 100644 index 000000000..f63883526 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/nested-testquick/changed/BadCalcTest.java @@ -0,0 +1,18 @@ +package com.example; + +import static org.junit.Assert.*; +import org.junit.Test; + +public class BadCalcTest { + @Test + public void testBadAdd() { + assertEquals(99, Calc.add(1, 2)); + } + + public static class Nested { + @Test + public void testBadAddNegative() { + assertEquals(99, Calc.add(1, -2)); + } + } +} diff --git a/sbt-app/src/sbt-test/tests/nested-testquick/changed/Calc.java b/sbt-app/src/sbt-test/tests/nested-testquick/changed/Calc.java new file mode 100644 index 000000000..00490bc9f --- /dev/null +++ b/sbt-app/src/sbt-test/tests/nested-testquick/changed/Calc.java @@ -0,0 +1,7 @@ +package com.example; + +public class Calc { + public static int add(int a, int b) { + return a * b; + } +} diff --git a/sbt-app/src/sbt-test/tests/nested-testquick/src/main/java/com/example/Calc.java b/sbt-app/src/sbt-test/tests/nested-testquick/src/main/java/com/example/Calc.java new file mode 100644 index 000000000..626f094c8 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/nested-testquick/src/main/java/com/example/Calc.java @@ -0,0 +1,7 @@ +package com.example; + +public class Calc { + public static int add(int a, int b) { + return a + b; + } +} diff --git a/sbt-app/src/sbt-test/tests/nested-testquick/src/test/java/com/example/CalcTest.java b/sbt-app/src/sbt-test/tests/nested-testquick/src/test/java/com/example/CalcTest.java new file mode 100644 index 000000000..f53194d17 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/nested-testquick/src/test/java/com/example/CalcTest.java @@ -0,0 +1,19 @@ +package com.example; + +import static org.junit.Assert.*; +import org.junit.Test; + +public class CalcTest { + @Test + public void testAdd() { + assertEquals(3, Calc.add(1, 2)); + } + + public static class Nested { + @Test + public void testAddNegative() { + assertEquals(-1, Calc.add(1, -2)); + } + } + +} diff --git a/sbt-app/src/sbt-test/tests/nested-testquick/src/test/java/com/example/GoodCalcTest.java b/sbt-app/src/sbt-test/tests/nested-testquick/src/test/java/com/example/GoodCalcTest.java new file mode 100644 index 000000000..8bb11dd01 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/nested-testquick/src/test/java/com/example/GoodCalcTest.java @@ -0,0 +1,18 @@ +package com.example; + +import static org.junit.Assert.*; +import org.junit.Test; + +public class GoodCalcTest { + @Test + public void testAddPositive() { + assertEquals(3, Calc.add(1, 2)); + } + + public static class Nested { + @Test + public void testAddZero() { + assertEquals(0, Calc.add(0, 0)); + } + } +} diff --git a/sbt-app/src/sbt-test/tests/nested-testquick/test b/sbt-app/src/sbt-test/tests/nested-testquick/test new file mode 100644 index 000000000..18074bbc3 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/nested-testquick/test @@ -0,0 +1,24 @@ +# Verify that testQuick works with nested test classes. +# Nested test classes use $ encoding (e.g. CalcTest$Nested) +# and we need to verify that testQuick properly tracks them. + +# Run all tests -- should pass. +> testOnly com.example.CalcTest com.example.GoodCalcTest + +# testQuick should be a no-op since all tests passed. +> testQuick + +# Verify testOnly picks up a good test. +> testOnly com.example.GoodCalcTest + +# Copy in BadCalcTest and verify it fails. +$ copy-file changed/BadCalcTest.java src/test/java/com/example/BadCalcTest.java +> compile +-> testOnly com.example.BadCalcTest + +# Introduce a bug in Calc.java (add -> multiply). +$ copy-file changed/Calc.java src/main/java/com/example/Calc.java +> compile + +# testQuick should re-run and fail because the source changed. +-> testQuick