validations

package
v0.48.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 6, 2024 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Overview

Package validations enriches YAML structures by attaching user-defined constraints (that is, validationRun rules) onto individual yamlmeta.Node's.

Validations on Data Values

While "@data/values" can technically be annotated with "@assert/validate" annotations, it is expected that authors will use "@schema/validationRun" in "@data/values-schema" documents instead.

Index

Constants

View Source
const (
	AnnotationAssertValidate template.AnnotationName = "assert/validate"

	KwargWhen       string = "when"
	KwargMinLength  string = "min_len"
	KwargMaxLength  string = "max_len"
	KwargMin        string = "min"
	KwargMax        string = "max"
	KwargNotNull    string = "not_null"
	KwargOneNotNull string = "one_not_null"
	KwargOneOf      string = "one_of"
)

Declare @assert/... annotation and keyword argument names

Variables

This section is empty.

Functions

func Add

func Add(node yamlmeta.Node, validations []NodeValidation)

Add appends validations to node's validations metadata, later retrieved via Get().

func ProcessAssertValidateAnns

func ProcessAssertValidateAnns(rootNode yamlmeta.Node) error

ProcessAssertValidateAnns checks Assert annotations on data values and stores them on a Node as Validations. Returns an error if any Assert annotations are malformed.

func Set

func Set(node yamlmeta.Node, meta []NodeValidation)

Set attaches validations to node's metadata, later retrieved via Get().

Types

type Check

type Check struct {
	Invalidations []Invalidation
}

Check holds the complete set of Invalidations (if any) resulting from checking all validation rules.

func Run

func Run(node yamlmeta.Node, threadName string) (Check, error)

Run takes a root Node, and threadName, and validates each Node in the tree.

When a Node's value is invalid, the errors are collected and returned in a Check. Otherwise, returns empty Check and nil error.

func (Check) HasInvalidations

func (c Check) HasInvalidations() bool

HasInvalidations indicates whether this Check contains any violations.

func (Check) ResultsAsString

func (c Check) ResultsAsString() string

ResultsAsString generates the error message composed of the total set of Check.Invalidations.

type Invalidation

type Invalidation struct {
	Path        string
	ValueSource *filepos.Position
	Violations  []Violation
}

Invalidation describes a value that was invalidated, and how.

type NodeValidation

type NodeValidation struct {
	// contains filtered or unexported fields
}

NodeValidation represents a validationRun attached to a Node via an annotation.

func Get

func Get(node yamlmeta.Node) []NodeValidation

Get retrieves validations from node metadata, set previously via Set().

func NewValidationFromAnn

func NewValidationFromAnn(annotation template.NodeAnnotation) (*NodeValidation, error)

NewValidationFromAnn creates a NodeValidation from the values provided in a validationRun-style annotation.

func (NodeValidation) Validate

func (v NodeValidation) Validate(node yamlmeta.Node, parent yamlmeta.Node, root yamlmeta.Node, path string, thread *starlark.Thread) (Invalidation, error)

Validate runs the assertions in the rules with the node's value as arguments IF the ValidationKwargs conditional options pass.

Returns an error if the assertion returns False (not-None), or assert.fail()s. Otherwise, returns nil.

type Violation

type Violation struct {
	RuleSource  *filepos.Position
	Description string
	Results     string
}

Violation describes how a value failed to satisfy a rule.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL