-
Notifications
You must be signed in to change notification settings - Fork 17.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cmd/go: convert TestGoTestRaceInstallsCgo to script framework
Part of converting all tests to script framework to improve test parallelism. Updates #36320 Updates #17751 Change-Id: I9a99aa5d37300c83a2f95fb906949cb4c1d5356f Reviewed-on: https://go-review.googlesource.com/c/go/+/214426 Reviewed-by: Jay Conrod <[email protected]>
- Loading branch information
Showing
2 changed files
with
91 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
# Tests Issue #10500 | ||
|
||
[!race] skip | ||
|
||
env GOBIN=$WORK/bin | ||
go install mtime sametime | ||
|
||
go tool -n cgo | ||
cp stdout cgopath.txt | ||
exec $GOBIN/mtime cgopath.txt # get the mtime of the file whose name is in cgopath.txt | ||
cp stdout cgotime_before.txt | ||
|
||
# For this test, we don't actually care whether 'go test -race -i' succeeds. | ||
# It may fail, for example, if GOROOT was installed from source as root and | ||
# is now read-only. | ||
# We only care that — regardless of whether it succeeds — it does not | ||
# overwrite cmd/cgo. | ||
go test -race -i runtime/race | ||
|
||
exec $GOBIN/mtime cgopath.txt # get the mtime of the file whose name is in cgopath.txt | ||
cp stdout cgotime_after.txt | ||
exec $GOBIN/sametime cgotime_before.txt cgotime_after.txt | ||
|
||
-- mtime/mtime.go -- | ||
package main | ||
|
||
import ( | ||
"io/ioutil" | ||
"encoding/json" | ||
"fmt" | ||
"os" | ||
"strings" | ||
) | ||
|
||
func main() { | ||
b, err := ioutil.ReadFile(os.Args[1]) | ||
if err != nil { | ||
fmt.Fprintln(os.Stderr, err) | ||
os.Exit(1) | ||
} | ||
filename := strings.TrimSpace(string(b)) | ||
info, err := os.Stat(filename) | ||
if err != nil { | ||
fmt.Fprintln(os.Stderr, err) | ||
os.Exit(1) | ||
} | ||
if err := json.NewEncoder(os.Stdout).Encode(info.ModTime()); err != nil { | ||
fmt.Fprintln(os.Stderr, err) | ||
os.Exit(1) | ||
} | ||
} | ||
-- sametime/sametime.go -- | ||
package main | ||
|
||
import ( | ||
"encoding/json" | ||
"fmt" | ||
"io/ioutil" | ||
"os" | ||
"time" | ||
) | ||
|
||
|
||
func main() { | ||
var t1 time.Time | ||
b1, err := ioutil.ReadFile(os.Args[1]) | ||
if err != nil { | ||
fmt.Fprintln(os.Stderr, err) | ||
os.Exit(1) | ||
} | ||
if err := json.Unmarshal(b1, &t1); err != nil { | ||
fmt.Fprintln(os.Stderr, err) | ||
os.Exit(1) | ||
} | ||
|
||
var t2 time.Time | ||
b2, err := ioutil.ReadFile(os.Args[2]) | ||
if err != nil { | ||
fmt.Fprintln(os.Stderr, err) | ||
os.Exit(1) | ||
} | ||
if err := json.Unmarshal(b2, &t2); err != nil { | ||
fmt.Fprintln(os.Stderr, err) | ||
os.Exit(1) | ||
} | ||
|
||
if !t1.Equal(t2) { | ||
fmt.Fprintf(os.Stderr, "time in %v (%v) is not the same as time in %v (%v)", os.Args[1], t1, os.Args[2], t2) | ||
os.Exit(1) | ||
} | ||
} |