]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: skip TestLldbPython when lldb is too old
authorAlberto Donizetti <alb.donizetti@gmail.com>
Wed, 3 Oct 2018 19:11:31 +0000 (21:11 +0200)
committerAlberto Donizetti <alb.donizetti@gmail.com>
Thu, 4 Oct 2018 18:49:32 +0000 (18:49 +0000)
The TestLldbPython test is known to fail with very old lldb releases
(3.8 and older). Skip the test when the lldb found on the system is
too old.

Fixes #22299

Change-Id: I8f78d6c0d995118f806dae87f3f04a9726473116
Reviewed-on: https://go-review.googlesource.com/c/139397
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/runtime/runtime-lldb_test.go

index fe3a0eb90d8c334f006a041cfae5802bafb716f6..c74e6ef0296368970c0815542d8d317cbf2fac28 100644 (file)
@@ -10,7 +10,9 @@ import (
        "os"
        "os/exec"
        "path/filepath"
+       "regexp"
        "runtime"
+       "strconv"
        "strings"
        "testing"
 )
@@ -25,6 +27,27 @@ func checkLldbPython(t *testing.T) {
        }
        lldbPath = strings.TrimSpace(string(out))
 
+       // Check lldb version. The test is known to fail with 3.8 or older
+       // (see Issue #22299).
+       cmd = exec.Command("lldb", "--version")
+       out, err = cmd.CombinedOutput()
+
+       // lldb --version should print "lldb version a.b.c"
+       re := regexp.MustCompile(` ([[:digit:]]+)\.([[:digit:]]+)`)
+       lldbVersion := re.FindStringSubmatch(string(out))
+       if len(lldbVersion) != 3 {
+               t.Errorf("bad lldb --version output: %s", out)
+       }
+       major, err1 := strconv.Atoi(lldbVersion[1])
+       minor, err2 := strconv.Atoi(lldbVersion[2])
+       if err1 != nil || err2 != nil {
+               t.Errorf("bad lldb --version output: %s", out)
+       }
+
+       if (major < 3) || (major == 3 && minor < 9) {
+               t.Skipf("skipping because lldb version %v.%v is too old (need >= 3.9)", major, minor)
+       }
+
        cmd = exec.Command("/usr/bin/python2.7", "-c", "import sys;sys.path.append(sys.argv[1]);import lldb; print('go lldb python support')", lldbPath)
        out, err = cmd.CombinedOutput()