mirror of
https://github.com/DoneJS-Runtime/quickjs-done-nextgen.git
synced 2025-01-09 17:43:15 +00:00
Run local tests with run-test262
This commit is contained in:
parent
79eee54b22
commit
b9be6d4ff2
5 changed files with 51 additions and 45 deletions
35
.github/workflows/ci.yml
vendored
35
.github/workflows/ci.yml
vendored
|
@ -141,7 +141,7 @@ jobs:
|
||||||
make stats
|
make stats
|
||||||
|
|
||||||
- name: test
|
- name: test
|
||||||
if: ${{ matrix.config.configType != 'examples' }}
|
if: ${{ matrix.config.configType != 'examples' && matrix.config.configType != 'tcc' }}
|
||||||
run: |
|
run: |
|
||||||
make test
|
make test
|
||||||
|
|
||||||
|
@ -214,16 +214,7 @@ jobs:
|
||||||
cp build\${{matrix.buildType}}\point.dll examples\
|
cp build\${{matrix.buildType}}\point.dll examples\
|
||||||
build\${{matrix.buildType}}\qjs.exe examples\test_fib.js
|
build\${{matrix.buildType}}\qjs.exe examples\test_fib.js
|
||||||
build\${{matrix.buildType}}\qjs.exe examples\test_point.js
|
build\${{matrix.buildType}}\qjs.exe examples\test_point.js
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_bigint.js
|
build\${{matrix.buildType}}\run-test262.exe -c tests.conf
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_bjson.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_closure.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_language.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_builtin.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_loop.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_std.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_worker.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_queue_microtask.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_module_detect.js
|
|
||||||
build\${{matrix.buildType}}\function_source.exe
|
build\${{matrix.buildType}}\function_source.exe
|
||||||
|
|
||||||
windows-clang:
|
windows-clang:
|
||||||
|
@ -247,16 +238,7 @@ jobs:
|
||||||
cp build\${{matrix.buildType}}\point.dll examples\
|
cp build\${{matrix.buildType}}\point.dll examples\
|
||||||
build\${{matrix.buildType}}\qjs.exe examples\test_fib.js
|
build\${{matrix.buildType}}\qjs.exe examples\test_fib.js
|
||||||
build\${{matrix.buildType}}\qjs.exe examples\test_point.js
|
build\${{matrix.buildType}}\qjs.exe examples\test_point.js
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_bigint.js
|
build\${{matrix.buildType}}\run-test262.exe -c tests.conf
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_bjson.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_closure.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_language.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_builtin.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_loop.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_std.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_worker.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_queue_microtask.js
|
|
||||||
build\${{matrix.buildType}}\qjs.exe tests\test_module_detect.js
|
|
||||||
build\${{matrix.buildType}}\function_source.exe
|
build\${{matrix.buildType}}\function_source.exe
|
||||||
|
|
||||||
windows-ninja:
|
windows-ninja:
|
||||||
|
@ -284,16 +266,7 @@ jobs:
|
||||||
cp build\point.dll examples\
|
cp build\point.dll examples\
|
||||||
build\qjs.exe examples\test_fib.js
|
build\qjs.exe examples\test_fib.js
|
||||||
build\qjs.exe examples\test_point.js
|
build\qjs.exe examples\test_point.js
|
||||||
build\qjs.exe tests\test_bigint.js
|
build\run-test262.exe -c tests.conf
|
||||||
build\qjs.exe tests\test_bjson.js
|
|
||||||
build\qjs.exe tests\test_closure.js
|
|
||||||
build\qjs.exe tests\test_language.js
|
|
||||||
build\qjs.exe tests\test_builtin.js
|
|
||||||
build\qjs.exe tests\test_loop.js
|
|
||||||
build\qjs.exe tests\test_std.js
|
|
||||||
build\qjs.exe tests\test_worker.js
|
|
||||||
build\qjs.exe tests\test_queue_microtask.js
|
|
||||||
build\qjs.exe tests\test_module_detect.js
|
|
||||||
build\function_source.exe
|
build\function_source.exe
|
||||||
|
|
||||||
windows-mingw:
|
windows-mingw:
|
||||||
|
|
10
Makefile
10
Makefile
|
@ -80,15 +80,7 @@ stats: $(QJS)
|
||||||
$(QJS) -qd
|
$(QJS) -qd
|
||||||
|
|
||||||
test: $(QJS)
|
test: $(QJS)
|
||||||
$(QJS) tests/test_bigint.js
|
$(RUN262) -c tests.conf
|
||||||
$(QJS) tests/test_closure.js
|
|
||||||
$(QJS) tests/test_language.js
|
|
||||||
$(QJS) tests/test_builtin.js
|
|
||||||
$(QJS) tests/test_loop.js
|
|
||||||
$(QJS) tests/test_std.js
|
|
||||||
$(QJS) tests/test_worker.js
|
|
||||||
$(QJS) tests/test_queue_microtask.js
|
|
||||||
$(QJS) tests/test_module_detect.js
|
|
||||||
|
|
||||||
testconv: $(BUILD_DIR)/test_conv
|
testconv: $(BUILD_DIR)/test_conv
|
||||||
$(BUILD_DIR)/test_conv
|
$(BUILD_DIR)/test_conv
|
||||||
|
|
|
@ -74,6 +74,7 @@ enum test_mode_t {
|
||||||
TEST_STRICT, /* run tests as strict, skip nostrict tests */
|
TEST_STRICT, /* run tests as strict, skip nostrict tests */
|
||||||
TEST_ALL, /* run tests in both strict and nostrict, unless restricted by spec */
|
TEST_ALL, /* run tests in both strict and nostrict, unless restricted by spec */
|
||||||
} test_mode = TEST_DEFAULT_NOSTRICT;
|
} test_mode = TEST_DEFAULT_NOSTRICT;
|
||||||
|
int local;
|
||||||
int skip_async;
|
int skip_async;
|
||||||
int skip_module;
|
int skip_module;
|
||||||
int dump_memory;
|
int dump_memory;
|
||||||
|
@ -1129,6 +1130,10 @@ void load_config(const char *filename, const char *ignore)
|
||||||
printf("%s:%d: ignoring %s=%s\n", filename, lineno, p, q);
|
printf("%s:%d: ignoring %s=%s\n", filename, lineno, p, q);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (str_equal(p, "local")) {
|
||||||
|
local = str_equal(q, "yes");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (str_equal(p, "testdir")) {
|
if (str_equal(p, "testdir")) {
|
||||||
char *testdir = compose_path(base_name, q);
|
char *testdir = compose_path(base_name, q);
|
||||||
enumerate_tests(testdir);
|
enumerate_tests(testdir);
|
||||||
|
@ -1512,6 +1517,11 @@ static int eval_buf(JSContext *ctx, const char *buf, size_t buf_len,
|
||||||
JS_FreeCString(ctx, msg);
|
JS_FreeCString(ctx, msg);
|
||||||
free(s);
|
free(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (local) {
|
||||||
|
js_std_loop(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
JS_FreeCString(ctx, error_name);
|
JS_FreeCString(ctx, error_name);
|
||||||
JS_FreeValue(ctx, exception_val);
|
JS_FreeValue(ctx, exception_val);
|
||||||
JS_FreeValue(ctx, res_val);
|
JS_FreeValue(ctx, res_val);
|
||||||
|
@ -1679,6 +1689,19 @@ void update_stats(JSRuntime *rt, const char *filename) {
|
||||||
js_mutex_unlock(&stats_mutex);
|
js_mutex_unlock(&stats_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JSContext *JS_NewCustomContext(JSRuntime *rt)
|
||||||
|
{
|
||||||
|
JSContext *ctx;
|
||||||
|
|
||||||
|
ctx = JS_NewContext(rt);
|
||||||
|
if (ctx && local) {
|
||||||
|
js_init_module_std(ctx, "std");
|
||||||
|
js_init_module_os(ctx, "os");
|
||||||
|
js_init_module_bjson(ctx, "bjson");
|
||||||
|
}
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
|
||||||
int run_test_buf(const char *filename, char *harness, namelist_t *ip,
|
int run_test_buf(const char *filename, char *harness, namelist_t *ip,
|
||||||
char *buf, size_t buf_len, const char* error_type,
|
char *buf, size_t buf_len, const char* error_type,
|
||||||
int eval_flags, BOOL is_negative, BOOL is_async,
|
int eval_flags, BOOL is_negative, BOOL is_async,
|
||||||
|
@ -1692,7 +1715,8 @@ int run_test_buf(const char *filename, char *harness, namelist_t *ip,
|
||||||
if (rt == NULL) {
|
if (rt == NULL) {
|
||||||
fatal(1, "JS_NewRuntime failure");
|
fatal(1, "JS_NewRuntime failure");
|
||||||
}
|
}
|
||||||
ctx = JS_NewContext(rt);
|
js_std_init_handlers(rt);
|
||||||
|
ctx = JS_NewCustomContext(rt);
|
||||||
if (ctx == NULL) {
|
if (ctx == NULL) {
|
||||||
JS_FreeRuntime(rt);
|
JS_FreeRuntime(rt);
|
||||||
fatal(1, "JS_NewContext failure");
|
fatal(1, "JS_NewContext failure");
|
||||||
|
@ -1721,6 +1745,7 @@ int run_test_buf(const char *filename, char *harness, namelist_t *ip,
|
||||||
}
|
}
|
||||||
js_agent_free(ctx);
|
js_agent_free(ctx);
|
||||||
JS_FreeContext(ctx);
|
JS_FreeContext(ctx);
|
||||||
|
js_std_free_handlers(rt);
|
||||||
JS_FreeRuntime(rt);
|
JS_FreeRuntime(rt);
|
||||||
|
|
||||||
atomic_inc(&test_count);
|
atomic_inc(&test_count);
|
||||||
|
@ -1757,8 +1782,10 @@ int run_test(const char *filename, int *msec)
|
||||||
}
|
}
|
||||||
harness = harnessbuf;
|
harness = harnessbuf;
|
||||||
}
|
}
|
||||||
|
if (!local) {
|
||||||
namelist_add(ip, NULL, "sta.js");
|
namelist_add(ip, NULL, "sta.js");
|
||||||
namelist_add(ip, NULL, "assert.js");
|
namelist_add(ip, NULL, "assert.js");
|
||||||
|
}
|
||||||
/* extract the YAML frontmatter */
|
/* extract the YAML frontmatter */
|
||||||
desc = extract_desc(buf, '-');
|
desc = extract_desc(buf, '-');
|
||||||
if (desc) {
|
if (desc) {
|
||||||
|
@ -1874,6 +1901,9 @@ int run_test(const char *filename, int *msec)
|
||||||
atomic_inc(&test_skipped);
|
atomic_inc(&test_skipped);
|
||||||
ret = -2;
|
ret = -2;
|
||||||
} else {
|
} else {
|
||||||
|
if (local) {
|
||||||
|
is_module = JS_DetectModule(buf, buf_len);
|
||||||
|
}
|
||||||
if (is_module) {
|
if (is_module) {
|
||||||
eval_flags = JS_EVAL_TYPE_MODULE;
|
eval_flags = JS_EVAL_TYPE_MODULE;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2070,6 +2100,8 @@ int main(int argc, char **argv)
|
||||||
BOOL is_test262_harness = FALSE;
|
BOOL is_test262_harness = FALSE;
|
||||||
BOOL is_module = FALSE;
|
BOOL is_module = FALSE;
|
||||||
|
|
||||||
|
js_std_set_worker_new_context_func(JS_NewCustomContext);
|
||||||
|
|
||||||
tls = &(ThreadLocalStorage){};
|
tls = &(ThreadLocalStorage){};
|
||||||
init_thread_local_storage(tls);
|
init_thread_local_storage(tls);
|
||||||
js_mutex_init(&stats_mutex);
|
js_mutex_init(&stats_mutex);
|
||||||
|
|
8
tests.conf
Normal file
8
tests.conf
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
[config]
|
||||||
|
local=yes
|
||||||
|
verbose=yes
|
||||||
|
testdir=tests
|
||||||
|
|
||||||
|
[exclude]
|
||||||
|
tests/microbench.js
|
||||||
|
tests/test_worker_module.js
|
|
@ -90,6 +90,7 @@ function test_popen()
|
||||||
{
|
{
|
||||||
var str, f, fname = "tmp_file.txt";
|
var str, f, fname = "tmp_file.txt";
|
||||||
var content = "hello world";
|
var content = "hello world";
|
||||||
|
var cmd = isWin ? "type" : "cat";
|
||||||
|
|
||||||
f = std.open(fname, "w");
|
f = std.open(fname, "w");
|
||||||
f.puts(content);
|
f.puts(content);
|
||||||
|
@ -98,8 +99,8 @@ function test_popen()
|
||||||
/* test loadFile */
|
/* test loadFile */
|
||||||
assert(std.loadFile(fname), content);
|
assert(std.loadFile(fname), content);
|
||||||
|
|
||||||
/* execute the 'cat' shell command */
|
/* execute shell command */
|
||||||
f = std.popen("cat " + fname, "r");
|
f = std.popen(cmd + " " + fname, "r");
|
||||||
str = f.readAsString();
|
str = f.readAsString();
|
||||||
f.close();
|
f.close();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue