1
1
Fork 0
mirror of https://github.com/mcuadros/ascode synced 2024-05-08 08:36:15 +02:00

starlark/test: embed assert.star file

This commit is contained in:
Máximo Cuadros 2020-03-27 19:07:10 +01:00
parent 84fc284d8e
commit a5fc3f257b
No known key found for this signature in database
GPG Key ID: 17A5DFEDC735AE4B
2 changed files with 56 additions and 1 deletions

View File

@ -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
}

View 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,
)
`