| // 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. | |
| // Package coverage contains APIs for writing coverage profile data at runtime | |
| // from long-running and/or server programs that do not terminate via [os.Exit]. | |
| package coverage | |
| import ( | |
| "internal/coverage/cfile" | |
| "io" | |
| ) | |
| // initHook is invoked from main.init in programs built with -cover. | |
| // The call is emitted by the compiler. | |
| func initHook(istest bool) { | |
| cfile.InitHook(istest) | |
| } | |
| // WriteMetaDir writes a coverage meta-data file for the currently | |
| // running program to the directory specified in 'dir'. An error will | |
| // be returned if the operation can't be completed successfully (for | |
| // example, if the currently running program was not built with | |
| // "-cover", or if the directory does not exist). | |
| func WriteMetaDir(dir string) error { | |
| return cfile.WriteMetaDir(dir) | |
| } | |
| // WriteMeta writes the meta-data content (the payload that would | |
| // normally be emitted to a meta-data file) for the currently running | |
| // program to the writer 'w'. An error will be returned if the | |
| // operation can't be completed successfully (for example, if the | |
| // currently running program was not built with "-cover", or if a | |
| // write fails). | |
| func WriteMeta(w io.Writer) error { | |
| return cfile.WriteMeta(w) | |
| } | |
| // WriteCountersDir writes a coverage counter-data file for the | |
| // currently running program to the directory specified in 'dir'. An | |
| // error will be returned if the operation can't be completed | |
| // successfully (for example, if the currently running program was not | |
| // built with "-cover", or if the directory does not exist). The | |
| // counter data written will be a snapshot taken at the point of the | |
| // call. | |
| func WriteCountersDir(dir string) error { | |
| return cfile.WriteCountersDir(dir) | |
| } | |
| // WriteCounters writes coverage counter-data content for the | |
| // currently running program to the writer 'w'. An error will be | |
| // returned if the operation can't be completed successfully (for | |
| // example, if the currently running program was not built with | |
| // "-cover", or if a write fails). The counter data written will be a | |
| // snapshot taken at the point of the invocation. | |
| func WriteCounters(w io.Writer) error { | |
| return cfile.WriteCounters(w) | |
| } | |
| // ClearCounters clears/resets all coverage counter variables in the | |
| // currently running program. It returns an error if the program in | |
| // question was not built with the "-cover" flag. Clearing of coverage | |
| // counters is also not supported for programs not using atomic | |
| // counter mode (see more detailed comments below for the rationale | |
| // here). | |
| func ClearCounters() error { | |
| return cfile.ClearCounters() | |
| } | |