func envVarOrEmptyMap(yamlMap generic.Map, errs *[]error) *map[string]string { key := "env" switch envVars := yamlMap.Get(key).(type) { case nil: aMap := make(map[string]string, 0) return &aMap case map[string]interface{}: yamlMap.Set(key, generic.NewMap(yamlMap.Get(key))) return envVarOrEmptyMap(yamlMap, errs) case map[interface{}]interface{}: yamlMap.Set(key, generic.NewMap(yamlMap.Get(key))) return envVarOrEmptyMap(yamlMap, errs) case generic.Map: merrs := validateEnvVars(envVars) if merrs != nil { *errs = append(*errs, merrs...) return nil } result := make(map[string]string, envVars.Count()) generic.Each(envVars, func(key, value interface{}) { switch value.(type) { case string: result[key.(string)] = value.(string) case int64, int, int32: result[key.(string)] = fmt.Sprintf("%d", value) case float32, float64: result[key.(string)] = fmt.Sprintf("%f", value) default: *errs = append(*errs, errors.NewWithFmt(T("Expected environment variable {{.PropertyName}} to have a string value, but it was a {{.PropertyType}}.", map[string]interface{}{"PropertyName": key, "PropertyType": value}))) } }) return &result default: *errs = append(*errs, errors.NewWithFmt(T("Expected {{.Name}} to be a set of key => value, but it was a {{.Type}}.", map[string]interface{}{"Name": key, "Type": envVars}))) return nil } }
var manifestApp generic.Map BeforeEach(func() { manifest := singleAppManifest() manifestApp = manifest.Data.Get("applications").([]interface{})[0].(generic.Map) manifestApp.Delete("host") manifestRepo.ReadManifestReturns.Manifest = manifest }) It("provides a random hostname when the --random-route flag is passed", func() { callPush("--random-route", "my-new-app") Expect(routeRepo.FindByHostAndDomainCalledWith.Host).To(Equal("my-new-app-laughing-cow")) }) It("provides a random hostname when the random-route option is set in the manifest", func() { manifestApp.Set("random-route", true) callPush("my-new-app") Expect(routeRepo.FindByHostAndDomainCalledWith.Host).To(Equal("my-new-app-laughing-cow")) }) }) It("pushes the contents of the directory specified using the -p flag", func() { callPush("-p", "../some/path-to/an-app", "app-with-path") appDir, _ := actor.GatherFilesArgsForCall(0) Expect(appDir).To(Equal("../some/path-to/an-app")) }) It("pushes the contents of the current working directory by default", func() {