summaryrefslogtreecommitdiffhomepage
path: root/tests/custom/03_stdlib/29_require
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2022-08-23 15:43:25 +0200
committerJo-Philipp Wich <jo@mein.io>2022-08-24 15:33:18 +0200
commit131d99c45e586e06d2fa3adba32e92c0370ad022 (patch)
tree0a089858e2f2fbf2c19440be8dda7e945667d83b /tests/custom/03_stdlib/29_require
parent8e8dae0eb0f90dea3cb4b244c79f7fa855219f92 (diff)
lib: introduce three new functions call(), loadstring() and loadfile()
Introduce new functions dealing with on-the-fly compilation of code and execution of functions with different global scope. The `loadstring()` and `loadfile()` functions will compile the given ucode source string or ucode file path respectively and return the entry function of the resulting program. An optional dictionary specifying parse options may be given as second argument. Both functions return `null` on invalid arguments and throw an exception in case of compilation errors. The `call()` function allows invoking a given function value with a different `this` context and/or a different global environment. Finally refactor the existing `uc_require_ucode()` implementation to reuse the new `uc_loadfile()` and `uc_call()` implementations and adjust as well as simplify affected testcases. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'tests/custom/03_stdlib/29_require')
-rw-r--r--tests/custom/03_stdlib/29_require34
1 files changed, 11 insertions, 23 deletions
diff --git a/tests/custom/03_stdlib/29_require b/tests/custom/03_stdlib/29_require
index 4fb4216..a81edb4 100644
--- a/tests/custom/03_stdlib/29_require
+++ b/tests/custom/03_stdlib/29_require
@@ -119,20 +119,9 @@ A compilation error in the module triggers an exception.
-- Testcase --
{%
- try {
- push(REQUIRE_SEARCH_PATH, TESTFILES_PATH + '/*.uc');
+ push(REQUIRE_SEARCH_PATH, TESTFILES_PATH + '/*.uc');
- require("require.test.broken");
- }
- catch (e) {
- // Catch and rethrow exception with modified message to
- // ensure stable test output.
- e.message = replace(e.message,
- /(compile module '.+require\/test\/broken\.uc')/,
- "compile module '.../require/test/broken.uc'");
-
- die(e);
- }
+ require("require.test.broken");
%}
-- End --
@@ -142,19 +131,18 @@ return {
-- End --
-- Expect stderr --
-Unable to compile module '.../require/test/broken.uc':
-Syntax error: Expecting label
-In line 2, byte 10:
-
- `return {`
- ^-- Near here
-
+Runtime error: Unable to compile source file './files/require/test/broken.uc':
+ | Syntax error: Expecting label
+ | In line 2, byte 10:
+ |
+ | `return {`
+ | ^-- Near here
-In line 14, byte 8:
+In line 4, byte 31:
- ` die(e);`
- Near here ---^
+ ` require("require.test.broken");`
+ Near here -----------------------^
-- End --