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