44
55#include " vm/dart_api_impl.h"
66#include " bin/builtin.h"
7+ #include " bin/dartutils.h"
78#include " include/dart_api.h"
89#include " include/dart_native_api.h"
910#include " include/dart_tools_api.h"
1213#include " platform/utils.h"
1314#include " vm/class_finalizer.h"
1415#include " vm/compiler/jit/compiler.h"
16+ #include " vm/dart.h"
1517#include " vm/dart_api_state.h"
1618#include " vm/debugger_api_impl_test.h"
1719#include " vm/heap/verifier.h"
@@ -26,6 +28,35 @@ DECLARE_FLAG(bool, use_dart_frontend);
2628
2729#ifndef PRODUCT
2830
31+ UNIT_TEST_CASE (DartAPI_DartInitializeAfterCleanup) {
32+ Dart_InitializeParams params;
33+ memset (¶ms, 0 , sizeof (Dart_InitializeParams));
34+ params.version = DART_INITIALIZE_PARAMS_CURRENT_VERSION;
35+ params.vm_snapshot_data = TesterState::vm_snapshot_data;
36+ params.create = TesterState::create_callback;
37+ params.shutdown = TesterState::shutdown_callback;
38+ params.cleanup = TesterState::cleanup_callback;
39+ params.start_kernel_isolate = true ;
40+
41+ // Reinitialize and ensure we can execute Dart code.
42+ EXPECT (Dart_Initialize (¶ms) == NULL );
43+ {
44+ TestIsolateScope scope;
45+ const char * kScriptChars =
46+ " int testMain() {\n "
47+ " return 42;\n "
48+ " }\n " ;
49+ Dart_Handle lib = TestCase::LoadTestScript (kScriptChars , NULL );
50+ EXPECT_VALID (lib);
51+ Dart_Handle result = Dart_Invoke (lib, NewString (" testMain" ), 0 , NULL );
52+ EXPECT_VALID (result);
53+ int64_t value = 0 ;
54+ EXPECT_VALID (Dart_IntegerToInt64 (result, &value));
55+ EXPECT_EQ (42 , value);
56+ }
57+ EXPECT (Dart_Cleanup () == NULL );
58+ }
59+
2960TEST_CASE (DartAPI_ErrorHandleBasics) {
3061 const char * kScriptChars =
3162 " void testMain() {\n "
@@ -57,7 +88,6 @@ TEST_CASE(DartAPI_ErrorHandleBasics) {
5788 EXPECT (Dart_IsError (Dart_ErrorGetException (instance)));
5889 EXPECT (Dart_IsError (Dart_ErrorGetException (error)));
5990 EXPECT_VALID (Dart_ErrorGetException (exception));
60-
6191 EXPECT (Dart_IsError (Dart_ErrorGetStackTrace (instance)));
6292 EXPECT (Dart_IsError (Dart_ErrorGetStackTrace (error)));
6393 EXPECT_VALID (Dart_ErrorGetStackTrace (exception));
@@ -3539,6 +3569,7 @@ static Dart_Handle LoadScript(const char* url_str, const char* source) {
35393569 if (error != NULL ) {
35403570 return Dart_NewApiError (error);
35413571 }
3572+ TestCaseBase::AddToKernelBuffers (kernel_buffer);
35423573 return Dart_LoadScriptFromKernel (kernel_buffer, kernel_buffer_size);
35433574 }
35443575}
0 commit comments