]> git.kaiwu.me - quickjs.git/commitdiff
fixed run_test262_harness_test() with modules
authorFabrice Bellard <fabrice@bellard.org>
Sat, 6 Jan 2024 13:43:47 +0000 (14:43 +0100)
committerFabrice Bellard <fabrice@bellard.org>
Sat, 6 Jan 2024 13:43:47 +0000 (14:43 +0100)
run-test262.c

index e0cf77135c7b1895a9931dd358f62794dd009978..a7d3d5c832de3f694aac04f22b58871e0b08cdd3 100644 (file)
@@ -1854,17 +1854,32 @@ int run_test262_harness_test(const char *filename, BOOL is_module)
        js_std_dump_error(ctx);
        ret_code = 1;
     } else {
-        JS_FreeValue(ctx, res_val);
+        JSValue promise = JS_UNDEFINED;
+        if (is_module) {
+            promise = res_val;
+        } else {
+            JS_FreeValue(ctx, res_val);
+        }
         for(;;) {
             JSContext *ctx1;
             ret = JS_ExecutePendingJob(JS_GetRuntime(ctx), &ctx1);
             if (ret < 0) {
-             js_std_dump_error(ctx1);
-             ret_code = 1;
+                js_std_dump_error(ctx1);
+                ret_code = 1;
             } else if (ret == 0) {
-             break;
+                break;
             }
         }
+        /* dump the error if the module returned an error. */
+        if (is_module) {
+            JSPromiseStateEnum state = JS_PromiseState(ctx, promise);
+            if (state == JS_PROMISE_REJECTED) {
+                JS_Throw(ctx, JS_PromiseResult(ctx, promise));
+                js_std_dump_error(ctx);
+                ret_code = 1;
+            }
+        }
+        JS_FreeValue(ctx, promise);
     }
     free(buf);
 #ifdef CONFIG_AGENT