package fstestutil import ( "flag" "log" "strconv" "bazil.org/fuse" ) type flagDebug bool var debug flagDebug var _ = flag.Value(&debug) func (f *flagDebug) IsBoolFlag() bool { return true } func nop(msg interface{}) {} func (f *flagDebug) Set(s string) error { v, err := strconv.ParseBool(s) if err != nil { return err } *f = flagDebug(v) if v { fuse.Debug = logMsg } else { fuse.Debug = nop } return nil } func (f *flagDebug) String() string { return strconv.FormatBool(bool(*f)) } func logMsg(msg interface{}) { log.Printf("FUSE: %s\n", msg) } func init() { flag.Var(&debug, "fuse.debug", "log FUSE processing details") } // DebugByDefault changes the default of the `-fuse.debug` flag to // true. // // This package registers a command line flag `-fuse.debug` and when // run with that flag (and activated inside the tests), logs FUSE // debug messages. // // This is disabled by default, as most callers probably won't care // about FUSE details. Use DebugByDefault for tests where you'd // normally be passing `-fuse.debug` all the time anyway. // // Call from an init function. func DebugByDefault() { f := flag.Lookup("fuse.debug") f.DefValue = "true" f.Value.Set(f.DefValue) }