tests: Add test for #149, fixed TestNextGeneral on tip
The go compiler changed and break statements no longer get compiled to nothing when -N is passed: https://go-review.googlesource.com/#/c/19848/ https://go-review.googlesource.com/#/c/19854/
This commit is contained in:
parent
216616c34e
commit
49a0a121e0
11
_fixtures/break.go
Normal file
11
_fixtures/break.go
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
i := 0
|
||||||
|
for {
|
||||||
|
i++
|
||||||
|
if i > 10 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -16,7 +16,7 @@ type GoVersion struct {
|
|||||||
RC int
|
RC int
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseVersionString(ver string) (GoVersion, bool) {
|
func ParseVersionString(ver string) (GoVersion, bool) {
|
||||||
var r GoVersion
|
var r GoVersion
|
||||||
var err1, err2, err3 error
|
var err1, err2, err3 error
|
||||||
|
|
||||||
|
@ -813,7 +813,7 @@ func (dbp *Process) getGoInformation() (ver GoVersion, isextld bool, err error)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ver, ok := parseVersionString(constant.StringVal(vv.Value))
|
ver, ok := ParseVersionString(constant.StringVal(vv.Value))
|
||||||
if !ok {
|
if !ok {
|
||||||
err = fmt.Errorf("Could not parse version number: %v\n", vv.Value)
|
err = fmt.Errorf("Could not parse version number: %v\n", vv.Value)
|
||||||
return
|
return
|
||||||
|
@ -308,23 +308,49 @@ func testnext(program string, testcases []nextTest, initialLocation string, t *t
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestNextGeneral(t *testing.T) {
|
func TestNextGeneral(t *testing.T) {
|
||||||
testcases := []nextTest{
|
var testcases []nextTest
|
||||||
{17, 19},
|
|
||||||
{19, 20},
|
ver, _ := ParseVersionString(runtime.Version())
|
||||||
{20, 23},
|
|
||||||
{23, 24},
|
if ver.Major < 0 || ver.AfterOrEqual(GoVersion{1, 7, 0, 0, 0}) {
|
||||||
{24, 26},
|
testcases = []nextTest{
|
||||||
{26, 31},
|
{17, 19},
|
||||||
{31, 23},
|
{19, 20},
|
||||||
{23, 24},
|
{20, 23},
|
||||||
{24, 26},
|
{23, 24},
|
||||||
{26, 31},
|
{24, 26},
|
||||||
{31, 23},
|
{26, 31},
|
||||||
{23, 24},
|
{31, 23},
|
||||||
{24, 26},
|
{23, 24},
|
||||||
{26, 27},
|
{24, 26},
|
||||||
{27, 34},
|
{26, 31},
|
||||||
|
{31, 23},
|
||||||
|
{23, 24},
|
||||||
|
{24, 26},
|
||||||
|
{26, 27},
|
||||||
|
{27, 28},
|
||||||
|
{28, 34},
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
testcases = []nextTest{
|
||||||
|
{17, 19},
|
||||||
|
{19, 20},
|
||||||
|
{20, 23},
|
||||||
|
{23, 24},
|
||||||
|
{24, 26},
|
||||||
|
{26, 31},
|
||||||
|
{31, 23},
|
||||||
|
{23, 24},
|
||||||
|
{24, 26},
|
||||||
|
{26, 31},
|
||||||
|
{31, 23},
|
||||||
|
{23, 24},
|
||||||
|
{24, 26},
|
||||||
|
{26, 27},
|
||||||
|
{27, 34},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testnext("testnextprog", testcases, "main.testnext", t)
|
testnext("testnextprog", testcases, "main.testnext", t)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -845,7 +871,7 @@ func TestContinueMulti(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func versionAfterOrEqual(t *testing.T, verStr string, ver GoVersion) {
|
func versionAfterOrEqual(t *testing.T, verStr string, ver GoVersion) {
|
||||||
pver, ok := parseVersionString(verStr)
|
pver, ok := ParseVersionString(verStr)
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Fatalf("Could not parse version string <%s>", verStr)
|
t.Fatalf("Could not parse version string <%s>", verStr)
|
||||||
}
|
}
|
||||||
@ -861,7 +887,7 @@ func TestParseVersionString(t *testing.T) {
|
|||||||
versionAfterOrEqual(t, "go1.4.2", GoVersion{1, 4, 2, 0, 0})
|
versionAfterOrEqual(t, "go1.4.2", GoVersion{1, 4, 2, 0, 0})
|
||||||
versionAfterOrEqual(t, "go1.5beta2", GoVersion{1, 5, -1, 2, 0})
|
versionAfterOrEqual(t, "go1.5beta2", GoVersion{1, 5, -1, 2, 0})
|
||||||
versionAfterOrEqual(t, "go1.5rc2", GoVersion{1, 5, -1, 0, 2})
|
versionAfterOrEqual(t, "go1.5rc2", GoVersion{1, 5, -1, 0, 2})
|
||||||
ver, ok := parseVersionString("devel +17efbfc Tue Jul 28 17:39:19 2015 +0000 linux/amd64")
|
ver, ok := ParseVersionString("devel +17efbfc Tue Jul 28 17:39:19 2015 +0000 linux/amd64")
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Fatalf("Could not parse devel version string")
|
t.Fatalf("Could not parse devel version string")
|
||||||
}
|
}
|
||||||
@ -1597,3 +1623,15 @@ func TestPackageVariables(t *testing.T) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIssue149(t *testing.T) {
|
||||||
|
ver, _ := ParseVersionString(runtime.Version())
|
||||||
|
if ver.Major > 0 && !ver.AfterOrEqual(GoVersion{1, 7, 0, 0, 0}) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// setting breakpoint on break statement
|
||||||
|
withTestProcess("break", t, func(p *Process, fixture protest.Fixture) {
|
||||||
|
_, err := p.FindFileLocation(fixture.Source, 8)
|
||||||
|
assertNoError(err, t, "FindFileLocation()")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
package proc
|
package proc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"syscall"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
"syscall"
|
|
||||||
|
|
||||||
protest "github.com/derekparker/delve/proc/test"
|
protest "github.com/derekparker/delve/proc/test"
|
||||||
)
|
)
|
||||||
|
@ -14,6 +14,7 @@ import (
|
|||||||
|
|
||||||
protest "github.com/derekparker/delve/proc/test"
|
protest "github.com/derekparker/delve/proc/test"
|
||||||
|
|
||||||
|
"github.com/derekparker/delve/proc"
|
||||||
"github.com/derekparker/delve/service"
|
"github.com/derekparker/delve/service"
|
||||||
"github.com/derekparker/delve/service/api"
|
"github.com/derekparker/delve/service/api"
|
||||||
"github.com/derekparker/delve/service/rpc"
|
"github.com/derekparker/delve/service/rpc"
|
||||||
@ -253,23 +254,49 @@ func testnext(testcases []nextTest, initialLocation string, t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestNextGeneral(t *testing.T) {
|
func TestNextGeneral(t *testing.T) {
|
||||||
testcases := []nextTest{
|
var testcases []nextTest
|
||||||
{17, 19},
|
|
||||||
{19, 20},
|
ver, _ := proc.ParseVersionString(runtime.Version())
|
||||||
{20, 23},
|
|
||||||
{23, 24},
|
if ver.Major < 0 || ver.AfterOrEqual(proc.GoVersion{1, 7, 0, 0, 0}) {
|
||||||
{24, 26},
|
testcases = []nextTest{
|
||||||
{26, 31},
|
{17, 19},
|
||||||
{31, 23},
|
{19, 20},
|
||||||
{23, 24},
|
{20, 23},
|
||||||
{24, 26},
|
{23, 24},
|
||||||
{26, 31},
|
{24, 26},
|
||||||
{31, 23},
|
{26, 31},
|
||||||
{23, 24},
|
{31, 23},
|
||||||
{24, 26},
|
{23, 24},
|
||||||
{26, 27},
|
{24, 26},
|
||||||
{27, 34},
|
{26, 31},
|
||||||
|
{31, 23},
|
||||||
|
{23, 24},
|
||||||
|
{24, 26},
|
||||||
|
{26, 27},
|
||||||
|
{27, 28},
|
||||||
|
{28, 34},
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
testcases = []nextTest{
|
||||||
|
{17, 19},
|
||||||
|
{19, 20},
|
||||||
|
{20, 23},
|
||||||
|
{23, 24},
|
||||||
|
{24, 26},
|
||||||
|
{26, 31},
|
||||||
|
{31, 23},
|
||||||
|
{23, 24},
|
||||||
|
{24, 26},
|
||||||
|
{26, 31},
|
||||||
|
{31, 23},
|
||||||
|
{23, 24},
|
||||||
|
{24, 26},
|
||||||
|
{26, 27},
|
||||||
|
{27, 34},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testnext(testcases, "main.testnext", t)
|
testnext(testcases, "main.testnext", t)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user