func newAppConfig(appConfigProvider, appConfigPath string) (*beegoAppConfig, error) { ac, err := config.NewConfig(appConfigProvider, appConfigPath) if err != nil { return nil, err } return &beegoAppConfig{ac}, nil }
func getPort() string { if port == "" { config, err := config.NewConfig("ini", "../conf/app.conf") if err != nil { return "8080" } port = config.String("httpport") return port } return port }
func TestXML(t *testing.T) { var ( //xml parse should incluce in <config></config> tags xmlcontext = `<?xml version="1.0" encoding="UTF-8"?> <config> <appname>beeapi</appname> <httpport>8080</httpport> <mysqlport>3600</mysqlport> <PI>3.1415976</PI> <runmode>dev</runmode> <autorender>false</autorender> <copyrequestbody>true</copyrequestbody> <path1>${GOPATH}</path1> <path2>${GOPATH||/home/go}</path2> </config> ` keyValue = map[string]interface{}{ "appname": "beeapi", "httpport": 8080, "mysqlport": int64(3600), "PI": 3.1415976, "runmode": "dev", "autorender": false, "copyrequestbody": true, "path1": os.Getenv("GOPATH"), "path2": os.Getenv("GOPATH"), "error": "", "emptystrings": []string{}, } ) f, err := os.Create("testxml.conf") if err != nil { t.Fatal(err) } _, err = f.WriteString(xmlcontext) if err != nil { f.Close() t.Fatal(err) } f.Close() defer os.Remove("testxml.conf") xmlconf, err := config.NewConfig("xml", "testxml.conf") if err != nil { t.Fatal(err) } for k, v := range keyValue { var ( value interface{} err error ) switch v.(type) { case int: value, err = xmlconf.Int(k) case int64: value, err = xmlconf.Int64(k) case float64: value, err = xmlconf.Float(k) case bool: value, err = xmlconf.Bool(k) case []string: value = xmlconf.Strings(k) case string: value = xmlconf.String(k) default: value, err = xmlconf.DIY(k) } if err != nil { t.Errorf("get key %q value fatal,%v err %s", k, v, err) } else if fmt.Sprintf("%v", v) != fmt.Sprintf("%v", value) { t.Errorf("get key %q value, want %v got %v .", k, v, value) } } if err = xmlconf.Set("name", "astaxie"); err != nil { t.Fatal(err) } if xmlconf.String("name") != "astaxie" { t.Fatal("get name error") } }
func TestYaml(t *testing.T) { var ( yamlcontext = ` "appname": beeapi "httpport": 8080 "mysqlport": 3600 "PI": 3.1415976 "runmode": dev "autorender": false "copyrequestbody": true "PATH": GOPATH "path1": ${GOPATH} "path2": ${GOPATH||/home/go} "empty": "" ` keyValue = map[string]interface{}{ "appname": "beeapi", "httpport": 8080, "mysqlport": int64(3600), "PI": 3.1415976, "runmode": "dev", "autorender": false, "copyrequestbody": true, "PATH": "GOPATH", "path1": os.Getenv("GOPATH"), "path2": os.Getenv("GOPATH"), "error": "", "emptystrings": []string{}, } ) f, err := os.Create("testyaml.conf") if err != nil { t.Fatal(err) } _, err = f.WriteString(yamlcontext) if err != nil { f.Close() t.Fatal(err) } f.Close() defer os.Remove("testyaml.conf") yamlconf, err := config.NewConfig("yaml", "testyaml.conf") if err != nil { t.Fatal(err) } if yamlconf.String("appname") != "beeapi" { t.Fatal("appname not equal to beeapi") } for k, v := range keyValue { var ( value interface{} err error ) switch v.(type) { case int: value, err = yamlconf.Int(k) case int64: value, err = yamlconf.Int64(k) case float64: value, err = yamlconf.Float(k) case bool: value, err = yamlconf.Bool(k) case []string: value = yamlconf.Strings(k) case string: value = yamlconf.String(k) default: value, err = yamlconf.DIY(k) } if err != nil { t.Errorf("get key %q value fatal,%v err %s", k, v, err) } else if fmt.Sprintf("%v", v) != fmt.Sprintf("%v", value) { t.Errorf("get key %q value, want %v got %v .", k, v, value) } } if err = yamlconf.Set("name", "astaxie"); err != nil { t.Fatal(err) } if yamlconf.String("name") != "astaxie" { t.Fatal("get name error") } }