summaryrefslogtreecommitdiff
path: root/libgo/go/flag/export_test.go
blob: b5e3243b310e6f7aa7e0f8430bdc042ebe4509f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// 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
}