summaryrefslogtreecommitdiffstats
path: root/test/linkx_run.go
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-16 19:23:18 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-16 19:23:18 +0000
commit43a123c1ae6613b3efeed291fa552ecd909d3acf (patch)
treefd92518b7024bc74031f78a1cf9e454b65e73665 /test/linkx_run.go
parentInitial commit. (diff)
downloadgolang-1.20-43a123c1ae6613b3efeed291fa552ecd909d3acf.tar.xz
golang-1.20-43a123c1ae6613b3efeed291fa552ecd909d3acf.zip
Adding upstream version 1.20.14.upstream/1.20.14upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/linkx_run.go')
-rw-r--r--test/linkx_run.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/test/linkx_run.go b/test/linkx_run.go
new file mode 100644
index 0000000..ccfc3a9
--- /dev/null
+++ b/test/linkx_run.go
@@ -0,0 +1,70 @@
+// +build !nacl,!js,gc
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Run the linkx test.
+
+package main
+
+import (
+ "bytes"
+ "fmt"
+ "os"
+ "os/exec"
+ "strings"
+)
+
+func main() {
+ // test(" ") // old deprecated & removed syntax
+ test("=") // new syntax
+}
+
+func test(sep string) {
+ // Successful run
+ cmd := exec.Command("go", "run", "-ldflags=-X main.tbd"+sep+"hello -X main.overwrite"+sep+"trumped -X main.nosuchsymbol"+sep+"neverseen", "linkx.go")
+ var out, errbuf bytes.Buffer
+ cmd.Stdout = &out
+ cmd.Stderr = &errbuf
+ err := cmd.Run()
+ if err != nil {
+ fmt.Println(errbuf.String())
+ fmt.Println(out.String())
+ fmt.Println(err)
+ os.Exit(1)
+ }
+
+ want := "hello\nhello\nhello\ntrumped\ntrumped\ntrumped\n"
+ got := out.String()
+ if got != want {
+ fmt.Printf("got %q want %q\n", got, want)
+ os.Exit(1)
+ }
+
+ // Issue 8810
+ cmd = exec.Command("go", "run", "-ldflags=-X main.tbd", "linkx.go")
+ _, err = cmd.CombinedOutput()
+ if err == nil {
+ fmt.Println("-X linker flag should not accept keys without values")
+ os.Exit(1)
+ }
+
+ // Issue 9621
+ cmd = exec.Command("go", "run", "-ldflags=-X main.b=false -X main.x=42", "linkx.go")
+ outx, err := cmd.CombinedOutput()
+ if err == nil {
+ fmt.Println("-X linker flag should not overwrite non-strings")
+ os.Exit(1)
+ }
+ outstr := string(outx)
+ if !strings.Contains(outstr, "main.b") {
+ fmt.Printf("-X linker flag did not diagnose overwrite of main.b:\n%s\n", outstr)
+ os.Exit(1)
+ }
+ if !strings.Contains(outstr, "main.x") {
+ fmt.Printf("-X linker flag did not diagnose overwrite of main.x:\n%s\n", outstr)
+ os.Exit(1)
+ }
+}