func (s *ImageConfigSuite) TestValidateMissingDependencies() { s.image.Depends = []string{"one", "two"} conf := NewConfig() err := ValidateResourcesExist(pth.NewPath(""), conf, s.image.Dependencies()) s.Error(err) s.Contains(err.Error(), "missing dependencies: one, two") }
func (s *JobConfigSuite) TestValidateMissingUse() { s.conf.Resources["example"] = &AliasConfig{} s.job.Use = "example" err := s.job.Validate(pth.NewPath(""), s.conf) s.Error(err) s.Contains(err.Error(), "example is not an image resource") }
func (s *ImageConfigSuite) TestValidateMissingOneOfRequired() { s.image.Dockerfile = "" s.image.Context = "" conf := NewConfig() err := s.image.Validate(pth.NewPath(""), conf) s.Error(err) s.Contains(err.Error(), "one of dockerfile, context, or pull is required") }
func (s *JobConfigSuite) TestValidateMissingMount() { s.conf.Resources["one"] = NewImageConfig() s.conf.Resources["two"] = NewImageConfig() s.conf.Resources["example"] = NewImageConfig() s.job.Use = "example" s.job.Mounts = []string{"one", "two"} err := s.job.Validate(pth.NewPath(""), s.conf) s.Error(err) s.Contains(err.Error(), "one is not a mount resource") }
// validate validates all the resources in the config func validate(config *Config) error { for name, resource := range config.Resources { path := pth.NewPath(name) if err := configtf.ValidateFields(path, resource); err != nil { return err } if err := ValidateResourcesExist(path, config, resource.Dependencies()); err != nil { return err } if err := resource.Validate(path, config); err != nil { return err } } config.Meta.Validate(config) return nil }