Index: runtime/vm/dart_api_impl_test.cc |
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc |
index cfeae4470ead9dc737d788a6720023e7a4f59759..5b50d6eb731862bd9805aed1ac272462e7b3894f 100644 |
--- a/runtime/vm/dart_api_impl_test.cc |
+++ b/runtime/vm/dart_api_impl_test.cc |
@@ -24,6 +24,7 @@ namespace dart { |
DECLARE_FLAG(bool, verify_acquired_data); |
DECLARE_FLAG(bool, ignore_patch_signature_mismatch); |
DECLARE_FLAG(bool, support_externalizable_strings); |
+DECLARE_FLAG(bool, use_dart_frontend); |
#ifndef PRODUCT |
@@ -99,7 +100,7 @@ TEST_CASE(StackTraceInfo) { |
Dart_StringToCString(function_name, &cstr); |
EXPECT_STREQ("bar", cstr); |
Dart_StringToCString(script_url, &cstr); |
- EXPECT_STREQ("test-lib", cstr); |
+ EXPECT_SUBSTRING("test-lib", cstr); |
EXPECT_EQ(1, line_number); |
EXPECT_EQ(10, column_number); |
@@ -111,7 +112,7 @@ TEST_CASE(StackTraceInfo) { |
Dart_StringToCString(function_name, &cstr); |
EXPECT_STREQ("foo", cstr); |
Dart_StringToCString(script_url, &cstr); |
- EXPECT_STREQ("test-lib", cstr); |
+ EXPECT_SUBSTRING("test-lib", cstr); |
EXPECT_EQ(2, line_number); |
EXPECT_EQ(10, column_number); |
@@ -123,7 +124,7 @@ TEST_CASE(StackTraceInfo) { |
Dart_StringToCString(function_name, &cstr); |
EXPECT_STREQ("testMain", cstr); |
Dart_StringToCString(script_url, &cstr); |
- EXPECT_STREQ("test-lib", cstr); |
+ EXPECT_SUBSTRING("test-lib", cstr); |
EXPECT_EQ(3, line_number); |
EXPECT_EQ(15, column_number); |
@@ -172,7 +173,7 @@ TEST_CASE(DeepStackTraceInfo) { |
Dart_StringToCString(function_name, &cstr); |
EXPECT_STREQ("foo", cstr); |
Dart_StringToCString(script_url, &cstr); |
- EXPECT_STREQ("test-lib", cstr); |
+ EXPECT_SUBSTRING("test-lib", cstr); |
EXPECT_EQ(1, line_number); |
EXPECT_EQ(20, column_number); |
@@ -187,7 +188,7 @@ TEST_CASE(DeepStackTraceInfo) { |
Dart_StringToCString(function_name, &cstr); |
EXPECT_STREQ("foo", cstr); |
Dart_StringToCString(script_url, &cstr); |
- EXPECT_STREQ("test-lib", cstr); |
+ EXPECT_SUBSTRING("test-lib", cstr); |
EXPECT_EQ(1, line_number); |
EXPECT_EQ(40, column_number); |
} |
@@ -201,7 +202,7 @@ TEST_CASE(DeepStackTraceInfo) { |
Dart_StringToCString(function_name, &cstr); |
EXPECT_STREQ("testMain", cstr); |
Dart_StringToCString(script_url, &cstr); |
- EXPECT_STREQ("test-lib", cstr); |
+ EXPECT_SUBSTRING("test-lib", cstr); |
EXPECT_EQ(2, line_number); |
EXPECT_EQ(15, column_number); |
@@ -3380,6 +3381,26 @@ VM_UNIT_TEST_CASE(CurrentIsolateData) { |
Dart_ShutdownIsolate(); |
} |
+static Dart_Handle LoadScript(const char* url_str, const char* source) { |
+ Dart_Handle url = NewString(url_str); |
+ Dart_Handle result; |
+ Dart_Handle script; |
+ if (!FLAG_use_dart_frontend) { |
+ result = Dart_SetLibraryTagHandler(TestCase::library_handler); |
+ EXPECT_VALID(result); |
+ script = NewString(source); |
+ } else { |
+ void* kernel_pgm = NULL; |
+ char* error = |
+ TestCase::CompileTestScriptWithDFE(url_str, source, &kernel_pgm); |
+ if (error != NULL) { |
+ return Dart_NewApiError(error); |
+ } |
+ script = reinterpret_cast<Dart_Handle>(kernel_pgm); |
+ } |
+ return Dart_LoadScript(url, Dart_Null(), script, 0, 0); |
+} |
+ |
VM_UNIT_TEST_CASE(IsolateSetCheckedMode) { |
const char* kScriptChars = |
"int bad1() {\n" |
@@ -3411,12 +3432,9 @@ VM_UNIT_TEST_CASE(IsolateSetCheckedMode) { |
EXPECT(isolate != NULL); |
{ |
+ Dart_Handle result; |
Dart_EnterScope(); |
- Dart_Handle url = NewString(TestCase::url()); |
- Dart_Handle source = NewString(kScriptChars); |
- Dart_Handle result = Dart_SetLibraryTagHandler(TestCase::library_handler); |
- EXPECT_VALID(result); |
- Dart_Handle lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0); |
+ Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
EXPECT_VALID(lib); |
result = Dart_FinalizeLoading(false); |
EXPECT_VALID(result); |
@@ -5655,23 +5673,25 @@ TEST_CASE(LoadScript) { |
EXPECT(Dart_IsError(result)); |
EXPECT_STREQ("incoming error", Dart_GetError(result)); |
- result = Dart_LoadScript(url, Dart_Null(), Dart_Null(), 0, 0); |
- EXPECT(Dart_IsError(result)); |
- EXPECT_STREQ("Dart_LoadScript expects argument 'source' to be non-null.", |
- Dart_GetError(result)); |
+ if (!FLAG_use_dart_frontend) { |
+ result = Dart_LoadScript(url, Dart_Null(), Dart_Null(), 0, 0); |
+ EXPECT(Dart_IsError(result)); |
+ EXPECT_STREQ("Dart_LoadScript expects argument 'source' to be non-null.", |
+ Dart_GetError(result)); |
- result = Dart_LoadScript(url, Dart_Null(), Dart_True(), 0, 0); |
- EXPECT(Dart_IsError(result)); |
- EXPECT_STREQ( |
- "Dart_LoadScript expects argument 'source' to be of type String.", |
- Dart_GetError(result)); |
+ result = Dart_LoadScript(url, Dart_Null(), Dart_True(), 0, 0); |
+ EXPECT(Dart_IsError(result)); |
+ EXPECT_STREQ( |
+ "Dart_LoadScript expects argument 'source' to be of type String.", |
+ Dart_GetError(result)); |
- result = Dart_LoadScript(url, Dart_Null(), error, 0, 0); |
- EXPECT(Dart_IsError(result)); |
- EXPECT_STREQ("incoming error", Dart_GetError(result)); |
+ result = Dart_LoadScript(url, Dart_Null(), error, 0, 0); |
+ EXPECT(Dart_IsError(result)); |
+ EXPECT_STREQ("incoming error", Dart_GetError(result)); |
+ } |
// Load a script successfully. |
- result = Dart_LoadScript(url, Dart_Null(), source, 0, 0); |
+ result = TestCase::LoadTestScript(kScriptChars, NULL); |
EXPECT_VALID(result); |
Dart_FinalizeLoading(false); |
@@ -5685,10 +5705,8 @@ TEST_CASE(LoadScript) { |
// Further calls to LoadScript are errors. |
result = Dart_LoadScript(url, Dart_Null(), source, 0, 0); |
EXPECT(Dart_IsError(result)); |
- EXPECT_STREQ( |
- "Dart_LoadScript: " |
- "A script has already been loaded from 'test-lib'.", |
- Dart_GetError(result)); |
+ EXPECT_SUBSTRING("Dart_LoadScript: A script has already been loaded from", |
+ Dart_GetError(result)); |
} |
TEST_CASE(RootLibrary) { |
@@ -5703,9 +5721,7 @@ TEST_CASE(RootLibrary) { |
EXPECT(Dart_IsNull(root_lib)); |
// Load a script. |
- Dart_Handle url = NewString(TestCase::url()); |
- Dart_Handle source = NewString(kScriptChars); |
- EXPECT_VALID(Dart_LoadScript(url, Dart_Null(), source, 0, 0)); |
+ EXPECT_VALID(LoadScript(TestCase::url(), kScriptChars)); |
root_lib = Dart_RootLibrary(); |
Dart_Handle lib_name = Dart_LibraryName(root_lib); |
@@ -5784,13 +5800,13 @@ static Dart_Handle import_library_handler(Dart_LibraryTag tag, |
TEST_CASE(LoadScript_CompileError) { |
const char* kScriptChars = ")"; |
- Dart_Handle url = NewString(TestCase::url()); |
- Dart_Handle source = NewString(kScriptChars); |
Dart_Handle result = Dart_SetLibraryTagHandler(import_library_handler); |
EXPECT_VALID(result); |
- result = Dart_LoadScript(url, Dart_Null(), source, 0, 0); |
+ result = LoadScript(TestCase::url(), kScriptChars); |
EXPECT(Dart_IsError(result)); |
- EXPECT(strstr(Dart_GetError(result), "unexpected token ')'")); |
+ if (!FLAG_use_dart_frontend) { |
+ EXPECT(strstr(Dart_GetError(result), "unexpected token ')'")); |
+ } |
} |
TEST_CASE(LookupLibrary) { |
@@ -6726,11 +6742,7 @@ TEST_CASE(SetNativeResolver) { |
Dart_Handle result; |
// Load a test script. |
- Dart_Handle url = NewString(TestCase::url()); |
- Dart_Handle source = NewString(kScriptChars); |
- result = Dart_SetLibraryTagHandler(library_handler); |
- EXPECT_VALID(result); |
- Dart_Handle lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0); |
+ Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
EXPECT_VALID(lib); |
result = Dart_FinalizeLoading(false); |
EXPECT_VALID(result); |
@@ -7224,7 +7236,6 @@ static Dart_Isolate RunLoopTestCallback(const char* script_name, |
void* data, |
char** error) { |
const char* kScriptChars = |
- "import 'builtin';\n" |
"import 'dart:isolate';\n" |
"void main(shouldThrowException) {\n" |
" var rp = new RawReceivePort();\n" |
@@ -7246,13 +7257,9 @@ static Dart_Isolate RunLoopTestCallback(const char* script_name, |
return isolate; |
} |
Dart_EnterScope(); |
- Dart_Handle url = NewString(TestCase::url()); |
- Dart_Handle source = NewString(kScriptChars); |
- Dart_Handle result = Dart_SetLibraryTagHandler(TestCase::library_handler); |
- EXPECT_VALID(result); |
- Dart_Handle lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0); |
+ Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
EXPECT_VALID(lib); |
- result = Dart_FinalizeLoading(false); |
+ Dart_Handle result = Dart_FinalizeLoading(false); |
EXPECT_VALID(result); |
Dart_ExitScope(); |
Dart_ExitIsolate(); |
@@ -7626,11 +7633,7 @@ TEST_CASE(NativeFunctionClosure) { |
Dart_Handle result; |
// Load a test script. |
- Dart_Handle url = NewString(TestCase::url()); |
- Dart_Handle source = NewString(kScriptChars); |
- result = Dart_SetLibraryTagHandler(library_handler); |
- EXPECT_VALID(result); |
- Dart_Handle lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0); |
+ Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
EXPECT_VALID(lib); |
EXPECT(Dart_IsLibrary(lib)); |
result = Dart_SetNativeResolver(lib, &MyNativeClosureResolver, NULL); |
@@ -7770,11 +7773,7 @@ TEST_CASE(NativeStaticFunctionClosure) { |
Dart_Handle result; |
// Load a test script. |
- Dart_Handle url = NewString(TestCase::url()); |
- Dart_Handle source = NewString(kScriptChars); |
- result = Dart_SetLibraryTagHandler(library_handler); |
- EXPECT_VALID(result); |
- Dart_Handle lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0); |
+ Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
EXPECT_VALID(lib); |
EXPECT(Dart_IsLibrary(lib)); |
result = Dart_SetNativeResolver(lib, &MyStaticNativeClosureResolver, NULL); |