tester

package
v0.63.0 Latest Latest
Warning

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

Go to latest
Published: Mar 28, 2024 License: Apache-2.0 Imports: 21 Imported by: 29

Documentation

Overview

Package tester contains utilities for executing Rego tests.

Index

Constants

View Source
const SkipTestPrefix = "todo_test_"

SkipTestPrefix declares the prefix for tests that should be skipped.

View Source
const TestPrefix = "test_"

TestPrefix declares the prefix for all test rules.

Variables

This section is empty.

Functions

func Load added in v0.5.9

func Load(args []string, filter loader.Filter) (map[string]*ast.Module, storage.Store, error)

Load returns modules and an in-memory store for running tests.

func LoadBundles added in v0.14.0

func LoadBundles(args []string, filter loader.Filter) (map[string]*bundle.Bundle, error)

LoadBundles will load the given args as bundles, either tarball or directory is OK.

func LoadBundlesWithRegoVersion added in v0.60.0

func LoadBundlesWithRegoVersion(args []string, filter loader.Filter, regoVersion ast.RegoVersion) (map[string]*bundle.Bundle, error)

LoadBundlesWithRegoVersion will load the given args as bundles, either tarball or directory is OK. Bundles are parsed in accordance with the given RegoVersion.

func LoadWithRegoVersion added in v0.60.0

func LoadWithRegoVersion(args []string, filter loader.Filter, regoVersion ast.RegoVersion) (map[string]*ast.Module, storage.Store, error)

LoadWithRegoVersion returns modules and an in-memory store for running tests. Modules are parsed in accordance with the given RegoVersion.

Types

type BenchmarkOptions added in v0.18.0

type BenchmarkOptions struct {
	ReportAllocations bool
}

BenchmarkOptions defines options specific to benchmarking tests

type Builtin added in v0.37.0

type Builtin struct {
	Decl *ast.Builtin
	Func func(*rego.Rego)
}

type JSONCoverageReporter added in v0.8.0

type JSONCoverageReporter struct {
	Cover     *cover.Cover
	Modules   map[string]*ast.Module
	Output    io.Writer
	Threshold float64
	Verbose   bool
}

JSONCoverageReporter reports coverage as a JSON structure.

func (JSONCoverageReporter) Report added in v0.8.0

func (r JSONCoverageReporter) Report(ch chan *Result) error

Report prints the test report to the reporter's output. If any tests fail or encounter errors, this function returns an error.

type JSONReporter added in v0.8.0

type JSONReporter struct {
	Output io.Writer
}

JSONReporter reports test results as array of JSON objects.

func (JSONReporter) Report added in v0.8.0

func (r JSONReporter) Report(ch chan *Result) error

Report prints the test report to the reporter's output.

type PrettyReporter

type PrettyReporter struct {
	Output                   io.Writer
	Verbose                  bool
	FailureLine              bool
	BenchmarkResults         bool
	BenchMarkShowAllocations bool
	BenchMarkGoBenchFormat   bool
}

PrettyReporter reports test results in a simple human readable format.

func (PrettyReporter) Report

func (r PrettyReporter) Report(ch chan *Result) error

Report prints the test report to the reporter's output.

type Reporter added in v0.8.0

type Reporter interface {

	// Report is called with a channel that will contain test results.
	Report(ch chan *Result) error
}

Reporter defines the interface for reporting test results.

type Result

type Result struct {
	Location        *ast.Location            `json:"location"`
	Package         string                   `json:"package"`
	Name            string                   `json:"name"`
	Fail            bool                     `json:"fail,omitempty"`
	Error           error                    `json:"error,omitempty"`
	Skip            bool                     `json:"skip,omitempty"`
	Duration        time.Duration            `json:"duration"`
	Trace           []*topdown.Event         `json:"trace,omitempty"`
	Output          []byte                   `json:"output,omitempty"`
	FailedAt        *ast.Expr                `json:"failed_at,omitempty"`
	BenchmarkResult *testing.BenchmarkResult `json:"benchmark_result,omitempty"`
}

Result represents a single test case result.

func Run

func Run(ctx context.Context, paths ...string) ([]*Result, error)

Run executes all test cases found under files in path.

func RunWithFilter added in v0.8.2

func RunWithFilter(ctx context.Context, filter loader.Filter, paths ...string) ([]*Result, error)

RunWithFilter executes all test cases found under files in path. The filter will be applied to exclude files that should not be included.

func (Result) Pass

func (r Result) Pass() bool

Pass returns true if the test case passed.

func (*Result) String

func (r *Result) String() string

type Runner

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

Runner implements simple test discovery and execution.

func NewRunner

func NewRunner() *Runner

NewRunner returns a new runner.

func (*Runner) AddCustomBuiltins added in v0.37.0

func (r *Runner) AddCustomBuiltins(builtinsList []*Builtin) *Runner

func (*Runner) CapturePrintOutput added in v0.34.0

func (r *Runner) CapturePrintOutput(yes bool) *Runner

CapturePrintOutput captures print() call outputs during evaluation and includes the output in test results.

func (*Runner) EnableTracing added in v0.10.0

func (r *Runner) EnableTracing(yes bool) *Runner

EnableTracing enables tracing of evaluation and includes traces in results. Tracing is currently mutually exclusive with coverage.

func (*Runner) Filter added in v0.18.0

func (r *Runner) Filter(regex string) *Runner

Filter will set a test name regex filter for the test runner. Only test cases which match the filter will be run.

func (*Runner) RaiseBuiltinErrors added in v0.60.0

func (r *Runner) RaiseBuiltinErrors(enabled bool) *Runner

RaiseBuiltinErrors sets the runner to raise errors encountered by builtins such as parsing input.

func (*Runner) Run added in v0.5.9

func (r *Runner) Run(ctx context.Context, modules map[string]*ast.Module) (ch chan *Result, err error)

Run executes all tests contained in supplied modules. Deprecated: Use RunTests and the Runner#SetModules or Runner#SetBundles helpers instead. This will NOT use the modules or bundles set on the Runner.

func (*Runner) RunBenchmarks added in v0.18.0

func (r *Runner) RunBenchmarks(ctx context.Context, txn storage.Transaction, options BenchmarkOptions) (ch chan *Result, err error)

RunBenchmarks executes tests similar to tester.Runner#RunTests but will repeat a number of times to get stable performance metrics.

func (*Runner) RunTests added in v0.14.0

func (r *Runner) RunTests(ctx context.Context, txn storage.Transaction) (ch chan *Result, err error)

RunTests executes tests found in either modules or bundles loaded on the runner.

func (*Runner) SetBundles added in v0.14.0

func (r *Runner) SetBundles(bundles map[string]*bundle.Bundle) *Runner

SetBundles will add bundles to the Runner which will be compiled then used for discovering and evaluating tests.

func (*Runner) SetCompiler

func (r *Runner) SetCompiler(compiler *ast.Compiler) *Runner

SetCompiler sets the compiler used by the runner.

func (*Runner) SetCoverageQueryTracer added in v0.22.0

func (r *Runner) SetCoverageQueryTracer(tracer topdown.QueryTracer) *Runner

SetCoverageQueryTracer sets the tracer to use to compute coverage.

func (*Runner) SetCoverageTracer added in v0.10.0

func (r *Runner) SetCoverageTracer(tracer topdown.Tracer) *Runner

SetCoverageTracer sets the tracer to use to compute coverage. Deprecated: Use SetCoverageQueryTracer instead.

func (*Runner) SetModules added in v0.14.0

func (r *Runner) SetModules(modules map[string]*ast.Module) *Runner

SetModules will add modules to the Runner which will be compiled then used for discovering and evaluating tests.

func (*Runner) SetRuntime added in v0.10.0

func (r *Runner) SetRuntime(term *ast.Term) *Runner

SetRuntime sets runtime information to expose to the evaluation engine.

func (*Runner) SetStore added in v0.5.9

func (r *Runner) SetStore(store storage.Store) *Runner

SetStore sets the store to execute tests over.

func (*Runner) SetTimeout added in v0.15.0

func (r *Runner) SetTimeout(timout time.Duration) *Runner

SetTimeout sets the timeout for the individual test cases

func (*Runner) Target added in v0.27.0

func (r *Runner) Target(target string) *Runner

Target sets the output target type to use.

Jump to

Keyboard shortcuts

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