local C=require(script.Expectation)local K=require(script.TestBootstrap)local y=require(script.TestEnum)local E=require(script.TestPlan)local t=require(script.TestPlanBuilder)local m=require(script.TestPlanner)local S=require(script.TestResults)local n=require(script.TestRunner)local d=require(script.TestSession)local k=require(script.Reporters.TextReporter)local l=require(script.Reporters.TextReporterQuiet)local W=require(script.Reporters.TeamCityReporter)local function j(C,y)local E=K:getModules(C)local t=m.createPlan(E)local S=n.runPlan(t)y(S)end local B={run=j,Expectation=C;TestBootstrap=K,TestEnum=y,TestPlan=E,TestPlanBuilder=t;TestPlanner=m,TestResults=S;TestRunner=n;TestSession=d;Reporters={TextReporter=k;TextReporterQuiet=l;TeamCityReporter=W}}return B
local Expectation = require(script.Expectation)
local TestBootstrap = require(script.TestBootstrap)
local TestEnum = require(script.TestEnum)
local TestPlan = require(script.TestPlan)
local TestPlanBuilder = require(script.TestPlanBuilder)
local TestPlanner = require(script.TestPlanner)
local TestResults = require(script.TestResults)
local TestRunner = require(script.TestRunner)
local TestSession = require(script.TestSession)
local TextReporter = require(script.Reporters.TextReporter)
local TextReporterQuiet = require(script.Reporters.TextReporterQuiet)
local TeamCityReporter = require(script.Reporters.TeamCityReporter)

local function run(testRoot, callback)
	local modules = TestBootstrap:getModules(testRoot)
	local plan = TestPlanner.createPlan(modules)
	local results = TestRunner.runPlan(plan)

	callback(results)
end

local TestEZ = {
	run = run,

	Expectation = Expectation,
	TestBootstrap = TestBootstrap,
	TestEnum = TestEnum,
	TestPlan = TestPlan,
	TestPlanBuilder = TestPlanBuilder,
	TestPlanner = TestPlanner,
	TestResults = TestResults,
	TestRunner = TestRunner,
	TestSession = TestSession,

	Reporters = {
		TextReporter = TextReporter,
		TextReporterQuiet = TextReporterQuiet,
		TeamCityReporter = TeamCityReporter,
	},
}

return TestEZ