# Verify that go bug creates the appropriate URL issue body

[!linux] skip

go install
env BROWSER=$GOPATH/bin/browser
go bug
exists $TMPDIR/browser
grep '^go version' $TMPDIR/browser
[!gccgo] grep '^GOROOT/bin/go version: go version' $TMPDIR/browser
[!gccgo] grep '^GOROOT/bin/go tool compile -V: compile version' $TMPDIR/browser
grep '^uname -sr: Linux' $TMPDIR/browser

-- go.mod --
module browser

-- main.go --
package main

import (
	"fmt"
	"net/url"
	"os"
	"path/filepath"
)

func main() {
	u, err := url.Parse(os.Args[1])
	if err != nil {
		panic(err)
	}
	body, err := url.PathUnescape(u.Query().Get("body"))
	if err != nil {
		panic(err)
	}
	out := filepath.Join(os.TempDir(), "browser")
	f, err := os.Create(out)
	if err != nil {
		panic(err)
	}
	fmt.Fprintln(f, body)
	if err := f.Close(); err != nil {
		panic(err)
	}
}

