when I run the minimal program below it errors about NOT knowing  -data 
flag:
go test -v -args -data=x
flag provided but not defined: -data
Usage of 
/tmp/go-build454762170/github.com/phcurtis/flagexp/_test/flagexp.test:
  -test.bench regexp .... blah blah,

if you change nfs=false ... and then it uses flag.Parse etc ... code runs 
without issue
but I want to handle error cases in other code I'm working and use  the 
flag.NewFlagSet with go test ...
note the below code in either case works with go run but not with go test.


package main

import (
    "flag"
    "fmt"
    "os"
    "testing"
)

var data string
var test func(t *testing.T)
var datainit = "defValue"
var nfs = true

func init() {
    if nfs {
        flag3 := flag.NewFlagSet("nfs", flag.ContinueOnError)
        flag3.StringVar(&data, "data", datainit, "data")
        test = func(t *testing.T) {
            fmt.Println("TP1")
            err := flag3.Parse(os.Args)
            fmt.Printf("data:%v err:%v\n", data, err)
        }
        return
    }
    flag.StringVar(&data, "data", datainit, "data")
    test = func(t *testing.T) {
        fmt.Println("TP2")
        flag.Parse()
        fmt.Printf("data:%v\n", data)
    }
}

func Test_code(t *testing.T) {
    test(t)
}

***********************************************************
heres full output when nfs=true
paul@t560:~/go/src/github.com/phcurtis/flagexp$ go test -v -args -data=x
flag provided but not defined: -data
Usage of 
/tmp/go-build454762170/github.com/phcurtis/flagexp/_test/flagexp.test:
  -test.bench regexp
        run only benchmarks matching regexp
  -test.benchmem
        print memory allocations for benchmarks
  -test.benchtime d
        run each benchmark for duration d (default 1s)
  -test.blockprofile file
        write a goroutine blocking profile to file
  -test.blockprofilerate rate
        set blocking profile rate (see runtime.SetBlockProfileRate) 
(default 1)
  -test.count n
        run tests and benchmarks n times (default 1)
  -test.coverprofile file
        write a coverage profile to file
  -test.cpu list
        comma-separated list of cpu counts to run each test with
  -test.cpuprofile file
        write a cpu profile to file
  -test.list regexp
        list tests, examples, and benchmarch maching regexp then exit
  -test.memprofile file
        write a memory profile to file
  -test.memprofilerate rate
        set memory profiling rate (see runtime.MemProfileRate)
  -test.mutexprofile string
        write a mutex contention profile to the named file after execution
  -test.mutexprofilefraction int
        if >= 0, calls runtime.SetMutexProfileFraction() (default 1)
  -test.outputdir dir
        write profiles to dir
  -test.parallel n
        run at most n tests in parallel (default 4)
  -test.run regexp
        run only tests and examples matching regexp
  -test.short
        run smaller test suite to save time
  -test.timeout d
        panic test binary after duration d (0 means unlimited)
  -test.trace file
        write an execution trace to file
  -test.v
        verbose: print additional output
exit status 2
FAIL    github.com/phcurtis/flagexp    0.001s

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to