Repository: scala-steward-org/scala-steward
Pull request #2745 (2022-10-20 05:12:27)

Update logback-classic only on 1.3.x series that supports JDK 8
Supersedes #2719 

[logback-classic no longer supports JDK 8 starting from 1.4.0](https://logback.qos.ch/dependencies.html).
![image](https://user-images.githubusercontent.com/127635/196861865-73f3b8a2-2bc5-4fd3-a512-8b65623d27dc.png)


Let's pin it to 1.3.x series until we drop JDK 8 support.


Patch:
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 30c462e5..8405b506 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -23,7 +23,7 @@ jobs:
     strategy:
       matrix:
         os: [ubuntu-latest]
-        scala: [2.12.17, 2.13.10]
+        scala: [2.12.17, 2.13.8]
         java: [adopt-hotspot@8, adopt-hotspot@11]
     runs-on: ${{ matrix.os }}
     steps:
@@ -128,12 +128,12 @@ jobs:
           tar xf targets.tar
           rm targets.tar
 
-      - name: Download target directories (2.13.10)
+      - name: Download target directories (2.13.8)
         uses: actions/download-artifact@v2
         with:
-          name: target-${{ matrix.os }}-2.13.10-${{ matrix.java }}
+          name: target-${{ matrix.os }}-2.13.8-${{ matrix.java }}
 
-      - name: Inflate target directories (2.13.10)
+      - name: Inflate target directories (2.13.8)
         run: |
           tar xf targets.tar
           rm targets.tar
diff --git a/.mergify.yml b/.mergify.yml
index 41bf9e92..de81d406 100644
--- a/.mergify.yml
+++ b/.mergify.yml
@@ -12,8 +12,8 @@ pull_request_rules:
       - author=scala-steward
       - status-success=Build and Test (ubuntu-latest, 2.12.17, adopt-hotspot@8)
       - status-success=Build and Test (ubuntu-latest, 2.12.17, adopt-hotspot@11)
-      - status-success=Build and Test (ubuntu-latest, 2.13.10, adopt-hotspot@8)
-      - status-success=Build and Test (ubuntu-latest, 2.13.10, adopt-hotspot@11)
+      - status-success=Build and Test (ubuntu-latest, 2.13.8, adopt-hotspot@8)
+      - status-success=Build and Test (ubuntu-latest, 2.13.8, adopt-hotspot@11)
     actions:
       merge:
         method: squash
diff --git a/.scala-steward.conf b/.scala-steward.conf
index f615e727..7907b9c0 100644
--- a/.scala-steward.conf
+++ b/.scala-steward.conf
@@ -1,2 +1,6 @@
 updatePullRequests = "always"
 
+updates.pin = [
+  # We may drop this when we drop JDK 8 since minimum JDK is 11 from logback-classic 1.4.0
+  { groupId = "ch.qos.logback", artifactId="logback-classic", version="1.3." }
+]
diff --git a/build.sbt b/build.sbt
index 8d388c0a..9cb49758 100644
--- a/build.sbt
+++ b/build.sbt
@@ -21,7 +21,7 @@ val moduleCrossPlatformMatrix: Map[String, List[Platform]] = Map(
 )
 
 val Scala212 = "2.12.17"
-val Scala213 = "2.13.10"
+val Scala213 = "2.13.8"
 
 /// sbt-github-actions configuration
 
diff --git a/docs/help.md b/docs/help.md
index 61b2d17a..d9e264d2 100644
--- a/docs/help.md
+++ b/docs/help.md
@@ -3,9 +3,7 @@
 All command line arguments for the `scala-steward` application.
 
 ```
-Usage:
-    scala-steward validate-repo-config
-    scala-steward --workspace <file> --repos-file <file> [--git-author-name <string>] --git-author-email <string> [--git-author-signing-key <string>] --git-ask-pass <file> [--sign-commits] [--vcs-type <vcs-type>] [--vcs-api-host <uri>] --vcs-login <string> [--do-not-fork] [--add-labels] [--ignore-opts-files] [--env-var <name=value>]... [--process-timeout <duration>] [--whitelist <string>]... [--read-only <string>]... [--enable-sandbox | --disable-sandbox] [--max-buffer-size <integer>] [--repo-config <uri>]... [--disable-default-repo-config] [--scalafix-migrations <uri>]... [--disable-default-scalafix-migrations] [--artifact-migrations <uri>]... [--disable-default-artifact-migrations] [--cache-ttl <duration>] [--bitbucket-server-use-default-reviewers] [--gitlab-merge-when-pipeline-succeeds] [--github-app-id <integer> --github-app-key-file <file>] [--url-checker-test-url <uri>] [--default-maven-repo <string>] [--refresh-backoff-period <duration>]
+Usage: scala-steward --workspace <file> --repos-file <file> [--git-author-name <string>] --git-author-email <string> [--git-author-signing-key <string>] --git-ask-pass <file> [--sign-commits] [--vcs-type <vcs-type>] [--vcs-api-host <uri>] --vcs-login <string> [--do-not-fork] [--add-labels] [--ignore-opts-files] [--env-var <name=value>]... [--process-timeout <duration>] [--whitelist <string>]... [--read-only <string>]... [--enable-sandbox | --disable-sandbox] [--max-buffer-size <integer>] [--repo-config <uri>]... [--disable-default-repo-config] [--scalafix-migrations <uri>]... [--disable-default-scalafix-migrations] [--artifact-migrations <uri>]... [--disable-default-artifact-migrations] [--cache-ttl <duration>] [--bitbucket-server-use-default-reviewers] [--gitlab-merge-when-pipeline-succeeds] [--github-app-id <integer> --github-app-key-file <file>] [--url-checker-test-url <uri>] [--default-maven-repo <string>] [--refresh-backoff-period <duration>]
 
 
 
@@ -80,8 +78,4 @@ Options and flags:
         default: https://repo1.maven.org/maven2/
     --refresh-backoff-period <duration>
         Period of time a failed build won't be triggered again; default: 0days
-
-Subcommands:
-    validate-repo-config
-        Validate the repo config file and exit; report errors if any
 ```
diff --git a/modules/core/src/main/scala/org/scalasteward/core/Main.scala b/modules/core/src/main/scala/org/scalasteward/core/Main.scala
index 7b7dc459..4ce060f0 100644
--- a/modules/core/src/main/scala/org/scalasteward/core/Main.scala
+++ b/modules/core/src/main/scala/org/scalasteward/core/Main.scala
@@ -23,7 +23,7 @@ import org.scalasteward.core.application.{Cli, Context}
 object Main extends IOApp {
   override def run(args: List[String]): IO[ExitCode] =
     Cli.parseArgs(args) match {
-      case Cli.ParseResult.Success(config) => Context.step0[IO](config).use(_.runF)
+      case Cli.ParseResult.Success(config) => Context.step0[IO](config).use(_.stewardAlg.runF)
       case Cli.ParseResult.Help(help)      => Console[IO].println(help).as(ExitCode.Success)
       case Cli.ParseResult.Error(error)    => Console[IO].errorln(error).as(ExitCode.Error)
     }
diff --git a/modules/core/src/main/scala/org/scalasteward/core/application/Cli.scala b/modules/core/src/main/scala/org/scalasteward/core/application/Cli.scala
index 2de0014d..fab87294 100644
--- a/modules/core/src/main/scala/org/scalasteward/core/application/Cli.scala
+++ b/modules/core/src/main/scala/org/scalasteward/core/application/Cli.scala
@@ -257,15 +257,6 @@ object Cli {
       .withDefault(default)
   }
 
-  private val configFile: Opts[File] =
-    Opts.argument[File]()
-
-  private val validateConfigFile: Opts[File] =
-    Opts.subcommand(
-      name = "validate-repo-config",
-      help = "Validate the repo config file and exit; report errors if any"
-    )(configFile)
-
   private val configOpts: Opts[Config] = (
     workspace,
     reposFile,
@@ -285,19 +276,12 @@ object Cli {
     refreshBackoffPeriod
   ).mapN(Config.apply)
 
-  val command: Command[StewardUsage] =
-    Command("scala-steward", "")(
-      validateConfigFile
-        .map(StewardUsage.ValidateRepoConfig(_))
-        .orElse(
-          configOpts
-            .map(StewardUsage.Regular(_))
-        )
-    )
+  val command: Command[Config] =
+    Command("scala-steward", "")(configOpts)
 
   sealed trait ParseResult extends Product with Serializable
   object ParseResult {
-    final case class Success(config: StewardUsage) extends ParseResult
+    final case class Success(config: Config) extends ParseResult
     final case class Help(help: String) extends ParseResult
     final case class Error(error: String) extends ParseResult
   }
diff --git a/modules/core/src/main/scala/org/scalasteward/core/application/Config.scala b/modules/core/src/main/scala/org/scalasteward/core/application/Config.scala
index 02ae09e7..5ab62a0c 100644
--- a/modules/core/src/main/scala/org/scalasteward/core/application/Config.scala
+++ b/modules/core/src/main/scala/org/scalasteward/core/application/Config.scala
@@ -135,10 +135,4 @@ object Config {
   final case class GitLabCfg(
       mergeWhenPipelineSucceeds: Boolean
   )
-
-  sealed trait StewardUsage
-  object StewardUsage {
-    final case class Regular(config: Config) extends StewardUsage
-    final case class ValidateRepoConfig(file: File) extends StewardUsage
-  }
 }
diff --git a/modules/core/src/main/scala/org/scalasteward/core/application/Context.scala b/modules/core/src/main/scala/org/scalasteward/core/application/Context.scala
index ca1fe68d..81994008 100644
--- a/modules/core/src/main/scala/org/scalasteward/core/application/Context.scala
+++ b/modules/core/src/main/scala/org/scalasteward/core/application/Context.scala
@@ -16,10 +16,8 @@
 
 package org.scalasteward.core.application
 
-import better.files.File
 import cats.effect._
 import cats.effect.implicits._
-import cats.MonadThrow
 import cats.syntax.all._
 import eu.timepit.refined.auto._
 import org.http4s.Uri
@@ -50,8 +48,6 @@ import org.scalasteward.core.vcs.github.{GitHubAppApiAlg, GitHubAuthAlg}
 import org.scalasteward.core.vcs.{VCSApiAlg, VCSExtraAlg, VCSRepoAlg, VCSSelection}
 import org.typelevel.log4cats.Logger
 import org.typelevel.log4cats.slf4j.Slf4jLogger
-import org.scalasteward.core.application.Config.StewardUsage
-import org.scalasteward.core.repoconfig.ValidateRepoConfigAlg
 
 final class Context[F[_]](implicit
     val buildToolDispatcher: BuildToolDispatcher[F],
@@ -81,29 +77,10 @@ final class Context[F[_]](implicit
 )
 
 object Context {
-
-  sealed trait StewardContext[F[_]] {
-    def runF: F[ExitCode]
-  }
-  object StewardContext {
-    final case class Regular[F[_]](context: Context[F]) extends StewardContext[F] {
-      override def runF: F[ExitCode] = context.stewardAlg.runF
-    }
-
-    final case class ValidateRepoConfig[F[_]](file: File)(implicit
-        val validateRepoConfigAlg: ValidateRepoConfigAlg[F],
-        val logger: Logger[F]
-    ) extends StewardContext[F] {
-      override def runF: F[ExitCode] = validateRepoConfigAlg.validateAndReport(file)
-    }
-  }
-
-  def step0[F[_]](
-      usage: Config.StewardUsage
-  )(implicit F: Async[F]): Resource[F, StewardContext[F]] =
+  def step0[F[_]](config: Config)(implicit F: Async[F]): Resource[F, Context[F]] =
     for {
-      logger0 <- Resource.eval(Slf4jLogger.fromName[F]("org.scalasteward.core"))
-      _ <- Resource.eval(printBanner(logger0))
+      logger <- Resource.eval(Slf4jLogger.fromName[F]("org.scalasteward.core"))
+      _ <- Resource.eval(printBanner(logger))
       _ <- Resource.eval(F.delay(System.setProperty("http.agent", userAgentString)))
       userAgent <- Resource.eval(F.fromEither(`User-Agent`.parse(userAgentString)))
       middleware = ClientConfiguration
@@ -117,46 +94,22 @@ object Context {
         ClientConfiguration.disableFollowRedirect[F],
         middleware
       )
-      fileAlg0 = FileAlg.create(logger0, F)
-      context <- usage match {
-        case StewardUsage.Regular(config) =>
-          initRegular(config)(
-            defaultClient,
-            UrlCheckerClient(urlCheckerClient),
-            fileAlg0,
-            logger0,
-            F
-          ).map(StewardContext.Regular(_))
-
-        case StewardUsage.ValidateRepoConfig(file) =>
-          implicit val fileAlg: FileAlg[F] = fileAlg0
-          implicit val logger: Logger[F] = logger0
-          Resource.pure[F, StewardContext[F]](initValidateRepoConfig(file))
-      }
-
+      fileAlg = FileAlg.create(logger, F)
+      processAlg = ProcessAlg.create(config.processCfg)(logger, F)
+      workspaceAlg = WorkspaceAlg.create(config)(fileAlg, logger, F)
+      context <- Resource.eval(
+        step1(config)(
+          defaultClient,
+          UrlCheckerClient(urlCheckerClient),
+          fileAlg,
+          logger,
+          processAlg,
+          workspaceAlg,
+          F
+        )
+      )
     } yield context
 
-  def initRegular[F[_]](config: Config)(implicit
-      client: Client[F],
-      urlCheckerClient: UrlCheckerClient[F],
-      fileAlg: FileAlg[F],
-      logger: Logger[F],
-      F: Async[F]
-  ): Resource[F, Context[F]] = {
-    implicit val processAlg = ProcessAlg.create(config.processCfg)
-    implicit val workspaceAlg = WorkspaceAlg.create(config)
-    Resource.eval(step1(config))
-  }
-
-  def initValidateRepoConfig[F[_]](file: File)(implicit
-      fileAlg: FileAlg[F],
-      logger: Logger[F],
-      F: MonadThrow[F]
-  ): StewardContext.ValidateRepoConfig[F] = {
-    implicit val validateRepoConfigAlg = new ValidateRepoConfigAlg[F]()
-    StewardContext.ValidateRepoConfig[F](file)
-  }
-
   def step1[F[_]](config: Config)(implicit
       client: Client[F],
       urlCheckerClient: UrlCheckerClient[F],
diff --git a/modules/core/src/main/scala/org/scalasteward/core/repoconfig/ValidateRepoConfigAlg.scala b/modules/core/src/main/scala/org/scalasteward/core/repoconfig/ValidateRepoConfigAlg.scala
deleted file mode 100644
index 4b76b4ee..00000000
--- a/modules/core/src/main/scala/org/scalasteward/core/repoconfig/ValidateRepoConfigAlg.scala
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2018-2022 Scala Steward contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.scalasteward.core.repoconfig
-
-import better.files.File
-import cats.MonadThrow
-import cats.syntax.all._
-import cats.effect.ExitCode
-import org.typelevel.log4cats.Logger
-import org.scalasteward.core.io.FileAlg
-import org.scalasteward.core.repoconfig.RepoConfigAlg
-
-import ValidateRepoConfigAlg._
-import io.circe.{CursorOp, DecodingFailure, ParsingFailure}
-
-final class ValidateRepoConfigAlg[F[_]](implicit
-    fileAlg: FileAlg[F],
-    logger: Logger[F],
-    F: MonadThrow[F]
-) {
-
-  def validateConfigFile(configFile: File): F[ConfigValidationResult] =
-    fileAlg.readFile(configFile).map {
-      case Some(content) => validateContent(content)
-      case None          => ConfigValidationResult.FileDoesNotExist
-    }
-
-  def validateAndReport(configFile: File): F[ExitCode] =
-    validateConfigFile(configFile).flatMap { result =>
-      ValidateRepoConfigAlg.presentValidationResult(configFile)(result) match {
-        case Left(errMsg) => logger.error(errMsg).as(ExitCode.Error)
-        case Right(okMsg) => logger.info(okMsg).as(ExitCode.Success)
-      }
-    }
-}
-
-object ValidateRepoConfigAlg {
-  sealed trait ConfigValidationResult
-
-  object ConfigValidationResult {
-    case object FileDoesNotExist extends ConfigValidationResult
-    case class ConfigIsInvalid(err: io.circe.Error) extends ConfigValidationResult
-    case object Ok extends ConfigValidationResult
-  }
-
-  def validateContent(content: String): ConfigValidationResult =
-    RepoConfigAlg.parseRepoConfig(content) match {
-      case Left(err) => ConfigValidationResult.ConfigIsInvalid(err)
-      case Right(_)  => ConfigValidationResult.Ok
-    }
-
-  private def printCirceError(indent: String)(err: io.circe.Error): String =
-    err match {
-      case d: DecodingFailure =>
-        val history =
-          d.history
-            .map {
-              case CursorOp.DownField(k) => k
-              case CursorOp.Field(k)     => k
-              case other                 => other
-            }
-            .mkString(s"${indent * 3}\n")
-        s"""|${indent}Decoding failed with:
-            |${indent * 2}${d.message}:
-            |${indent * 3}${history}""".stripMargin
-      case ParsingFailure(message, _) =>
-        s"""|${indent}Parsing failed with "$message".""".stripMargin
-    }
-
-  def presentValidationResult(
-      configFile: File
-  )(result: ConfigValidationResult): Either[String, String] =
-    result match {
-      case ConfigValidationResult.Ok =>
-        s"Configuration file at $configFile is valid.".asRight
-      case ConfigValidationResult.FileDoesNotExist =>
-        s"Configuration file at $configFile does not exist!".asLeft
-      case ConfigValidationResult.ConfigIsInvalid(err) =>
-        s"""|Configuration file at $configFile contains errors:
-            |${printCirceError(" " * 2)(err)}""".stripMargin.asLeft
-    }
-}
diff --git a/project/Dependencies.scala b/project/Dependencies.scala
index 7a6ad92c..f2e15661 100644
--- a/project/Dependencies.scala
+++ b/project/Dependencies.scala
@@ -29,7 +29,7 @@ object Dependencies {
   val http4sBlazeServer = "org.http4s" %% "http4s-blaze-server" % "1.0.0-M36"
   val http4sOkhttpClient = "org.http4s" %% "http4s-okhttp-client" % "1.0.0-M32"
   val log4catsSlf4j = "org.typelevel" %% "log4cats-slf4j" % "2.5.0"
-  val logbackClassic = "ch.qos.logback" % "logback-classic" % "1.3.4"
+  val logbackClassic = "ch.qos.logback" % "logback-classic" % "1.2.11"
   val jjwtApi = "io.jsonwebtoken" % "jjwt-api" % "0.11.5"
   val jjwtImpl = "io.jsonwebtoken" % "jjwt-impl" % jjwtApi.revision
   val jjwtJackson = "io.jsonwebtoken" % "jjwt-jackson" % jjwtApi.revision
diff --git a/project/plugins.sbt b/project/plugins.sbt
index ea626ebd..fe474d0f 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -5,7 +5,7 @@ addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.5.10")
 addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6")
 addSbtPlugin("com.github.cb372" % "sbt-explicit-dependencies" % "0.2.16")
 addSbtPlugin("com.github.tkawachi" % "sbt-doctest" % "0.10.0")
-addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.11")
+addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.9")
 addSbtPlugin("de.heikoseeberger" % "sbt-header" % "5.7.0")
 addSbtPlugin("io.github.davidgregory084" % "sbt-tpolecat" % "0.4.1")
 addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.3")


Test patch:
diff --git a/modules/core/src/test/scala/org/scalasteward/core/application/CliTest.scala b/modules/core/src/test/scala/org/scalasteward/core/application/CliTest.scala
index cca8f3fa..30cd5c42 100644
--- a/modules/core/src/test/scala/org/scalasteward/core/application/CliTest.scala
+++ b/modules/core/src/test/scala/org/scalasteward/core/application/CliTest.scala
@@ -8,13 +8,12 @@ import org.scalasteward.core.application.Cli.EnvVar
 import org.scalasteward.core.application.Cli.ParseResult._
 import org.scalasteward.core.vcs.VCSType
 import org.scalasteward.core.vcs.github.GitHubApp
-import org.scalasteward.core.application.Config.StewardUsage
 
 import scala.concurrent.duration._
 
 class CliTest extends FunSuite {
   test("parseArgs: example") {
-    val Success(StewardUsage.Regular(obtained)) = Cli.parseArgs(
+    val Success(obtained) = Cli.parseArgs(
       List(
         List("--workspace", "a"),
         List("--repos-file", "b"),
@@ -65,7 +64,7 @@ class CliTest extends FunSuite {
   }
 
   test("parseArgs: minimal example") {
-    val Success(StewardUsage.Regular(obtained)) = Cli.parseArgs(
+    val Success(obtained) = Cli.parseArgs(
       List(
         List("--workspace", "a"),
         List("--repos-file", "b"),
@@ -84,7 +83,7 @@ class CliTest extends FunSuite {
   }
 
   test("parseArgs: enable sandbox") {
-    val Success(StewardUsage.Regular(obtained)) = Cli.parseArgs(
+    val Success(obtained) = Cli.parseArgs(
       List(
         List("--workspace", "a"),
         List("--repos-file", "b"),
@@ -115,7 +114,7 @@ class CliTest extends FunSuite {
   }
 
   test("parseArgs: disable sandbox") {
-    val Success(StewardUsage.Regular(obtained)) = Cli.parseArgs(
+    val Success(obtained) = Cli.parseArgs(
       List(
         List("--workspace", "a"),
         List("--repos-file", "b"),
@@ -144,16 +143,6 @@ class CliTest extends FunSuite {
     assert(clue(obtained).startsWith("Usage"))
   }
 
-  test("parseArgs: validate-repo-config") {
-    val Success(StewardUsage.ValidateRepoConfig(file)) = Cli.parseArgs(
-      List(
-        List("validate-repo-config", "file.conf")
-      ).flatten
-    )
-
-    assertEquals(file, File("file.conf"))
-  }
-
   test("envVarArgument: env-var without equals sign") {
     assert(clue(Cli.envVarArgument.read("SBT_OPTS")).isInvalid)
   }
diff --git a/modules/core/src/test/scala/org/scalasteward/core/mock/MockConfig.scala b/modules/core/src/test/scala/org/scalasteward/core/mock/MockConfig.scala
index 75f9c7a8..6ea8bd1a 100644
--- a/modules/core/src/test/scala/org/scalasteward/core/mock/MockConfig.scala
+++ b/modules/core/src/test/scala/org/scalasteward/core/mock/MockConfig.scala
@@ -21,7 +21,7 @@ object MockConfig {
     "--cache-ttl=1hour",
     "--refresh-backoff-period=1hour"
   )
-  val Success(Config.StewardUsage.Regular(config)) = Cli.parseArgs(args)
+  val Success(config: Config) = Cli.parseArgs(args)
   val envVars = List(s"GIT_ASKPASS=${config.gitCfg.gitAskPass}", "VAR1=val1", "VAR2=val2")
   def gitCmd(repoDir: File): List[String] =
     envVars ++ (repoDir.toString :: FileGitAlg.gitCmd.toList)
diff --git a/modules/core/src/test/scala/org/scalasteward/core/mock/MockContext.scala b/modules/core/src/test/scala/org/scalasteward/core/mock/MockContext.scala
index 3fdf24dd..c5f81193 100644
--- a/modules/core/src/test/scala/org/scalasteward/core/mock/MockContext.scala
+++ b/modules/core/src/test/scala/org/scalasteward/core/mock/MockContext.scala
@@ -1,11 +1,9 @@
 package org.scalasteward.core.mock
 
-import better.files.File
 import cats.effect.unsafe.implicits.global
 import org.http4s.HttpApp
 import org.http4s.client.Client
 import org.scalasteward.core.application.Context
-import org.scalasteward.core.application.Context.StewardContext
 import org.scalasteward.core.edit.scalafix.ScalafixMigrationsLoader
 import org.scalasteward.core.io.FileAlgTest.ioFileAlg
 import org.scalasteward.core.io._
@@ -33,6 +31,4 @@ object MockContext {
   )
 
   val context: Context[MockEff] = mockState.toRef.flatMap(Context.step1(config).run).unsafeRunSync()
-  def validateRepoConfigContext(file: File): StewardContext.ValidateRepoConfig[MockEff] =
-    Context.initValidateRepoConfig(file)
 }
diff --git a/modules/core/src/test/scala/org/scalasteward/core/repoconfig/ValidateRepoConfigAlgTest.scala b/modules/core/src/test/scala/org/scalasteward/core/repoconfig/ValidateRepoConfigAlgTest.scala
deleted file mode 100644
index b01a6a2e..00000000
--- a/modules/core/src/test/scala/org/scalasteward/core/repoconfig/ValidateRepoConfigAlgTest.scala
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.scalasteward.core.repoconfig
-
-import better.files.File
-import cats.effect.ExitCode
-import cats.effect.unsafe.implicits.global
-import org.scalasteward.core.mock.{MockContext, MockState}
-
-import java.nio.charset.StandardCharsets
-import java.nio.file.Files
-
-class ValidateRepoConfigAlgTest extends munit.FunSuite {
-
-  def configFile(content: String) = FunFixture[(File, ExitCode)](
-    setup = { _ =>
-      val tmpFile =
-        File(
-          Files.write(
-            Files.createTempFile(".scala-steward", ".conf"),
-            content.getBytes(StandardCharsets.UTF_8)
-          )
-        )
-
-      val obtained = MockContext
-        .validateRepoConfigContext(tmpFile)
-        .runF
-        .runA(MockState.empty)
-        .unsafeRunSync()
-
-      (tmpFile, obtained)
-    },
-    teardown = { case (file, _) =>
-      file.delete()
-    }
-  )
-
-  configFile(
-    """|updates.pin = [
-       |  { groupId = "org.scala-lang", artifactId="scala3-library", version = "3.1." },
-       |  { groupId = "org.scala-lang", artifactId="scala3-library_sjs1", version = "3.1." },
-       |  { groupId = "org.scala-js", artifactId="sbt-scalajs", version = "1.10." }
-       |]""".stripMargin
-  )
-    .test("accepts valid config") { case (_, obtained) =>
-      assertEquals(obtained, ExitCode.Success)
-    }
-
-  configFile(
-    """|updates.pin  =? [
-       |  { groupId = "org.scala-lang", artifactId="scala3-library", version = "3.1." },
-       |  { groupId = "org.scala-lang", artifactId="scala3-library_sjs1", version = "3.1." },
-       |  { groupId = "org.scala-js", artifactId="sbt-scalajs", version = "1.10." },
-       |]""".stripMargin
-  )
-    .test("rejects config with a parsing failure") { case (_, obtained) =>
-      assertEquals(obtained, ExitCode.Error)
-    }
-
-  configFile(
-    """|updatePullRequests = 123
-       |
-       |""".stripMargin
-  )
-    .test("rejects config with a decoding failure") { case (_, obtained) =>
-      assertEquals(obtained, ExitCode.Error)
-    }
-
-  test("rejects non-existent config file") {
-    val nonExistentFile = File("/", "scripts", "script")
-    val obtained = MockContext
-      .validateRepoConfigContext(nonExistentFile)
-      .runF
-      .runA(MockState.empty)
-      .unsafeRunSync()
-
-    assertEquals(obtained, ExitCode.Error)
-  }
-}