Overhauled packaging and began to pull out common test code.

This commit is contained in:
Pat Garrity 2024-10-09 21:10:33 -05:00
parent ddb977b80c
commit f4f2462d15
Signed by: pfm
GPG key ID: 5CA5D21BAB7F3A76
28 changed files with 73 additions and 62 deletions

View file

@ -57,18 +57,35 @@ lazy val testSettings = Seq(
lazy val `gs-test` = project
.in(file("."))
.aggregate(
`api-definition`,
`api-execution`
`test-support`,
api,
runtime
)
.settings(noPublishSettings)
.settings(name := s"${gsProjectName.value}-v${semVerMajor.value}")
lazy val `api-definition` = project
.in(file("modules/api-definition"))
lazy val `test-support` = project
.in(file("modules/test-support"))
.settings(sharedSettings)
.settings(testSettings)
.settings(noPublishSettings)
.settings(
name := s"${gsProjectName.value}-test-support"
)
.settings(
libraryDependencies ++= Seq(
Deps.Cats.Core,
Deps.Cats.Effect
)
)
lazy val api = project
.in(file("modules/api"))
.dependsOn(`test-support` % "test->test")
.settings(sharedSettings)
.settings(testSettings)
.settings(
name := s"${gsProjectName.value}-api-definition-v${semVerMajor.value}"
name := s"${gsProjectName.value}-api-v${semVerMajor.value}"
)
.settings(
libraryDependencies ++= Seq(
@ -78,13 +95,14 @@ lazy val `api-definition` = project
)
)
lazy val `api-execution` = project
.in(file("modules/api-execution"))
.dependsOn(`api-definition`)
lazy val runtime = project
.in(file("modules/runtime"))
.dependsOn(`test-support` % "test->test")
.dependsOn(api)
.settings(sharedSettings)
.settings(testSettings)
.settings(
name := s"${gsProjectName.value}-api-execution-v${semVerMajor.value}"
name := s"${gsProjectName.value}-runtime-v${semVerMajor.value}"
)
.settings(
libraryDependencies ++= Seq(

View file

@ -1,7 +0,0 @@
package gs.test.v0.execution.engine
import gs.test.v0.execution.SuiteExecution
final class EngineResult(
val suiteExecution: SuiteExecution
)

View file

@ -1,6 +1,5 @@
package gs.test.v0.definition
package gs.test.v0.api
import gs.test.v0.definition.pos.SourcePosition
import scala.reflect.*
sealed abstract class Assertion(val name: String)

View file

@ -1,7 +1,6 @@
package gs.test.v0.definition
package gs.test.v0.api
import cats.effect.Sync
import gs.test.v0.definition.pos.SourcePosition
import scala.reflect.ClassTag
/** Opaque type used to check candidate values against expected values.

View file

@ -1,4 +1,4 @@
package gs.test.v0.definition
package gs.test.v0.api
/** Enumeration for _Markers_, special tokens which "mark" a test to change
* execution functionality.

View file

@ -1,4 +1,4 @@
package gs.test.v0.definition
package gs.test.v0.api
import cats.Show

View file

@ -1,4 +1,4 @@
package gs.test.v0.definition.pos
package gs.test.v0.api
import scala.quoted.*

View file

@ -1,4 +1,4 @@
package gs.test.v0.definition
package gs.test.v0.api
import cats.Show

View file

@ -1,7 +1,6 @@
package gs.test.v0.definition
package gs.test.v0.api
import cats.Show
import gs.test.v0.definition.pos.SourcePosition
/** Each instance of this class indicates the _definition_ of some test.
*

View file

@ -1,6 +1,4 @@
package gs.test.v0.definition
import gs.test.v0.definition.pos.SourcePosition
package gs.test.v0.api
/** Base trait for all failures recognized by gs-test.
*/

View file

@ -1,9 +1,8 @@
package gs.test.v0.definition
package gs.test.v0.api
import cats.data.EitherT
import cats.effect.Async
import cats.syntax.all.*
import gs.test.v0.definition.pos.SourcePosition
import java.util.concurrent.ConcurrentHashMap
import scala.collection.mutable.ListBuffer
import scala.jdk.CollectionConverters.*
@ -14,7 +13,7 @@ import scala.jdk.CollectionConverters.*
* ## Example
*
* {{{
* import gs.test.v0.definition.*
* import gs.test.v0.api.*
*
* final class MyTestGroup extends TestGroup.IO:
* override def name: String = "My Test Group"

View file

@ -1,4 +1,4 @@
package gs.test.v0.definition
package gs.test.v0.api
import cats.Show
import cats.effect.Async

View file

@ -1,4 +1,4 @@
package gs.test.v0.definition
package gs.test.v0.api
import cats.Show

View file

@ -1,4 +1,4 @@
package gs.test.v0.definition
package gs.test.v0.api
/** The Test Suite is the primary unit of organization within `gs-test` -- each
* execution _typically_ runs a single test suite. For example, the unit tests

View file

@ -1,4 +1,4 @@
package gs.test.v0.definition
package gs.test.v0.api
import cats.~>
import cats.Applicative

View file

@ -1,10 +1,9 @@
package gs.test.v0.definition
package gs.test.v0.api
import cats.Applicative
import cats.data.EitherT
import cats.effect.Sync
import cats.syntax.all.*
import gs.test.v0.definition.pos.SourcePosition
/** Type alias for test results. Test results are either a [[TestFailure]] or a
* unit value (indicating success).
@ -15,7 +14,7 @@ type TestResult = Either[TestFailure, Unit]
* instances.
*
* {{{
* import gs.test.v0.definition.*
* import gs.test.v0.api.*
* val tag1: TestDefinition.Tag = tag"example"
* }}}
*/
@ -25,7 +24,7 @@ extension (sc: StringContext) def tag(args: Any*): Tag = Tag(sc.s(args*))
* [[PermanentId]] instances.
*
* {{{
* import gs.test.v0.definition.*
* import gs.test.v0.api.*
* val permanentId: PermanentId = pid"example"
* }}}
*/
@ -82,7 +81,7 @@ def failT[F[_]: Applicative](
* ## Example
*
* {{{
* import gs.test.v0.definition.*
* import gs.test.v0.api.*
*
* final class Example extends TestGroup.IO:
* override def name: String = "example"
@ -100,7 +99,7 @@ def pass(): Either[TestFailure, Unit] = Right(())
* ## Example
*
* {{{
* import gs.test.v0.definition.*
* import gs.test.v0.api.*
*
* final class Example extends TestGroup.IO:
* override def name: String = "example"
@ -119,7 +118,7 @@ def passF[F[_]: Applicative](): F[Either[TestFailure, Unit]] =
* ## Example
*
* {{{
* import gs.test.v0.definition.*
* import gs.test.v0.api.*
*
* final class Example extends TestGroup.IO:
* override def name: String = "example"

View file

@ -1,9 +1,9 @@
package gs.test.v0.definition
package gs.test.v0.api
import cats.data.Kleisli
import cats.effect.Async
import cats.effect.IO
import gs.test.v0.definition.{Tag => GsTag}
import gs.test.v0.api.{Tag => GsTag}
import munit.*
import natchez.Span

View file

@ -1,14 +1,14 @@
package gs.test.v0.definition.pos
package gs.test.v0.api
import cats.effect.IO
import cats.effect.kernel.Resource
import gs.test.v0.IOSuite
import gs.test.v0.definition.*
import gs.test.v0.api.*
import munit.*
import natchez.EntryPoint
import natchez.Kernel
import natchez.Span
import natchez.Span.Options
import support.IOSuite
/** These tests are sensitive to changes, even in formatting! They are looking
* for specific line numbers in this source code, so any sort of newline that
@ -87,12 +87,12 @@ object SourcePositionTests:
override def name: String = "G2"
test(pid"t2", "pos").pure {
gs.test.v0.definition.fail("Expected Failure")
gs.test.v0.api.fail("Expected Failure")
}
end G2
val SourceFileName: String =
"modules/api-definition/src/test/scala/gs/test/v0/definition/pos/SourcePositionTests.scala"
"modules/api/src/test/scala/gs/test/v0/api/SourcePositionTests.scala"
end SourcePositionTests

View file

@ -1,4 +1,4 @@
package gs.test.v0.execution
package gs.test.v0.runtime
import gs.uuid.v0.UUID
import java.time.Instant

View file

@ -1,4 +1,4 @@
package gs.test.v0.execution
package gs.test.v0.runtime
import cats.Show
import gs.test.v0.definition.Marker

View file

@ -1,4 +1,4 @@
package gs.test.v0.execution.engine
package gs.test.v0.runtime.engine
sealed abstract class ConcurrencySetting(val name: String):
def toInt(): Int

View file

@ -1,4 +1,4 @@
package gs.test.v0.execution.engine
package gs.test.v0.runtime.engine
/** Used to control the behavior of some [[TestEngine]]
*

View file

@ -0,0 +1,7 @@
package gs.test.v0.runtime.engine
import gs.test.v0.runtime.SuiteExecution
final class EngineResult(
val suiteExecution: SuiteExecution
)

View file

@ -1,4 +1,4 @@
package gs.test.v0.execution.engine
package gs.test.v0.runtime.engine
import cats.effect.Async
import cats.effect.Ref

View file

@ -1,7 +1,7 @@
package gs.test.v0.execution.engine
package gs.test.v0.runtime.engine
import gs.test.v0.definition.TestGroupDefinition
import gs.test.v0.execution.TestExecution
import gs.test.v0.runtime.TestExecution
import scala.concurrent.duration.FiniteDuration
final class GroupResult(

View file

@ -1,4 +1,4 @@
package gs.test.v0.execution.engine
package gs.test.v0.runtime.engine
opaque type MaximumConcurrency = Int

View file

@ -1,4 +1,4 @@
package gs.test.v0.execution.engine
package gs.test.v0.runtime.engine
import cats.effect.Async
import cats.syntax.all.*
@ -6,8 +6,8 @@ import gs.test.v0.definition.TestDefinition
import gs.test.v0.definition.TestFailure
import gs.test.v0.definition.TestGroupDefinition
import gs.test.v0.definition.TestSuite
import gs.test.v0.execution.SuiteExecution
import gs.test.v0.execution.TestExecution
import gs.test.v0.runtime.SuiteExecution
import gs.test.v0.runtime.TestExecution
import gs.timing.v0.Timing
import gs.uuid.v0.UUID
import java.time.Clock

View file

@ -1,4 +1,4 @@
package gs.test.v0
package support
import cats.effect.IO
import cats.effect.unsafe.IORuntime