Mercurial > hg > CbC > CbC_gcc
comparison libgo/go/runtime/checkptr_test.go @ 152:2b5abeee2509
update gcc11
author | anatofuz |
---|---|
date | Mon, 25 May 2020 07:50:57 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
145:1830386684a0 | 152:2b5abeee2509 |
---|---|
1 // Copyright 2020 The Go Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style | |
3 // license that can be found in the LICENSE file. | |
4 | |
5 package runtime_test | |
6 | |
7 import ( | |
8 "internal/testenv" | |
9 "os/exec" | |
10 "runtime" | |
11 "strings" | |
12 "testing" | |
13 ) | |
14 | |
15 func TestCheckPtr(t *testing.T) { | |
16 if runtime.Compiler == "gccgo" { | |
17 t.Skip("gccgo does not have -d=checkptr") | |
18 } | |
19 t.Parallel() | |
20 testenv.MustHaveGoRun(t) | |
21 | |
22 exe, err := buildTestProg(t, "testprog", "-gcflags=all=-d=checkptr=1") | |
23 if err != nil { | |
24 t.Fatal(err) | |
25 } | |
26 | |
27 testCases := []struct { | |
28 cmd string | |
29 want string | |
30 }{ | |
31 {"CheckPtrAlignmentPtr", "fatal error: checkptr: unsafe pointer conversion\n"}, | |
32 {"CheckPtrAlignmentNoPtr", ""}, | |
33 {"CheckPtrArithmetic", "fatal error: checkptr: unsafe pointer arithmetic\n"}, | |
34 {"CheckPtrSize", "fatal error: checkptr: unsafe pointer conversion\n"}, | |
35 {"CheckPtrSmall", "fatal error: checkptr: unsafe pointer arithmetic\n"}, | |
36 } | |
37 | |
38 for _, tc := range testCases { | |
39 tc := tc | |
40 t.Run(tc.cmd, func(t *testing.T) { | |
41 t.Parallel() | |
42 got, err := testenv.CleanCmdEnv(exec.Command(exe, tc.cmd)).CombinedOutput() | |
43 if err != nil { | |
44 t.Log(err) | |
45 } | |
46 if tc.want == "" { | |
47 if len(got) > 0 { | |
48 t.Errorf("output:\n%s\nwant no output", got) | |
49 } | |
50 return | |
51 } | |
52 if !strings.HasPrefix(string(got), tc.want) { | |
53 t.Errorf("output:\n%s\n\nwant output starting with: %s", got, tc.want) | |
54 } | |
55 }) | |
56 } | |
57 } |