mirror of
https://github.com/mcuadros/ascode
synced 2024-11-26 06:01:08 +01:00
starlark/test: embed assert.star file
This commit is contained in:
parent
84fc284d8e
commit
a5fc3f257b
@ -69,7 +69,7 @@ func LoadAssertModule() (starlark.StringDict, error) {
|
||||
}
|
||||
filename := DataFile("starlark/test", "assert.star")
|
||||
thread := new(starlark.Thread)
|
||||
assert, assertErr = starlark.ExecFile(thread, filename, nil, predeclared)
|
||||
assert, assertErr = starlark.ExecFile(thread, filename, assertStarFile, predeclared)
|
||||
})
|
||||
return assert, assertErr
|
||||
}
|
||||
|
55
starlark/test/assert.star.go
Normal file
55
starlark/test/assert.star.go
Normal file
@ -0,0 +1,55 @@
|
||||
package test
|
||||
|
||||
const assertStarFile = `
|
||||
# Predeclared built-ins for this module:
|
||||
#
|
||||
# error(msg): report an error in Go's test framework without halting execution.
|
||||
# This is distinct from the built-in fail function, which halts execution.
|
||||
# catch(f): evaluate f() and returns its evaluation error message, if any
|
||||
# matches(str, pattern): report whether str matches regular expression pattern.
|
||||
# module(**kwargs): a constructor for a module.
|
||||
# _freeze(x): freeze the value x and everything reachable from it.
|
||||
#
|
||||
# Clients may use these functions to define their own testing abstractions.
|
||||
|
||||
def _eq(x, y):
|
||||
if x != y:
|
||||
error("%r != %r" % (x, y))
|
||||
|
||||
def _ne(x, y):
|
||||
if x == y:
|
||||
error("%r == %r" % (x, y))
|
||||
|
||||
def _true(cond, msg = "assertion failed"):
|
||||
if not cond:
|
||||
error(msg)
|
||||
|
||||
def _lt(x, y):
|
||||
if not (x < y):
|
||||
error("%s is not less than %s" % (x, y))
|
||||
|
||||
def _contains(x, y):
|
||||
if y not in x:
|
||||
error("%s does not contain %s" % (x, y))
|
||||
|
||||
def _fails(f, pattern):
|
||||
"assert_fails asserts that evaluation of f() fails with the specified error."
|
||||
msg = catch(f)
|
||||
if msg == None:
|
||||
error("evaluation succeeded unexpectedly (want error matching %r)" % pattern)
|
||||
elif not matches(pattern, msg):
|
||||
error("regular expression (%s) did not match error (%s)" % (pattern, msg))
|
||||
|
||||
freeze = _freeze # an exported global whose value is the built-in freeze function
|
||||
|
||||
assert = module(
|
||||
"assert",
|
||||
fail = error,
|
||||
eq = _eq,
|
||||
ne = _ne,
|
||||
true = _true,
|
||||
lt = _lt,
|
||||
contains = _contains,
|
||||
fails = _fails,
|
||||
)
|
||||
`
|
Loading…
Reference in New Issue
Block a user