service/dap: improve test coverage for evaluateName feature based on known vscode-go bugs (#2341)
* DAP test for github.com/golang/vscode-go/issues/1056 * DAP test for github.com/golang/vscode-go/issues/884 * DAP test for github.com/golang/vscode-go/issues/851 * DAP test for github.com/golang/vscode-go/issues/1053 * DAP test for github.com/golang/vscode-go/issues/1054 * Make DeepSource happy Co-authored-by: Polina Sokolova <polinasok@users.noreply.github.com>
This commit is contained in:
parent
8a8e540fa6
commit
98728d8fe1
@ -144,6 +144,7 @@ func main() {
|
||||
f1 := 3.0
|
||||
i3 := 3
|
||||
p1 := &i1
|
||||
pp1 := &p1
|
||||
s1 := []string{"one", "two", "three", "four", "five"}
|
||||
s3 := make([]int, 0, 6)
|
||||
a0 := [0]int{}
|
||||
@ -357,5 +358,5 @@ func main() {
|
||||
}
|
||||
|
||||
runtime.Breakpoint()
|
||||
fmt.Println(i1, i2, i3, p1, amb1, s1, s3, a0, a1, p2, p3, s2, as1, str1, f1, fn1, fn2, nilslice, nilptr, ch1, chnil, m1, mnil, m2, m3, m4, upnil, up1, i4, i5, i6, err1, err2, errnil, iface1, iface2, ifacenil, arr1, parr, cpx1, const1, iface3, iface4, recursive1, recursive1.x, iface5, iface2fn1, iface2fn2, bencharr, benchparr, mapinf, mainMenu, b, b2, sd, anonstruct1, anonstruct2, anoniface1, anonfunc, mapanonstruct1, ifacearr, efacearr, ni8, ni16, ni32, ni64, pinf, ninf, nan, zsvmap, zsslice, zsvar, tm, errtypednil, emptyslice, emptymap, byteslice, runeslice, bytearray, runearray, longstr, nilstruct, as2, as2.NonPointerRecieverMethod, s4, iface2map, issue1578, ll, unread, w2, w3, w4, w5)
|
||||
fmt.Println(i1, i2, i3, p1, pp1, amb1, s1, s3, a0, a1, p2, p3, s2, as1, str1, f1, fn1, fn2, nilslice, nilptr, ch1, chnil, m1, mnil, m2, m3, m4, upnil, up1, i4, i5, i6, err1, err2, errnil, iface1, iface2, ifacenil, arr1, parr, cpx1, const1, iface3, iface4, recursive1, recursive1.x, iface5, iface2fn1, iface2fn2, bencharr, benchparr, mapinf, mainMenu, b, b2, sd, anonstruct1, anonstruct2, anoniface1, anonfunc, mapanonstruct1, ifacearr, efacearr, ni8, ni16, ni32, ni64, pinf, ninf, nan, zsvmap, zsslice, zsvar, tm, errtypednil, emptyslice, emptymap, byteslice, runeslice, bytearray, runearray, longstr, nilstruct, as2, as2.NonPointerRecieverMethod, s4, iface2map, issue1578, ll, unread, w2, w3, w4, w5)
|
||||
}
|
||||
|
||||
@ -1139,6 +1139,20 @@ func TestScopesAndVariablesRequests2(t *testing.T) {
|
||||
expectVarRegex(t, err1, 0, "data", `err1\.\(data\)`, `<\*main\.astruct>\(0x[0-9a-f]+\)`, hasChildren)
|
||||
validateEvaluateName(t, client, err1, 0)
|
||||
}
|
||||
ref = expectVarRegex(t, locals, -1, "ptrinf", "ptrinf", `<\*interface {}>\(0x[0-9a-f]+\)`, hasChildren)
|
||||
if ref > 0 {
|
||||
client.VariablesRequest(ref)
|
||||
ptrinf_val := client.ExpectVariablesResponse(t)
|
||||
expectChildren(t, ptrinf_val, "*ptrinf", 1)
|
||||
ref = expectVarExact(t, ptrinf_val, 0, "", "(*ptrinf)", "<interface {}(**interface {})>", hasChildren)
|
||||
if ref > 0 {
|
||||
client.VariablesRequest(ref)
|
||||
ptrinf_val_data := client.ExpectVariablesResponse(t)
|
||||
expectChildren(t, ptrinf_val_data, "(*ptrinf).data", 1)
|
||||
expectVarRegex(t, ptrinf_val_data, 0, "data", `\(\*ptrinf\)\.\(data\)`, `<\*\*interface {}>\(0x[0-9a-f]+\)`, hasChildren)
|
||||
validateEvaluateName(t, client, ptrinf_val_data, 0)
|
||||
}
|
||||
}
|
||||
// reflect.Kind == Map
|
||||
expectVarExact(t, locals, -1, "mnil", "mnil", "nil <map[string]main.astruct>", noChildren)
|
||||
// key - scalar, value - compound
|
||||
@ -1217,7 +1231,21 @@ func TestScopesAndVariablesRequests2(t *testing.T) {
|
||||
}
|
||||
}
|
||||
expectVarExact(t, locals, -1, "emptymap", "emptymap", "<map[string]string> (length: 0)", noChildren)
|
||||
// reflect.Kind == Ptr - see testvariables
|
||||
// reflect.Kind == Ptr
|
||||
ref = expectVarRegex(t, locals, -1, "pp1", "pp1", `<\*\*int>\(0x[0-9a-f]+\)`, hasChildren)
|
||||
if ref > 0 {
|
||||
client.VariablesRequest(ref)
|
||||
pp1val := client.ExpectVariablesResponse(t)
|
||||
expectChildren(t, pp1val, "*pp1", 1)
|
||||
ref = expectVarRegex(t, pp1val, 0, "", `\(\*pp1\)`, `<\*int>\(0x[0-9a-f]+\)`, hasChildren)
|
||||
if ref > 0 {
|
||||
client.VariablesRequest(ref)
|
||||
pp1valval := client.ExpectVariablesResponse(t)
|
||||
expectChildren(t, pp1valval, "*(*pp1)", 1)
|
||||
expectVarExact(t, pp1valval, 0, "", "(*(*pp1))", "1", noChildren)
|
||||
validateEvaluateName(t, client, pp1valval, 0)
|
||||
}
|
||||
}
|
||||
// reflect.Kind == Slice
|
||||
ref = expectVarExact(t, locals, -1, "zsslice", "zsslice", "<[]struct {}> (length: 3, cap: 3)", hasChildren)
|
||||
if ref > 0 {
|
||||
@ -1255,6 +1283,63 @@ func TestScopesAndVariablesRequests2(t *testing.T) {
|
||||
m1 := client.ExpectVariablesResponse(t)
|
||||
expectChildren(t, m1, "m1", 64) // TODO(polina): should be 66.
|
||||
}
|
||||
|
||||
ref = expectVarExact(t, locals, -1, "c1", "c1", "<main.cstruct>", hasChildren)
|
||||
if ref > 0 {
|
||||
client.VariablesRequest(ref)
|
||||
c1 := client.ExpectVariablesResponse(t)
|
||||
expectChildren(t, c1, "c1", 2)
|
||||
ref = expectVarExact(t, c1, 1, "sa", "c1.sa", "<[]*main.astruct> (length: 3, cap: 3)", hasChildren)
|
||||
if ref > 0 {
|
||||
client.VariablesRequest(ref)
|
||||
c1sa := client.ExpectVariablesResponse(t)
|
||||
expectChildren(t, c1sa, "c1.sa", 3)
|
||||
ref = expectVarRegex(t, c1sa, 0, `\[0\]`, `c1\.sa\[0\]`, `<\*main\.astruct>\(0x[0-9a-f]+\)`, hasChildren)
|
||||
if ref > 0 {
|
||||
client.VariablesRequest(ref)
|
||||
c1sa0 := client.ExpectVariablesResponse(t)
|
||||
expectChildren(t, c1sa0, "c1.sa[0]", 1)
|
||||
// TODO(polina): there should be a child here once we support auto loading
|
||||
expectVarExact(t, c1sa0, 0, "", "(*c1.sa[0])", "<main.astruct>", noChildren)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ref = expectVarExact(t, locals, -1, "aas", "aas", "<[]main.a> (length: 1, cap: 1)", hasChildren)
|
||||
if ref > 0 {
|
||||
client.VariablesRequest(ref)
|
||||
aas := client.ExpectVariablesResponse(t)
|
||||
expectChildren(t, aas, "aas", 1)
|
||||
ref = expectVarExact(t, aas, 0, "[0]", "aas[0]", "<main.a>", hasChildren)
|
||||
if ref > 0 {
|
||||
client.VariablesRequest(ref)
|
||||
aas0 := client.ExpectVariablesResponse(t)
|
||||
expectChildren(t, aas0, "aas[0]", 1)
|
||||
ref = expectVarExact(t, aas0, 0, "aas", "aas[0].aas", "<[]main.a> (length: 1, cap: 1)", hasChildren)
|
||||
if ref > 0 {
|
||||
client.VariablesRequest(ref)
|
||||
aas0aas := client.ExpectVariablesResponse(t)
|
||||
expectChildren(t, aas0aas, "aas[0].aas", 1)
|
||||
// TODO(polina): there should be a child here once we support auto loading - test for "aas[0].aas[0].aas"
|
||||
expectVarExact(t, aas0aas, 0, "[0]", "aas[0].aas[0]", "<main.a>", noChildren)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ref = expectVarExact(t, locals, -1, "tm", "tm", "<main.truncatedMap>", hasChildren)
|
||||
if ref > 0 {
|
||||
client.VariablesRequest(ref)
|
||||
tm := client.ExpectVariablesResponse(t)
|
||||
expectChildren(t, tm, "tm", 1)
|
||||
ref = expectVarExact(t, tm, 0, "v", "tm.v", "<[]map[string]main.astruct> (length: 1, cap: 1)", hasChildren)
|
||||
if ref > 0 {
|
||||
client.VariablesRequest(ref)
|
||||
tm_v := client.ExpectVariablesResponse(t)
|
||||
expectChildren(t, tm_v, "tm.v", 1)
|
||||
// TODO(polina): there should be children here once we support auto loading - test for "tm.v[0]["gutters"]"
|
||||
expectVarExact(t, tm_v, 0, "[0]", "tm.v[0]", "<map[string]main.astruct> (length: 66)", noChildren)
|
||||
}
|
||||
}
|
||||
},
|
||||
disconnect: true,
|
||||
}})
|
||||
|
||||
Loading…
Reference in New Issue
Block a user