Skip to content

Commit

Permalink
Expose testkit as a standalone package
Browse files Browse the repository at this point in the history
  • Loading branch information
voidcontext committed Jul 15, 2020
1 parent 13a4d43 commit 200dd26
Show file tree
Hide file tree
Showing 11 changed files with 63 additions and 24 deletions.
25 changes: 23 additions & 2 deletions build.sbt
Expand Up @@ -26,6 +26,13 @@ lazy val defaultSettings = Seq(
addCompilerPlugin("com.olegpy" %% "better-monadic-for" % "0.3.1")
)

lazy val `console4s-core` = (project in file("console4s-core"))
.settings(
name := "console4s-core",
publishSettings,
defaultSettings
)

lazy val console4s = (project in file("console4s"))
.settings(
name := "console4s",
Expand All @@ -40,25 +47,39 @@ lazy val console4s = (project in file("console4s"))
"org.scalatest" %% "scalatest" % scalatestVersion % Test
)
)
.dependsOn(`console4s-core`)
.dependsOn(`console4s-testkit` % "compile->test")

lazy val `console4s-testkit` = (project in file("console4s-testkit"))
.settings(
name := "console4s-testkit",
defaultSettings,
libraryDependencies ++= Seq(
"org.typelevel" %% "cats-core" % catsVersion
)
)
.dependsOn(`console4s-core`)

lazy val examples = (project in file("examples"))
.settings(
name := "examples",
publishSettings,
skip in publish := true,
defaultSettings,
libraryDependencies ++= Seq(
"org.typelevel" %% "cats-core" % catsVersion,
"org.typelevel" %% "cats-effect" % catsEffectVersion
)
)
.dependsOn(console4s)
.dependsOn(`console4s`)

lazy val root = (project in file("."))
.settings(
skip in publish := true
)
.aggregate(
console4s,
`console4s-core`,
`console4s-testkit`,
examples
)

Expand Down
@@ -0,0 +1,21 @@
package com.gaborpihaj.console4s.core

trait Terminal {
def writer(): Terminal.Writer
def reader(): Terminal.Reader
def flush(): Unit
def getCursorPosition(): (Terminal.Row, Terminal.Column)
def getHeight(): Int
}

object Terminal {
type Row = Int
type Column = Int
trait Writer {
def write(s: String): Unit
}

trait Reader {
def readchar(): Int
}
}
@@ -1,5 +1,7 @@
package com.gaborpihaj.console4s

import com.gaborpihaj.console4s.core.Terminal

trait TestTerminal extends Terminal {
def output: String
}
Expand Down
22 changes: 5 additions & 17 deletions console4s/src/main/scala/com/gaborpihaj/console4s/Terminal.scala
@@ -1,27 +1,15 @@
package com.gaborpihaj.console4s

import cats.effect.{Resource, Sync}
import com.gaborpihaj.console4s.core
import org.jline.keymap.BindingReader
import org.jline.terminal.TerminalBuilder

trait Terminal {
def writer(): Terminal.Writer
def reader(): Terminal.Reader
def flush(): Unit
def getCursorPosition(): (Terminal.Row, Terminal.Column)
def getHeight(): Int
}

object Terminal {
type Row = Int
type Column = Int
trait Writer {
def write(s: String): Unit
}

trait Reader {
def readchar(): Int
}
type Row = core.Terminal.Row
type Column = core.Terminal.Column
type Writer = core.Terminal.Writer
type Reader = core.Terminal.Reader

def apply[F[_]: Sync]: Resource[F, Terminal] =
Resource
Expand Down
@@ -0,0 +1,7 @@
package com.gaborpihaj

import com.gaborpihaj.console4s.core

package object console4s {
type Terminal = core.Terminal
}
@@ -1,8 +1,8 @@
package com.gaborpihaj
package com.gaborpihaj.console4s

import cats.kernel.Semigroup

package object console4s {
object Helpers {
def strToChars(s: String): List[Int] = s.toCharArray.map(_.toInt).toList

def repeat[A](a: A, n: Int)(implicit S: Semigroup[A]): A =
Expand Down
Expand Up @@ -9,6 +9,7 @@ import cats.instances.list._
import cats.instances.string._
import com.gaborpihaj.console4s.AutoCompletionConfig.Down
import com.gaborpihaj.console4s.AutoCompletionSource
import com.gaborpihaj.console4s.Helpers._
import com.gaborpihaj.console4s.TerminalHelper.TerminalState
import org.scalatest.matchers.should.Matchers
import org.scalatest.wordspec.AnyWordSpec
Expand Down
3 changes: 1 addition & 2 deletions examples/src/main/scala/com/gaborpihaj/console4s/Main.scala
Expand Up @@ -7,7 +7,7 @@ import com.gaborpihaj.console4s._

object Main extends IOApp {

def run(args: List[String]): IO[ExitCode] = {
def run(args: List[String]): IO[ExitCode] =
Terminal[IO].use { terminal =>
val lineReader = LineReader[IO](terminal)
val console = Console[IO](terminal, lineReader)
Expand Down Expand Up @@ -41,6 +41,5 @@ object Main extends IOApp {
_ <- console.readLine("prompt > ", autocomplete)
} yield ExitCode.Success
}
}

}
2 changes: 1 addition & 1 deletion project/build.properties
@@ -1 +1 @@
sbt.version=1.3.7
sbt.version=1.3.13

0 comments on commit 200dd26

Please sign in to comment.