]> Cypherpunks.ru repositories - gostls13.git/blob - test/linkx_run.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / linkx_run.go
1 // run
2
3 //go:build !nacl && !js && !wasip1 && gc
4
5 // Copyright 2014 The Go Authors. All rights reserved.
6 // Use of this source code is governed by a BSD-style
7 // license that can be found in the LICENSE file.
8
9 // Run the linkx test.
10
11 package main
12
13 import (
14         "bytes"
15         "fmt"
16         "os"
17         "os/exec"
18         "strings"
19 )
20
21 func main() {
22         // test(" ") // old deprecated & removed syntax
23         test("=") // new syntax
24 }
25
26 func test(sep string) {
27         // Successful run
28         cmd := exec.Command("go", "run", "-ldflags=-X main.tbd"+sep+"hello -X main.overwrite"+sep+"trumped -X main.nosuchsymbol"+sep+"neverseen", "linkx.go")
29         var out, errbuf bytes.Buffer
30         cmd.Stdout = &out
31         cmd.Stderr = &errbuf
32         err := cmd.Run()
33         if err != nil {
34                 fmt.Println(errbuf.String())
35                 fmt.Println(out.String())
36                 fmt.Println(err)
37                 os.Exit(1)
38         }
39
40         want := "hello\nhello\nhello\ntrumped\ntrumped\ntrumped\n"
41         got := out.String()
42         if got != want {
43                 fmt.Printf("got %q want %q\n", got, want)
44                 os.Exit(1)
45         }
46
47         // Issue 8810
48         cmd = exec.Command("go", "run", "-ldflags=-X main.tbd", "linkx.go")
49         _, err = cmd.CombinedOutput()
50         if err == nil {
51                 fmt.Println("-X linker flag should not accept keys without values")
52                 os.Exit(1)
53         }
54
55         // Issue 9621
56         cmd = exec.Command("go", "run", "-ldflags=-X main.b=false -X main.x=42", "linkx.go")
57         outx, err := cmd.CombinedOutput()
58         if err == nil {
59                 fmt.Println("-X linker flag should not overwrite non-strings")
60                 os.Exit(1)
61         }
62         outstr := string(outx)
63         if !strings.Contains(outstr, "main.b") {
64                 fmt.Printf("-X linker flag did not diagnose overwrite of main.b:\n%s\n", outstr)
65                 os.Exit(1)
66         }
67         if !strings.Contains(outstr, "main.x") {
68                 fmt.Printf("-X linker flag did not diagnose overwrite of main.x:\n%s\n", outstr)
69                 os.Exit(1)
70         }
71 }