// Copyright 2010 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 flag import "os" // Additional routines compiled into the package only during testing. // ResetForTesting clears all flag state and sets the usage function as directed. // After calling ResetForTesting, parse errors in flag handling will panic rather // than exit the program. func ResetForTesting(usage func()) { flags = &allFlags{make(map[string]*Flag), make(map[string]*Flag), os.Args[1:]} Usage = usage panicOnError = true } // ParseForTesting parses the flag state using the provided arguments. It // should be called after 1) ResetForTesting and 2) setting up the new flags. // The return value reports whether the parse was error-free. func ParseForTesting(args []string) (result bool) { defer func() { if recover() != nil { result = false } }() os.Args = args Parse() return true }