Skip to content

Commit

Permalink
Merge pull request #469 from wiwa/f/checkscalasig
Browse files Browse the repository at this point in the history
Add better-files and save pretty-printed scalasigs from checkscalasig
  • Loading branch information
wiwa committed Aug 5, 2019
2 parents a6f3ea2 + 5ddc105 commit 2f191f2
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
1 change: 1 addition & 0 deletions build.sbt
Expand Up @@ -61,6 +61,7 @@ lazy val check = project
moduleName := "rsc-check",
scalacOptions += "-Xexperimental",
libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.2.3",
libraryDependencies += "com.github.pathikrit" %% "better-files" % "3.8.0",
libraryDependencies += "commons-cli" % "commons-cli" % "1.4",
libraryDependencies += "io.github.java-diff-utils" % "java-diff-utils" % "4.0",
libraryDependencies += "io.github.soc" % "directories" % "10",
Expand Down
22 changes: 22 additions & 0 deletions check/src/main/scala/rsc/checkscalasig/Checker.scala
@@ -1,7 +1,9 @@
package rsc.checkscalasig

import better.files._
import java.nio.file.Path
import rsc.checkbase.{CheckerBase, DiffUtil, DifferentProblem}
import scala.collection.mutable
import scala.meta.scalasig.highlevel.{ParsedScalasig, ScalasigResult, Scalasigs}

/**
Expand All @@ -16,6 +18,9 @@ class Checker(settings: Settings, nscResult: Path, rscResult: Path)
extends CheckerBase
with DiffUtil {

val nscFilenameDefaultBase = "nsc_scalasigs"
val rscFilenameDefaultBase = "rsc_scalasigs"

private def resStr(sig: ScalasigResult): Option[(String, String)] = {
sig match {
case ParsedScalasig(_, _, scalasig) => Some(scalasig.name -> scalasig.toString)
Expand All @@ -29,15 +34,32 @@ class Checker(settings: Settings, nscResult: Path, rscResult: Path)

assert(nscSigs.keySet == rscSigs.keySet)

val nscTexts = mutable.ListBuffer.empty[String]
val rscTexts = mutable.ListBuffer.empty[String]

nscSigs.foreach {
case (k, nscText) =>
val rscText = rscSigs(k)

if (settings.saveOutput) {
nscTexts.prepend(nscText)
rscTexts.prepend(rscText)
}

val unifiedDiff = diff(nscResult.toString, nscText, rscText.toString, rscText)

unifiedDiff.foreach { d =>
problems += DifferentProblem(d)
}
}

if (settings.saveOutput) {
val nscFile = s"$nscFilenameDefaultBase.txt".toFile
val rscFile = s"$rscFilenameDefaultBase.txt".toFile

nscFile.write(nscTexts.mkString("\n"))
rscFile.write(rscTexts.mkString("\n"))
}

}
}
5 changes: 4 additions & 1 deletion check/src/main/scala/rsc/checkscalasig/Settings.scala
Expand Up @@ -7,7 +7,8 @@ import rsc.checkbase.SettingsBase
final case class Settings(
cp: List[Path] = Nil,
ins: List[Path] = Nil,
quiet: Boolean = false
quiet: Boolean = false,
saveOutput: Boolean = false
) extends SettingsBase

object Settings {
Expand All @@ -22,6 +23,8 @@ object Settings {
case "--classpath" +: s_cp +: rest if allowOptions =>
val cp = s_cp.split(pathSeparator).map(s => Paths.get(s)).toList
loop(settings.copy(cp = settings.cp ++ cp), true, rest)
case "--save-output" +: rest if allowOptions =>
loop(settings.copy(saveOutput = true), true, rest)
case "--quiet" +: rest if allowOptions =>
loop(settings.copy(quiet = true), true, rest)
case flag +: rest if allowOptions && flag.startsWith("-") =>
Expand Down

0 comments on commit 2f191f2

Please sign in to comment.