зеркало из https://github.com/mozilla/scribe.git
if a test is a modifier, ensure it includes valid sources
This commit is contained in:
Родитель
a76b89868f
Коммит
71fc5a07e9
|
@ -55,6 +55,10 @@ func (f *FileContent) validate() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (f *FileContent) isModifier() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (f *FileContent) expandVariables(v []Variable) {
|
||||
f.Path = variableExpansion(v, f.Path)
|
||||
f.File = variableExpansion(v, f.File)
|
||||
|
|
|
@ -23,6 +23,10 @@ type nameMatch struct {
|
|||
match string
|
||||
}
|
||||
|
||||
func (f *FileName) isModifier() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (f *FileName) validate() error {
|
||||
if len(f.Path) == 0 {
|
||||
return fmt.Errorf("filename path must be set")
|
||||
|
|
|
@ -81,6 +81,10 @@ func (c *ConcatModifier) prepare() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (c *ConcatModifier) isModifier() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (c *ConcatModifier) validate() error {
|
||||
if len(c.Operator) == 0 {
|
||||
return fmt.Errorf("must specify concat operator")
|
||||
|
|
|
@ -20,6 +20,10 @@ type PackageInfo struct {
|
|||
Version string
|
||||
}
|
||||
|
||||
func (p *Package) isModifier() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (p *Package) validate() error {
|
||||
if len(p.Name) == 0 {
|
||||
return fmt.Errorf("package must specify name")
|
||||
|
|
|
@ -64,6 +64,7 @@ type genericSource interface {
|
|||
getCriteria() []EvaluationCriteria
|
||||
expandVariables([]Variable)
|
||||
validate() error
|
||||
isModifier() bool
|
||||
}
|
||||
|
||||
type genericEvaluator interface {
|
||||
|
@ -85,6 +86,18 @@ func (t *Test) validate(d *Document) error {
|
|||
if err != nil {
|
||||
return fmt.Errorf("%v: %v", t.Name, err)
|
||||
}
|
||||
// If this is a modifier, ensure the modifier sources are valid.
|
||||
if si.isModifier() {
|
||||
for _, x := range t.Modifier.Sources {
|
||||
_, err := d.getTest(x.Name)
|
||||
if err != nil {
|
||||
return fmt.Errorf("%v: %v", t.Name, err)
|
||||
}
|
||||
if x.Select != "all" {
|
||||
return fmt.Errorf("%v: modifier source must include selector", t.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
if t.getEvaluationInterface() == nil {
|
||||
return fmt.Errorf("%v: no valid evaluation interface", t.Name)
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче