1// Copyright 2022 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package coverage
6
7import (
8	"internal/coverage/cfile"
9	"io"
10)
11
12// initHook is invoked from main.init in programs built with -cover.
13// The call is emitted by the compiler.
14func initHook(istest bool) {
15	cfile.InitHook(istest)
16}
17
18// WriteMetaDir writes a coverage meta-data file for the currently
19// running program to the directory specified in 'dir'. An error will
20// be returned if the operation can't be completed successfully (for
21// example, if the currently running program was not built with
22// "-cover", or if the directory does not exist).
23func WriteMetaDir(dir string) error {
24	return cfile.WriteMetaDir(dir)
25}
26
27// WriteMeta writes the meta-data content (the payload that would
28// normally be emitted to a meta-data file) for the currently running
29// program to the writer 'w'. An error will be returned if the
30// operation can't be completed successfully (for example, if the
31// currently running program was not built with "-cover", or if a
32// write fails).
33func WriteMeta(w io.Writer) error {
34	return cfile.WriteMeta(w)
35}
36
37// WriteCountersDir writes a coverage counter-data file for the
38// currently running program to the directory specified in 'dir'. An
39// error will be returned if the operation can't be completed
40// successfully (for example, if the currently running program was not
41// built with "-cover", or if the directory does not exist). The
42// counter data written will be a snapshot taken at the point of the
43// call.
44func WriteCountersDir(dir string) error {
45	return cfile.WriteCountersDir(dir)
46}
47
48// WriteCounters writes coverage counter-data content for the
49// currently running program to the writer 'w'. An error will be
50// returned if the operation can't be completed successfully (for
51// example, if the currently running program was not built with
52// "-cover", or if a write fails). The counter data written will be a
53// snapshot taken at the point of the invocation.
54func WriteCounters(w io.Writer) error {
55	return cfile.WriteCounters(w)
56}
57
58// ClearCounters clears/resets all coverage counter variables in the
59// currently running program. It returns an error if the program in
60// question was not built with the "-cover" flag. Clearing of coverage
61// counters is also not supported for programs not using atomic
62// counter mode (see more detailed comments below for the rationale
63// here).
64func ClearCounters() error {
65	return cfile.ClearCounters()
66}
67