Current section
Files
Jump to
Current section
Files
src/showtime/internal/erlang/module_handler.gleam
@target(erlang)
import gleam/otp/actor.{Continue}
@target(erlang)
import gleam/erlang/process
@target(erlang)
import showtime/internal/common/test_suite.{
type TestEventHandler, type TestFunctionCollector, type TestModule,
type TestRunner, EndTestSuite, StartTestSuite,
}
@target(erlang)
import showtime/internal/common/cli.{type Capture}
@target(erlang)
import gleam/option.{None}
@target(erlang)
pub fn start(
test_event_handler: TestEventHandler,
test_function_collector: TestFunctionCollector,
run_test_suite: TestRunner,
ignore_tags: List(String),
capture: Capture,
) {
let assert Ok(subject) =
actor.start(
Nil,
fn(module: TestModule, state) {
process.start(
fn() {
let test_suite = test_function_collector(module)
test_event_handler(StartTestSuite(module))
run_test_suite(test_suite, test_event_handler, ignore_tags, capture)
test_event_handler(EndTestSuite(module))
},
False,
)
Continue(state, None)
},
)
fn(test_module: TestModule) {
process.send(subject, test_module)
Nil
}
}