Go Test Flag: Flag Provided but Not Defined

Hi I am using a flag when testing in go:
file_test.go var ip = flag.String("ip", "noip", "test")

I am only using this in one test file. And it works fine when only testing that one test file, but when I run: go test ./... -ip 127.0.0.1 alle of the other test file saying: flag provided but not defined.

Have you seen this?

Regards

3 Answers

flag.Parse() is being called before your flag is defined.

You have to make sure that all flag definitions happen before calling flag.Parse(), usually by defining all flags inside init() functions.

4

If you've migrated to golang 13, it changed the order of the test initializer, so it could lead to something like

flag provided but not defined: -test.timeout

as a possible workaround, you can use

var _ = func() bool {
    testing.Init()
    return true
}()

that would call test initialization before the application one. More info can be found on the original thread:

0

do not call flag.Parse() in any init()

3

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Sarah Jenkins

Sarah Jenkins

Senior Technology Editor & AI Specialist

Sarah Jenkins is a veteran tech journalist with over 12 years of experience covering artificial intelligence, mobile innovations, and digital ethics. Her insights have appeared in leading technology publications worldwide.

Share this article
Twitter Facebook Pinterest