// Copyright 2022 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. //go:build SELECT_USING_THIS_TAG package cfile import "testing" var funcInvoked bool //go:noinline func thisFunctionOnlyCalledFromSnapshotTest(n int) int { if funcInvoked { panic("bad") } funcInvoked = true // Contents here not especially important, just so long as we // have some statements. t := 0 for i := 0; i < n; i++ { for j := 0; j < i; j++ { t += i ^ j } } return t } // Tests runtime/coverage.snapshot() directly. Note that if // coverage is not enabled, the hook is designed to just return // zero. func TestCoverageSnapshotImpl(t *testing.T) { C1 := Snapshot() thisFunctionOnlyCalledFromSnapshotTest(15) C2 := Snapshot() cond := "C1 > C2" val := C1 > C2 if testing.CoverMode() != "" { cond = "C1 >= C2" val = C1 >= C2 } t.Logf("%f %f\n", C1, C2) if val { t.Errorf("erroneous snapshots, %s = true C1=%f C2=%f", cond, C1, C2) } }