diff options
Diffstat (limited to 'adapters')
| -rw-r--r-- | adapters/gtest/adapter.go | 64 | ||||
| -rw-r--r-- | adapters/gtest/results.go | 17 | 
2 files changed, 65 insertions, 16 deletions
| diff --git a/adapters/gtest/adapter.go b/adapters/gtest/adapter.go index 09e6ac1..600c956 100644 --- a/adapters/gtest/adapter.go +++ b/adapters/gtest/adapter.go @@ -16,7 +16,7 @@ import (  const GTEST_CMAKE = "CMakeLists.txt"  func mkUnit(tc *planr.TestCase) cmakeUnit { -  cfg := tc.AdapterConfig("gtest").(*GtestConfig) +  cfg := tc.AdapterConfig().(*GtestConfig)    return cmakeUnit {      tc.Cname, @@ -49,7 +49,7 @@ func (adapter *GtestAdapter) Build(tcs []*planr.TestCase) {    for _, tc := range tcs {      fmt.Printf("[R] Building %s (%s)\n", tc.Cname, tc.Path) -    cfg := tc.AdapterConfig("gtest").(*GtestConfig) +    cfg := tc.AdapterConfig().(*GtestConfig)      cfg.ensureSatisfied(tc.Path)      units = append(units, mkUnit(tc)) @@ -61,15 +61,16 @@ func (adapter *GtestAdapter) Build(tcs []*planr.TestCase) {    planr.RunCmd("cmake", "-S", ".", "-B", ".")  } -func (adapter *GtestAdapter) Evaluate(tcs []*planr.TestCase) { -  planr.RunCmd("make", "-k") +type ResultFromId map[string] planr.TestResult + +func (adapter *GtestAdapter) execTests(cnames []string) ResultFromId {    buildDir := adapter.Config().Dir() -  results := make([]planr.TestResult, 0) -  for _, tc := range tcs { -      fmt.Printf("[R] Evaluating %s (%s)\n", tc.Cname, tc.Path) +  lut := make(ResultFromId, 0) +  for _, exe := range cnames { +      fmt.Printf("[R] Evaluating %s\n", exe) -      exe := path.Join(buildDir, tc.Cname) +      exePath := path.Join(buildDir, exe)        f, err := ioutil.TempFile(buildDir, "gtest_adapter_*.json") @@ -78,7 +79,7 @@ func (adapter *GtestAdapter) Evaluate(tcs []*planr.TestCase) {        }        ctx, cancel := context.WithTimeout(context.Background(), 9999*time.Millisecond) -      cmd := exec.CommandContext(ctx, exe, "--gtest_output=json:" + f.Name()) +      cmd := exec.CommandContext(ctx, exePath, "--gtest_output=json:" + f.Name())        defer cancel()        defer os.Remove(f.Name()) @@ -96,11 +97,50 @@ func (adapter *GtestAdapter) Evaluate(tcs []*planr.TestCase) {        }        if exitFail { -        fmt.Printf("Failure detected") +        fmt.Printf("")        } -      results = append(results, decodeResults(f)...) +      for _, r  := range decodeResults(f) { +        lut[exe + "." + r.id] = r.result +      }    } -  fmt.Println(results) +  return lut +} + +func exes(tcs []*planr.TestCase) []string { +  set := make(map[string] bool, 0) +   +  for _, tc := range tcs { +    if(!set[tc.Cname]) { +      set[tc.Cname] = true +    } +  } +  +  exes := make([]string, 0) +  for k := range set { +    exes = append(exes, k) +  } +   +  return exes +} + +func id(tc *planr.TestCase) string { +  cfg := tc.AdapterConfig().(*GtestConfig) +  return tc.Cname + "." + *cfg.Suite + "." + *cfg.Name +} + +func (adapter *GtestAdapter) Evaluate(tcs []*planr.TestCase) { +  buildDir := adapter.Config().Dir() +  chdir(buildDir) + +  planr.RunCmd("make", "-k") + +  files := exes(tcs) +  resultById := adapter.execTests(files) + +  for _, tc := range tcs { +    result := resultById[id(tc)] +    tc.Result = &result  +  }  } diff --git a/adapters/gtest/results.go b/adapters/gtest/results.go index e5280e3..88e4069 100644 --- a/adapters/gtest/results.go +++ b/adapters/gtest/results.go @@ -47,7 +47,12 @@ type gResults struct {    Testsuites []gTestsuites `json:"testsuites"`  } -func decodeResults(r io.Reader) []planr.TestResult { +type Result struct { +  id string +  result planr.TestResult +} + +func decodeResults(r io.Reader) []Result {    var results gResults    buf := bytes.Buffer{} @@ -59,14 +64,18 @@ func decodeResults(r io.Reader) []planr.TestResult {      log.Fatal(err)    } -  decoded := make([]planr.TestResult, 0) +  decoded := make([]Result, 0)    for _, suite := range results.Testsuites {      for _, test := range suite.Testsuite {        n := len(test.Failures) -      decoded = append(decoded, planr.TestResult { -        Pass: n == 0, +      decoded = append(decoded, Result{ +        id: suite.Name + "." + test.Name, +        result: planr.TestResult { +          Pass: n == 0, +        },        }) +      }    } | 
