Skip to content

Commit

Permalink
CliOptions: move NoopOutputStream to new Output
Browse files Browse the repository at this point in the history
  • Loading branch information
kitbellew committed Sep 15, 2024
1 parent e0ae126 commit e7ef976
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 18 deletions.
18 changes: 3 additions & 15 deletions scalafmt-cli/src/main/scala/org/scalafmt/cli/CliOptions.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import org.scalafmt.sysops.GitOps
import org.scalafmt.sysops.OsSpecific

import java.io.InputStream
import java.io.OutputStream
import java.io.PrintStream
import java.nio.file.Files
import java.nio.file.NoSuchFileException
Expand Down Expand Up @@ -60,28 +59,17 @@ object CliOptions {

private def guardPrintStream(p: => Boolean)(
candidate: PrintStream,
): PrintStream = if (p) NoopOutputStream.printStream else candidate
): PrintStream = if (p) Output.NoopStream.printStream else candidate

}

object NoopOutputStream extends OutputStream {
self =>
override def write(b: Int): Unit = ()

override def write(b: Array[Byte]): Unit = ()

override def write(b: Array[Byte], off: Int, len: Int): Unit = ()

val printStream = new PrintStream(self)
}

case class CommonOptions(
private val cwd: Option[AbsoluteFile] = None,
out: PrintStream = System.out,
in: InputStream = System.in,
err: PrintStream = System.err,
debug: PrintStream = NoopOutputStream.printStream,
info: PrintStream = NoopOutputStream.printStream,
debug: PrintStream = Output.NoopStream.printStream,
info: PrintStream = Output.NoopStream.printStream,
) {
private[cli] lazy val workingDirectory: AbsoluteFile = cwd
.getOrElse(AbsoluteFile.userDir)
Expand Down
21 changes: 21 additions & 0 deletions scalafmt-cli/src/main/scala/org/scalafmt/cli/Output.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.scalafmt.cli

import java.io._

object Output {

object NoopStream extends OutputStream {
self =>
override def write(b: Int): Unit = ()

override def write(b: Array[Byte]): Unit = ()

override def write(b: Array[Byte], off: Int, len: Int): Unit = ()

def outputStream: OutputStream = self
val printStream = new PrintStream(self)
val printWriter = new PrintWriter(self)
val streamWriter = new OutputStreamWriter(self)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ class CliOptionsTest extends FunSuite {
val stdoutArgs = Array("--stdout")
for (args <- Seq(stdinArgs, stdoutArgs)) {
val options = Cli.getConfig(args, baseCliOptions).get
assertEquals(options.common.info, NoopOutputStream.printStream)
assertEquals(options.common.info, Output.NoopStream.printStream)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -555,7 +555,7 @@ trait CliTestBehavior {
}

test(s"command line argument error: $label") {
val exit = Console.withErr(NoopOutputStream.printStream) {
val exit = Console.withErr(Output.NoopStream.printStream) {
Cli.mainWithOptions(
Array("--foobar"),
getMockOptions(AbsoluteFile.userDir),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ object FileTestOps {
def getMockOptions(
baseDir: AbsoluteFile,
workingDir: AbsoluteFile,
out: PrintStream = NoopOutputStream.printStream,
out: PrintStream = Output.NoopStream.printStream,
): CliOptions = CliOptions.default.copy(
baseConfig = ScalafmtConfig.default,
gitOpsConstructor = _ => new FakeGitOps(baseDir),
Expand Down

0 comments on commit e7ef976

Please sign in to comment.