From 18daf0b6019ec786ff6350ed662f66d641617942 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Sun, 23 Feb 2014 09:21:11 -0800 Subject: [PATCH] buildinfo: add func TestingLinked Change-Id: I664f72ec04748079929d0ad96e24b33bc14c6c77 --- pkg/buildinfo/buildinfo.go | 27 ++++++++++++++++++++ pkg/buildinfo/buildinfo_test.go | 44 +++++++++++++++++++++++++++++++++ pkg/buildinfo/testinglinked.go | 27 ++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 pkg/buildinfo/buildinfo_test.go create mode 100644 pkg/buildinfo/testinglinked.go diff --git a/pkg/buildinfo/buildinfo.go b/pkg/buildinfo/buildinfo.go index 23e758708..8df1981ed 100644 --- a/pkg/buildinfo/buildinfo.go +++ b/pkg/buildinfo/buildinfo.go @@ -1,3 +1,19 @@ +/* +Copyright 2014 The Camlistore Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + // Package buildinfo provides information about the current build. package buildinfo @@ -15,3 +31,14 @@ func Version() string { } return "unknown" } + +var testingLinked func() bool + +// TestingLinked reports whether the "testing" package is linked into the binary. +// It always returns false for Go 1.1. +func TestingLinked() bool { + if testingLinked == nil { + return false + } + return testingLinked() +} diff --git a/pkg/buildinfo/buildinfo_test.go b/pkg/buildinfo/buildinfo_test.go new file mode 100644 index 000000000..1ce1947b9 --- /dev/null +++ b/pkg/buildinfo/buildinfo_test.go @@ -0,0 +1,44 @@ +/* +Copyright 2014 The Camlistore Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package buildinfo + +import ( + "go/build" + "testing" +) + +func TestTestingLinked(t *testing.T) { + if !isGo12() { + t.Skip("skipping test for Go 1.1") + } + if testingLinked == nil { + t.Fatal("go1.2+ but testingLinked is nil") + } + if !testingLinked() { + t.Error("testingLinked = false; want true") + } +} + +// isGo12 reports whether the Go version is 1.2 or higher +func isGo12() bool { + for _, v := range build.Default.ReleaseTags { + if v == "go1.2" { + return true + } + } + return false +} diff --git a/pkg/buildinfo/testinglinked.go b/pkg/buildinfo/testinglinked.go new file mode 100644 index 000000000..9610836ab --- /dev/null +++ b/pkg/buildinfo/testinglinked.go @@ -0,0 +1,27 @@ +// +build go1.2 + +/* +Copyright 2014 The Camlistore Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package buildinfo + +import "flag" + +func init() { + testingLinked = func() bool { + return flag.CommandLine.Lookup("test.v") != nil + } +}