From a0b020a78eb0b33965c59460fc093c6959216e44 Mon Sep 17 00:00:00 2001 From: Flu0r1ne Date: Tue, 3 Aug 2021 02:02:40 -0500 Subject: Initial commit with basic build structure --- runner.go | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 runner.go (limited to 'runner.go') diff --git a/runner.go b/runner.go new file mode 100644 index 0000000..5c66573 --- /dev/null +++ b/runner.go @@ -0,0 +1,63 @@ +package planr + +type Runner struct { + adapters []Adapter +} + +func (r *Runner) RegisterAdapter(a Adapter) { + r.adapters = append(r.adapters, a) +} + +func (r Runner) adapterCfgs() []AdapterConfig { + cgs := make([]AdapterConfig, len(r.adapters)) + + for _, adapter := range r.adapters { + cgs = append(cgs, adapter.Config()) + } + + return cgs +} + +func (r Runner) collectUnits(root string) []TestCase { + tcs := make([]TestCase, 10) + + collectUnits(root, nil, r.adapterCfgs(), &tcs) + + return tcs +} + +func (r Runner) cycle(tcs []TestCase) []TestResult { + results := make([]TestResult, 0) + + for _, adapter := range r.adapters { + aname := adapter.Config().Name + + adapter.InitializeBuild() + + for _, tc := range tcs { + if tc.ContainsAdapter(aname) { + adapter.Build(tc) + } + } + + adapter.FinalizeBuild() + + for _, tc := range tcs { + if tc.ContainsAdapter(aname) { + results = append(results, adapter.Evaluate(tc)) + } + } + + adapter.Cleanup() + } + + return results +} + +func (r Runner) Run(root string) [] TestResult { + tcs := r.collectUnits(root) + + trs := r.cycle(tcs) + + return trs +} -- cgit v1.2.3