From 35f885ead35c4809c2cb06d4d74b077129b96ec6 Mon Sep 17 00:00:00 2001 From: xuwei-k <6b656e6a69@gmail.com> Date: Tue, 4 Feb 2025 16:50:16 +0900 Subject: [PATCH] fix FileNameConsistent if windows --- .../main/scala/fix/FileNameConsistent.scala | 2 +- .../FileNameConsistent/test-1/.scalafix.conf | 3 ++ sbt-test/FileNameConsistent/test-1/build.sbt | 28 +++++++++++++++++++ .../test-1/project/plugins.sbt | 3 ++ .../test-1/src/main/scala/a/A.scala | 3 ++ .../test-1/src/main/scala/a/X.scala | 3 ++ sbt-test/FileNameConsistent/test-1/test | 2 ++ tests/src/test/scala/fix/RuleSuite.scala | 3 ++ 8 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 sbt-test/FileNameConsistent/test-1/.scalafix.conf create mode 100644 sbt-test/FileNameConsistent/test-1/build.sbt create mode 100644 sbt-test/FileNameConsistent/test-1/project/plugins.sbt create mode 100644 sbt-test/FileNameConsistent/test-1/src/main/scala/a/A.scala create mode 100644 sbt-test/FileNameConsistent/test-1/src/main/scala/a/X.scala create mode 100644 sbt-test/FileNameConsistent/test-1/test diff --git a/rules/src/main/scala/fix/FileNameConsistent.scala b/rules/src/main/scala/fix/FileNameConsistent.scala index a5e90e0..7c3b501 100644 --- a/rules/src/main/scala/fix/FileNameConsistent.scala +++ b/rules/src/main/scala/fix/FileNameConsistent.scala @@ -40,7 +40,7 @@ class FileNameConsistent extends SyntacticRule("FileNameConsistent") { case f: Input.VirtualFile => ScalaSource( fullPath = f.path, - name = f.path.split('/').lastOption.getOrElse("").replace(".scala", "") + name = f.path.split(java.io.File.separatorChar).lastOption.getOrElse("").replace(".scala", "") ) } diff --git a/sbt-test/FileNameConsistent/test-1/.scalafix.conf b/sbt-test/FileNameConsistent/test-1/.scalafix.conf new file mode 100644 index 0000000..4cb744e --- /dev/null +++ b/sbt-test/FileNameConsistent/test-1/.scalafix.conf @@ -0,0 +1,3 @@ +rules = [ + FileNameConsistent +] diff --git a/sbt-test/FileNameConsistent/test-1/build.sbt b/sbt-test/FileNameConsistent/test-1/build.sbt new file mode 100644 index 0000000..eba70ef --- /dev/null +++ b/sbt-test/FileNameConsistent/test-1/build.sbt @@ -0,0 +1,28 @@ +import argonaut._ + +ThisBuild / scalafixDependencies += "com.github.xuwei-k" %% "scalafix-rules" % sys.props("scalafix-rules.version") + +TaskKey[Unit]("check") := { + val actual = JsonParser.parse(IO.read(file("target/warnings/warnings.json"))).fold(sys.error(_), identity) + val expect = Json.array( + Json.obj( + "message" -> Json.jString("[FileNameConsistent] inconsistent file name and class name. names = [Y]"), + "position" -> Json.obj( + "line" -> Json.jNumber(3), + "lineContent" -> Json.jString("class Y"), + "sourcePath" -> Json.jString( + if (scala.util.Properties.isWin) { + "${BASE}/src\\main\\scala\\a\\X.scala" + } else { + "${BASE}/src/main/scala/a/X.scala" + } + ), + "startLine" -> Json.jNumber(3), + "startColumn" -> Json.jNumber(0), + "endLine" -> Json.jNumber(3), + "endColumn" -> Json.jNumber(7) + ) + ) + ) + assert(actual == expect, s"$actual != $expect") +} diff --git a/sbt-test/FileNameConsistent/test-1/project/plugins.sbt b/sbt-test/FileNameConsistent/test-1/project/plugins.sbt new file mode 100644 index 0000000..331a0aa --- /dev/null +++ b/sbt-test/FileNameConsistent/test-1/project/plugins.sbt @@ -0,0 +1,3 @@ +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % sys.props("scalafix.version")) +addSbtPlugin("com.github.xuwei-k" % "warning-diff-scalafix-plugin" % "0.6.0") +libraryDependencies += "io.github.argonaut-io" %% "argonaut" % "6.3.11" diff --git a/sbt-test/FileNameConsistent/test-1/src/main/scala/a/A.scala b/sbt-test/FileNameConsistent/test-1/src/main/scala/a/A.scala new file mode 100644 index 0000000..1f82d61 --- /dev/null +++ b/sbt-test/FileNameConsistent/test-1/src/main/scala/a/A.scala @@ -0,0 +1,3 @@ +package a + +object A diff --git a/sbt-test/FileNameConsistent/test-1/src/main/scala/a/X.scala b/sbt-test/FileNameConsistent/test-1/src/main/scala/a/X.scala new file mode 100644 index 0000000..bb00dba --- /dev/null +++ b/sbt-test/FileNameConsistent/test-1/src/main/scala/a/X.scala @@ -0,0 +1,3 @@ +package a + +class Y diff --git a/sbt-test/FileNameConsistent/test-1/test b/sbt-test/FileNameConsistent/test-1/test new file mode 100644 index 0000000..a52ba59 --- /dev/null +++ b/sbt-test/FileNameConsistent/test-1/test @@ -0,0 +1,2 @@ +> warningsAll +> check diff --git a/tests/src/test/scala/fix/RuleSuite.scala b/tests/src/test/scala/fix/RuleSuite.scala index 9d294e2..b846aea 100644 --- a/tests/src/test/scala/fix/RuleSuite.scala +++ b/tests/src/test/scala/fix/RuleSuite.scala @@ -7,6 +7,9 @@ import scala.util.Properties class RuleSuite extends AbstractSemanticRuleSuite with AnyFunSuiteLike { private[this] val excludeWindows: Set[String] = Set( "FlatMapCollectTest", + "FileNameConsistentTest", + "FileNameConsistentTest2", + "package", "DuplicateWildcardImportTest", "PartialFunctionCondOptTest", "RemoveUselessParamCommentsTest",