From b3efa2051e3b0edf4001afa326c5bf8b1268f4fe Mon Sep 17 00:00:00 2001 From: Flu0r1ne Date: Mon, 6 Sep 2021 13:21:49 -0500 Subject: Set individual cmd working dir rather than using chdir. Robust multithreading. --- runner.go | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'runner.go') diff --git a/runner.go b/runner.go index 15f08ae..b543cc0 100644 --- a/runner.go +++ b/runner.go @@ -29,17 +29,19 @@ func (r Runner) checkConfig(tcs []TestCase) { } } -func (r Runner) setupEnv(adapter Adapter) { - nm := adapter.Config().Name - wd := path.Join(r.dirs.Build(), nm) +func adapterBuildDir(dirs DirConfig, adapter Adapter) string { + return path.Join(dirs.Build(), adapter.Config().Name) +} + +func (r Runner) createAdapterBuildDir(adapter Adapter) { + build := adapterBuildDir(r.dirs, adapter) - if !directoryExists(wd) { - if err := os.Mkdir(wd, 0755); err != nil { - log.Fatalf("Could not create adapter config %s %v\n", wd, err) + if !directoryExists(build) { + if err := os.Mkdir(build, 0755); err != nil { + log.Fatalf("Could not create adapter config %s %v\n", build, err) } } - safeCd(wd) } type adapterTestSet struct { @@ -101,12 +103,10 @@ func (r Runner) Build(tcs []TestCase) { adapter := pair.adapter cases := pair.tcs - r.setupEnv(adapter) + r.createAdapterBuildDir(adapter) adapter.Build(cases) } - - safeCd(r.dirs.Config()) } func (r Runner) Evaluate(tcs []TestCase) []TestResult { @@ -119,7 +119,6 @@ func (r Runner) Evaluate(tcs []TestCase) []TestResult { adapter := pair.adapter cases := pair.tcs - r.setupEnv(adapter) resultSet := adapter.Evaluate(cases) c <- resultSet @@ -155,9 +154,15 @@ func (r Runner) SrcDir() string { func NewRunner(adapters map[string]Adapter, dirs DirConfig) Runner { r := Runner{adapters, dirs} + for _, adapter := range r.adapters { - adapter.Init(dirs) + ctx := PipelineContext { + Dirs: dirs, + AdapterDir: adapterBuildDir(dirs, adapter), + } + + adapter.Init(ctx) } return r -- cgit v1.2.3