From a5f915bf87b862940f326d4c15b3b5cec60d3453 Mon Sep 17 00:00:00 2001 From: Dream <42954461+eureka928@users.noreply.github.com> Date: Mon, 19 Jan 2026 17:13:21 -0500 Subject: [PATCH] [2.x] test: Migrate ClassLoaderCacheTest to verify.BasicTestSuite (#8534) --- .../sbt/internal/ClassLoaderCacheTest.scala | 74 +++++++++---------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/main-command/src/test/scala/sbt/internal/ClassLoaderCacheTest.scala b/main-command/src/test/scala/sbt/internal/ClassLoaderCacheTest.scala index 9aa93a09d..f2d0515a7 100644 --- a/main-command/src/test/scala/sbt/internal/ClassLoaderCacheTest.scala +++ b/main-command/src/test/scala/sbt/internal/ClassLoaderCacheTest.scala @@ -11,47 +11,45 @@ package sbt.internal import java.io.File import java.nio.file.Files -import org.scalatest.flatspec.AnyFlatSpec -import org.scalatest.matchers.should.Matchers import sbt.internal.classpath.ClassLoaderCache import sbt.io.IO +import verify.BasicTestSuite -object ClassLoaderCacheTest { - extension (c: ClassLoaderCache) { - def get(classpath: Seq[File]): ClassLoader = c(classpath.toList) - } -} -class ClassLoaderCacheTest extends AnyFlatSpec with Matchers { - import ClassLoaderCacheTest.* - private def withCache[R](f: ClassLoaderCache => R): R = { +object ClassLoaderCacheTest extends BasicTestSuite: + + extension (c: ClassLoaderCache) def get(classpath: Seq[File]): ClassLoader = c(classpath.toList) + + private def withCache[R](f: ClassLoaderCache => R): R = val cache = new ClassLoaderCache(ClassLoader.getSystemClassLoader) try f(cache) finally cache.close() - } - "ClassLoaderCache" should "make a new loader when full" in withCache { cache => - val classPath = Seq.empty[File] - val firstLoader = cache.get(classPath) - cache.clear() - val secondLoader = cache.get(classPath) - assert(firstLoader != secondLoader) - } - it should "not make a new loader when it already exists" in withCache { cache => - val classPath = Seq.empty[File] - val firstLoader = cache.get(classPath) - val secondLoader = cache.get(classPath) - assert(firstLoader == secondLoader) - } - "Snapshots" should "be invalidated" in IO.withTemporaryDirectory { dir => - val snapshotJar = Files.createFile(dir.toPath.resolve("foo-SNAPSHOT.jar")).toFile - val regularJar = Files.createFile(dir.toPath.resolve("regular.jar")).toFile - withCache { cache => - val jarClassPath = snapshotJar :: regularJar :: Nil - val initLoader = cache.get(jarClassPath) - IO.setModifiedTimeOrFalse(snapshotJar, System.currentTimeMillis + 5000L) - val secondLoader = cache.get(jarClassPath) - assert(initLoader != secondLoader) - assert(cache.get(jarClassPath) == secondLoader) - assert(cache.get(jarClassPath) != initLoader) - } - } -} + + test("ClassLoaderCache should make a new loader when cleared"): + withCache: cache => + val classPath = Seq.empty[File] + val firstLoader = cache.get(classPath) + cache.clear() + val secondLoader = cache.get(classPath) + assert(firstLoader != secondLoader) + + test("ClassLoaderCache should reuse loader for same classpath"): + withCache: cache => + val classPath = Seq.empty[File] + val firstLoader = cache.get(classPath) + val secondLoader = cache.get(classPath) + assert(firstLoader == secondLoader) + + test("Snapshots should be invalidated when modified"): + IO.withTemporaryDirectory: dir => + val snapshotJar = Files.createFile(dir.toPath.resolve("foo-SNAPSHOT.jar")).toFile + val regularJar = Files.createFile(dir.toPath.resolve("regular.jar")).toFile + withCache: cache => + val jarClassPath = snapshotJar :: regularJar :: Nil + val initLoader = cache.get(jarClassPath) + IO.setModifiedTimeOrFalse(snapshotJar, System.currentTimeMillis + 5000L) + val secondLoader = cache.get(jarClassPath) + Predef.assert(initLoader != secondLoader) + Predef.assert(cache.get(jarClassPath) == secondLoader) + Predef.assert(cache.get(jarClassPath) != initLoader) + +end ClassLoaderCacheTest