Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: test/cctest/test-modules.cc

Issue 2611643002: [modules] Add an IsModule flag to ScriptOriginOptions. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/flags.h" 5 #include "src/flags.h"
6 6
7 #include "test/cctest/cctest.h" 7 #include "test/cctest/cctest.h"
8 8
9 namespace { 9 namespace {
10 10
(...skipping 13 matching lines...) Expand all
24 Local<Module> referrer) { 24 Local<Module> referrer) {
25 return MaybeLocal<Module>(); 25 return MaybeLocal<Module>();
26 } 26 }
27 27
28 static int g_count = 0; 28 static int g_count = 0;
29 MaybeLocal<Module> FailOnSecondCallResolveCallback(Local<Context> context, 29 MaybeLocal<Module> FailOnSecondCallResolveCallback(Local<Context> context,
30 Local<String> specifier, 30 Local<String> specifier,
31 Local<Module> referrer) { 31 Local<Module> referrer) {
32 if (g_count++ > 0) return MaybeLocal<Module>(); 32 if (g_count++ > 0) return MaybeLocal<Module>();
33 Local<String> source_text = v8_str(""); 33 Local<String> source_text = v8_str("");
34 ScriptOrigin origin(v8_str("module.js")); 34 ScriptOrigin origin =
35 ScriptOrigin::ModuleOrigin(v8_str("module.js"), CcTest::isolate());
35 ScriptCompiler::Source source(source_text, origin); 36 ScriptCompiler::Source source(source_text, origin);
36 return ScriptCompiler::CompileModule(CcTest::isolate(), &source) 37 return ScriptCompiler::CompileModule(CcTest::isolate(), &source)
37 .ToLocalChecked(); 38 .ToLocalChecked();
38 } 39 }
39 40
40 TEST(ModuleInstantiationFailures) { 41 TEST(ModuleInstantiationFailures) {
41 Isolate* isolate = CcTest::isolate(); 42 Isolate* isolate = CcTest::isolate();
42 HandleScope scope(isolate); 43 HandleScope scope(isolate);
43 LocalContext env; 44 LocalContext env;
44 45
45 Local<String> source_text = v8_str( 46 Local<String> source_text = v8_str(
46 "import './foo.js';" 47 "import './foo.js';"
47 "export {} from './bar.js';"); 48 "export {} from './bar.js';");
48 ScriptOrigin origin(v8_str("file.js")); 49 ScriptOrigin origin =
50 ScriptOrigin::ModuleOrigin(v8_str("file.js"), CcTest::isolate());
49 ScriptCompiler::Source source(source_text, origin); 51 ScriptCompiler::Source source(source_text, origin);
50 Local<Module> module = 52 Local<Module> module =
51 ScriptCompiler::CompileModule(isolate, &source).ToLocalChecked(); 53 ScriptCompiler::CompileModule(isolate, &source).ToLocalChecked();
52 CHECK_EQ(2, module->GetModuleRequestsLength()); 54 CHECK_EQ(2, module->GetModuleRequestsLength());
53 CHECK(v8_str("./foo.js")->StrictEquals(module->GetModuleRequest(0))); 55 CHECK(v8_str("./foo.js")->StrictEquals(module->GetModuleRequest(0)));
54 CHECK(v8_str("./bar.js")->StrictEquals(module->GetModuleRequest(1))); 56 CHECK(v8_str("./bar.js")->StrictEquals(module->GetModuleRequest(1)));
55 57
56 // Instantiation should fail. 58 // Instantiation should fail.
57 CHECK(!module->Instantiate(env.local(), AlwaysEmptyResolveCallback)); 59 CHECK(!module->Instantiate(env.local(), AlwaysEmptyResolveCallback));
58 60
59 // Start over again... 61 // Start over again...
60 module = ScriptCompiler::CompileModule(isolate, &source).ToLocalChecked(); 62 module = ScriptCompiler::CompileModule(isolate, &source).ToLocalChecked();
61 63
62 // Instantiation should fail if a sub-module fails to resolve. 64 // Instantiation should fail if a sub-module fails to resolve.
63 g_count = 0; 65 g_count = 0;
64 CHECK(!module->Instantiate(env.local(), FailOnSecondCallResolveCallback)); 66 CHECK(!module->Instantiate(env.local(), FailOnSecondCallResolveCallback));
65 } 67 }
66 68
67 static MaybeLocal<Module> CompileSpecifierAsModuleResolveCallback( 69 static MaybeLocal<Module> CompileSpecifierAsModuleResolveCallback(
68 Local<Context> context, Local<String> specifier, Local<Module> referrer) { 70 Local<Context> context, Local<String> specifier, Local<Module> referrer) {
69 ScriptOrigin origin(v8_str("module.js")); 71 ScriptOrigin origin =
72 ScriptOrigin::ModuleOrigin(v8_str("module.js"), CcTest::isolate());
70 ScriptCompiler::Source source(specifier, origin); 73 ScriptCompiler::Source source(specifier, origin);
71 return ScriptCompiler::CompileModule(CcTest::isolate(), &source) 74 return ScriptCompiler::CompileModule(CcTest::isolate(), &source)
72 .ToLocalChecked(); 75 .ToLocalChecked();
73 } 76 }
74 77
75 TEST(ModuleEvaluation) { 78 TEST(ModuleEvaluation) {
76 Isolate* isolate = CcTest::isolate(); 79 Isolate* isolate = CcTest::isolate();
77 HandleScope scope(isolate); 80 HandleScope scope(isolate);
78 LocalContext env; 81 LocalContext env;
79 82
80 Local<String> source_text = v8_str( 83 Local<String> source_text = v8_str(
81 "import 'Object.expando = 5';" 84 "import 'Object.expando = 5';"
82 "import 'Object.expando *= 2';"); 85 "import 'Object.expando *= 2';");
83 ScriptOrigin origin(v8_str("file.js")); 86 ScriptOrigin origin =
87 ScriptOrigin::ModuleOrigin(v8_str("file.js"), CcTest::isolate());
84 ScriptCompiler::Source source(source_text, origin); 88 ScriptCompiler::Source source(source_text, origin);
85 Local<Module> module = 89 Local<Module> module =
86 ScriptCompiler::CompileModule(isolate, &source).ToLocalChecked(); 90 ScriptCompiler::CompileModule(isolate, &source).ToLocalChecked();
87 CHECK(module->Instantiate(env.local(), 91 CHECK(module->Instantiate(env.local(),
88 CompileSpecifierAsModuleResolveCallback)); 92 CompileSpecifierAsModuleResolveCallback));
89 CHECK(!module->Evaluate(env.local()).IsEmpty()); 93 CHECK(!module->Evaluate(env.local()).IsEmpty());
90 ExpectInt32("Object.expando", 10); 94 ExpectInt32("Object.expando", 10);
91 } 95 }
92 96
93 } // anonymous namespace 97 } // anonymous namespace
OLDNEW
« include/v8.h ('K') | « test/cctest/test-compiler.cc ('k') | test/cctest/test-serialize.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698