From b3efa2051e3b0edf4001afa326c5bf8b1268f4fe Mon Sep 17 00:00:00 2001
From: Flu0r1ne <flur01ne@flu0r1ne.net>
Date: Mon, 6 Sep 2021 13:21:49 -0500
Subject: Set individual cmd working dir rather than using chdir. Robust
 multithreading.

---
 adapters/bash/adapter.go | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

(limited to 'adapters/bash')

diff --git a/adapters/bash/adapter.go b/adapters/bash/adapter.go
index 65a6c80..8c7713c 100644
--- a/adapters/bash/adapter.go
+++ b/adapters/bash/adapter.go
@@ -15,7 +15,8 @@ import (
 )
 
 type Adapter struct {
-  dirs planr.DirConfig
+  dirs     planr.DirConfig
+  buildDir string
 }
 
 func (a *Adapter) Config() planr.AdapterConfig {
@@ -36,13 +37,14 @@ func safeWd() string{
   return wd
 }
 
-func (a *Adapter) Init(dirs planr.DirConfig) {
-  a.dirs = dirs
+func (a *Adapter) Init(ctx planr.PipelineContext) {
+  a.dirs = ctx.Dirs
+  a.buildDir = ctx.AdapterDir
 }
 
 func (adapter Adapter) Build(tcs []planr.TestCase) { }
 
-func executeScriptedTest(testdir string, tc planr.TestCase) planr.TestResult {
+func executeScriptedTest(builddir, testdir string, tc planr.TestCase) planr.TestResult {
   cfg := tc.AdapterConfig().(*Config)
 
   timeout := time.Duration(cfg.Timeout) * time.Millisecond
@@ -57,6 +59,8 @@ func executeScriptedTest(testdir string, tc planr.TestCase) planr.TestResult {
   result.Tc = tc
 
   cmd := exec.CommandContext(ctx, "bash", path)
+
+  cmd.Dir = builddir
     
   if out, err := cmd.CombinedOutput(); err != nil {
     result.Status = planr.RUNTIME_FAILURE  
@@ -87,7 +91,7 @@ func (adapter Adapter) Evaluate(tcs []planr.TestCase) [] planr.TestResult {
   c := make(chan planr.TestResult, 0)
   for i := range tcs {
     go func(i int) {
-      c <- executeScriptedTest(adapter.dirs.Tests(), tcs[i])
+      c <- executeScriptedTest(adapter.buildDir, adapter.dirs.Tests(), tcs[i])
     }(i)
   }
 
-- 
cgit v1.2.3