]> Cypherpunks.ru repositories - gostls13.git/blobdiff - test/linkx_run.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / linkx_run.go
index 5b67ce7d3de9f005b2196887bd3ea8c1836e392b..15f7c9ab4f93451dad9100b2bdef1bd9b62a7b40 100644 (file)
@@ -1,6 +1,7 @@
-// +build !nacl
 // run
 
+//go:build !nacl && !js && !wasip1 && gc
+
 // 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.
 package main
 
 import (
+       "bytes"
        "fmt"
        "os"
        "os/exec"
+       "strings"
 )
 
 func main() {
-       cmd := exec.Command("go", "run", "-ldflags=-X main.tbd hello -X main.overwrite trumped", "linkx.go")
-       out, err := cmd.CombinedOutput()
+       // 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(string(out))
+               fmt.Println(errbuf.String())
+               fmt.Println(out.String())
                fmt.Println(err)
                os.Exit(1)
        }
 
-       want := "hello\ntrumped\n"
-       got := string(out)
+       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)
+       }
 }