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