function TestRunner.runPlan(h)local f=TestSession.new(h)local j=LifecycleHooks.new()local H=h:findNodes(function(h)return h.modifier==TestEnum.NodeModifier.Focus end)f.hasFocusNodes=#H>0 TestRunner.runPlanNode(f,h,j)return f:finalize()end
--[[
	Runs the given TestPlan and returns a TestResults object representing the
	results of the run.
]]
function TestRunner.runPlan(plan)
	local session = TestSession.new(plan)
	local lifecycleHooks = LifecycleHooks.new()

	local exclusiveNodes = plan:findNodes(function(node)
		return node.modifier == TestEnum.NodeModifier.Focus
	end)

	session.hasFocusNodes = #exclusiveNodes > 0

	TestRunner.runPlanNode(session, plan, lifecycleHooks)

	return session:finalize()
end
